diff --git a/references/behaviors.md b/references/behaviors.md new file mode 100644 index 0000000..09f122e --- /dev/null +++ b/references/behaviors.md @@ -0,0 +1,13 @@ +# jsc-ask 技能行為清單 + +本頁記錄 jsc-ask 每支技能的行為基準,供技能驗證比對。技能異動時,在同一個 PR 內一起更新這一頁。 + +## ask + +| 項目 | 內容 | +| --- | --- | +| 觸發時機 | 任何 jsc 技能需要使用者做決定時叫用。答案已經寫在 `QUESTION_{HASH}` 且意圖相符時不叫用,直接採用舊答案。答案查得到程式碼、設定檔或環境變數時不叫用,自己去查。 | +| 關鍵步驟 | 確認目前工作的 `{owner}/{repo}`、執行 `jsc-gitea/tools/hash-id {owner}/{repo}` 取得 8 碼 `HASH`、每個工作階段解析一次 `QUESTION` wiki 存取庫、讀入 `QUESTION_CONTENTS` 與 `QUESTION_{HASH}` 並留成階段副本、把這一輪每一題標成「照紀錄回答」或「要問」、以決策樹選單一次問一個決策點且每個選項標明影響範圍、依答案決定下一題直到沒有疑慮、交一個 sub agent 先寫 `QUESTION_{HASH}` 再寫 `QUESTION_CONTENTS`、寫入後同步更新階段副本、把答案交回叫用的技能 | +| 外部呼叫 | `jsc-gitea/tools/hash-id`、`jsc-gitea:wiki`(`wiki-repo`、`wiki-get`、寫入)、AskUserQuestion 或等效選單、一個負責兩次 wiki 寫入的 sub agent;範本 `templates/question-record.md`、`templates/question-contents.md` | +| 完成條件 | 這一輪每一題都有答案,來源是紀錄或使用者;答案交回叫用的技能;有存取庫名稱時,sub agent 回報兩頁都寫成功,主代理接受那一次回報。沒有存取庫名稱時,問完直接交回答案,不寫任何頁。`hash-id` 找不到 SHA-1 工具、wiki 讀取非 exit 4 的失敗、重試後仍寫不進去,這三種情況停止執行並回報,其中寫入失敗仍把答案交回並註明沒有記錄。 | +| 可驗證跡象 | wiki `QUESTION_{HASH}` 頁尾多一節,開頭是使用者意圖,底下每題一張選項與影響範圍的表,附答案與時間;wiki `QUESTION_CONTENTS` 該存取庫那一列的「最後更新」變成這次執行的時間戳,沒有該列就新增一列。沒有 `{owner}/{repo}` 時無寫入跡象,只有回報內容。 |