46afea83c2
管道本來就是好的(install-harness 功能完整、冪等),**過時的是內容**:
harness skill(4066B)grep「意圖」「>>」= 0 命中,只講世界觀/別寫 Python
⇒ 新裝的封測者拿不到步驟 1 的核心教材(`>>` 意圖語法)。
■ 單一真相源:harness skill 改為建置期由 registry 複製
build-harness-skill.mjs=head + registry/skills/write_intent_workflow.md 正文 + tail。
選「建置期複製」的理由:npm files 只收 harness/,registry 不進套件;
symlink 在 npm pack 與 Windows 不可靠。產物 commit 進 repo(npm 裝的是產物、不跑 build)。
head/tail 是 harness 專屬(CLI 語境入口/acr 指令表/暴露同意/誠實鐵律),
install-harness 的 copyTree 跳過 .head/.tail,不鋪進使用者專案。
■ 其餘三件逐份對照現世代事實後更新(過時的直接刪,不留死代碼)
- CLAUDE.block.md:補 >> 意圖語法、not_found 兩條路、零件 vs recipe 分型、
腹語術紅線、金鑰只拿名字
- commands/arcrun.md:步驟改成「先寫意圖 → 丟去查 → 再寫 YAML」,補 acr search/validate
- hooks/arcrun-guard.sh:**正路提示改為指向 arcrun-mindset Skill +意圖語法**
(呼應「hook 沒提 skill 反而把 AI 導向 repo 文件」的教訓);
新增 code 節點腹語術提醒,settings.fragment 補 Write|Edit|MultiEdit matcher
■ 世代閘(防再度脫節)
check-harness-generation.mjs 檢查四件交付物的現世代指紋,缺指紋 exit 1,
掛進 npm run build(prepublishOnly 因此也擋)。
反向驗證:把 skill/CLAUDE.block 換回上一代 → 兩者都被擋下並逐條點名缺哪個指紋。
■ 驗收(考生 haiku/受測物=環境)
乾淨臨時目錄 acr install-harness → 四件鋪好;重跑冪等(全檔 md5 不變、
CLAUDE.md 66 行不變、hooks 條目 2 不變、arcrun 區塊仍 1 個)。
haiku 只讀該目錄的 CLAUDE.md+SKILL.md(明令禁讀 ~/.claude、禁上網;
兩份教材 md5 與大小均不同,可證非考本機那支)答十題
→ grade-step1.sh **10 / 10 通過**(判分器同時反向驗證仍會抓
ON_TRUE/ON_FAILURE/第一節點非 input)。
npm test 18/18、tsc 綠。
SDD:workflow-discovery/tasks.md 3.11
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
68 lines
3.4 KiB
Plaintext
68 lines
3.4 KiB
Plaintext
|
||
---
|
||
|
||
## 9. 資源去哪取(不要自己重造 Arcrun 已有的)
|
||
|
||
| 你想知道 | 跑這個 |
|
||
|---|---|
|
||
| 有哪些零件可用 | `acr parts` |
|
||
| 某零件的設定範本 | `acr parts scaffold <name>` |
|
||
| 有哪些 recipe | `acr recipe list`/`acr recipe search <關鍵字>` |
|
||
| 支援哪些服務的認證 | `acr auth-recipe list` |
|
||
| 某服務認證要哪些 credential + 範例 | `acr auth-recipe scaffold <service>` |
|
||
| **一次掃全部**(零件/recipe/auth-recipe/workflow) | `acr search <關鍵字>` |
|
||
| 已部署的 workflow | `acr list` |
|
||
| 某次執行為什麼失敗 | `acr logs <workflow>` |
|
||
| 工作流語法、指令 | `acr --help` |
|
||
|
||
**先查再動手**——Arcrun 多半已經有你要的零件/recipe/認證,不要自刻。
|
||
|
||
## 10. 做出來以後:驗證 → 部署
|
||
|
||
```bash
|
||
acr validate <workflow>.yaml # 先驗,別直接部署
|
||
acr push <workflow>.yaml # 部署(暴露動作,見 §12)
|
||
acr run <workflow> # 觸發一次,看實際結果
|
||
acr logs <workflow> # 看執行紀錄/失敗原因
|
||
```
|
||
|
||
需要 credential(API key/token)時:`acr auth-recipe scaffold <service>` 看要哪些,
|
||
明確告訴使用者去哪取得、怎麼 `acr creds push`。
|
||
🔑 **金鑰只拿名字**:workflow/recipe 裡只寫 `{{credential.<名字>}}`,
|
||
**真身絕不寫進定義檔**(執行前才由系統回填)。
|
||
|
||
## 11. Arcrun 是你(AI)用的工具,不是工具回頭呼叫 AI
|
||
|
||
需要智慧判斷/自然語言轉換時,**你自己做**,再呼叫工作流執行確定性的下一步。
|
||
**不要在工作流中間放零件回頭呼叫 LLM**——Arcrun 的大腦就是操盤的你。
|
||
(唯一例外:`ask_llm` 這種「內容生成本身就是流程的一步」,見範本 B。)
|
||
|
||
## 12. 把東西開放給別人用 = 要使用者明示同意
|
||
|
||
`acr push`(部署 workflow)與 `acr recipe push`(投稿 recipe)會讓資料/能力**可被外部呼叫**:
|
||
- 停下來,明確告訴使用者「這會讓 X 可被外部呼叫」,要他同意。**不替他決定公開。**
|
||
- 非互動環境(你直跑)遇到 → 停,把完整指令印給使用者自己貼上跑,絕不自己塞 confirm 假裝同意。
|
||
- Arcrun 可提供保護(要求呼叫者帶 key/限流)——提醒使用者。
|
||
|
||
## 13. Arcrun 不替你做授權判斷
|
||
|
||
API 打不打得通由發 key 的服務決定。401/403 是對方服務在行使授權,**不是 Arcrun 的 bug、不是你做錯**。
|
||
不要在 Arcrun 裡建「允許/禁止某 endpoint」的二次授權清單。
|
||
|
||
## 14. 誠實(最重要)
|
||
|
||
- **不假綠**:沒打通就誠實說。缺 credential 打不到 2xx → 標「未驗收:缺 X」,不 mock 充綠燈。
|
||
- **不假裝防偽/不代替人類確認**有風險的動作(暴露資料)。
|
||
- **完成 = 客觀證據**(HTTP 2xx + trace),不是口頭「做好了」。
|
||
|
||
---
|
||
|
||
## 動手前的自檢清單
|
||
|
||
1. 我把意圖寫成 `>>` 串了嗎?(還是直接跳去寫 YAML/寫程式)
|
||
2. 我查過 `acr search` / `acr parts` / `acr recipe list` 了嗎?
|
||
3. 查詢回 `not_found` 時,我走的是 recipe/零件 PR 兩條路,**還是偷偷改寫成 `code`**?(後者=腹語術)
|
||
4. 我是不是讓工作流回頭呼叫 AI 做判斷?(是 → 改成我自己做)
|
||
5. 這動作會把資料開放給別人嗎?(會 → 要使用者明示同意)
|
||
6. 我有沒有假裝(假綠/假防偽/代替人類確認)?(有 → 停,誠實標明)
|