與代理聊天
本指南說明如何在空間中與代理協作。
建立空間
標題為「建立空間」的章節- 在側邊欄前往 空間
- 按一下「空間」標題旁的 + 按鈕
- 輸入名稱——這是必填欄位。空的名稱會被拒絕; 對話方塊會保持開啟
- 視需要從工作區加入代理
- 如果工作區有任何儲存庫,會出現儲存庫選擇器。它一開始會選取所有 儲存庫;請縮小範圍(包括取消選取單一儲存庫),只留下這個空間 應該為其佈建工作樹的儲存庫
- 確認
Control Center 會開啟該空間,並在背景為每個選取的儲存庫開始佈建一個 寫入時複製工作樹。
送出第一則訊息
標題為「送出第一則訊息」的章節在輸入區輸入訊息並按 Enter。代理便會派送,並開始串流它的回應。
如果空間仍在佈建中,你的訊息會被暫留而不是遺失—— 輸入區會留住它,並在工作樹就緒後自動送出。
當代理工作時,你會看到它的回合串流進來:推理區段、工具呼叫 (檔案讀取、寫入、shell 命令)以及回答文字,全都位於同一則代理回合 訊息中。
引導執行中的代理
標題為「引導執行中的代理」的章節當代理正在工作時,一般的對話文字不會排入新的回合。 它會變成輸入區上方那一列中的排隊引導卡片,並在下一個回合邊界 注入正在進行的執行。不會出現快顯通知——那張卡片本身就是回饋。
有三件事會改變這種行為:
- 含有 @提及 的訊息一律以訊息送出,絕不作為引導
- 以斜線指令開頭的訊息一律以該指令處理
- 帶有附件的訊息一律以訊息送出——引導佇列只接受文字
- 如果每個進行中的執行都已結束,這段文字就會直接通過,並以一般訊息 送出
核准遭封鎖的動作
標題為「核准遭封鎖的動作」的章節當代理觸及護欄把關的動作時——例如具破壞性的命令、需要特殊權限的
工具——伺服器會封鎖該次執行,並向每個已連線的用戶端發佈一則核准
請求。如果你開著那個對話,該請求會在對話中、輸入區上方出現,
形式與 ask_user 所用的編號選項卡片相同(拒絕、核准,以及可選的
核准 8 小時)。沒有略過這種選項:遭封鎖的代理正在等待一個決定。
如果你人在應用程式中的其他地方,殼層中一個一律置頂的面板仍會列出 正在等待的項目,因此你不必費心尋找那個空間就能解除代理的封鎖。 一旦該空間的對話出現在畫面上,覆蓋層就會立刻隱藏該請求,因此你永遠 不會對同一個提示回答兩次。
沒有逾時:遭封鎖的代理會一直等到有人做出決定。同一則請求也會出現在 收件匣需要注意的項目列上,以及手機用戶端上。
回答代理的問題
標題為「回答代理的問題」的章節當代理需要一個偏好設定、一項缺少的需求,或面對真正的分歧時,必須
呼叫 ask_user。把問題寫成聊天訊息會結束該回合,你得重新提示一次。
這個工具會在對話中呈現一張編號卡片——選項、可選的自由文字,或兩者
兼具——而該次執行會等待你的回答。
點選單一選項即可送出(游標停留時,尾端的數字會變成箭頭)。
多選與輸入的答案則使用 繼續(⌘↵ / Ctrl↵)。略過會告訴代理
挑一個合理的預設值,並且不要再問。
它與上方的核准卡片是兩套不同的機制:核准問的是「我可以做這件事嗎?」, 問題問的是「你指的是其中哪一個?」。在內建執行環境上,每一種模式都能 提問,包括唯讀模式(它不會變更任何東西),而且它刻意不被包在核准提示 中——在沒有連接核准者的情況下,在對話方塊前面再擋一個對話方塊,只會 以失效即拒絕收場。沒有對話可以呈現的執行,就單純不會取得這個工具。
停止代理
標題為「停止代理」的章節當有執行正在進行時,輸入區的送出按鈕會變成停止按鈕。清空輸入區並 按下它——這會停止該對話中正在執行的每一個代理。
空間標頭中沒有停止控制項,也沒有對應的鍵盤快捷鍵。當有多個執行正在 進行,而你只想停止其中一個時,請開啟該次執行的活動分頁——它的標頭 帶有僅限該次執行的暫停/恢復與停止(停止會要求你確認)。 可觀測性 → 即時會列出工作區中每個正在執行的代理,並提供相同的 控制項。
已停止的執行會標示為已停止。送出新的訊息即可再次派送。
使用斜線指令
標題為「使用斜線指令」的章節在輸入區輸入 / 即可看到指令清單。以下是會改變對話行為的幾個:
| 指令 | 作用 |
|---|---|
/plan |
將空間切換為計畫模式。單獨的 /plan 只會進入該模式;/plan <request> 會進入該模式,並把其餘內容當作你的訊息送出 |
/goal <text> |
記錄此對話的工作目標 |
/loop <text> |
反覆迭代一項任務,直到完成 |
/compact |
將較舊的歷史摺疊成一份錨定的摘要,並在壓縮後的情境上繼續 |
/todo … |
檢視並編輯此對話持久化的待辦清單 |
技能會以自己的 skill: 命名空間出現在同一份清單中,因此永遠不會與上述
指令衝突——名為 plan 或 compact 的技能仍然可以觸及:
| 指令 | 執行內容 |
|---|---|
/skill:<name> |
安裝在工作區中的技能,或附加至該代理的技能 |
/skill:<repo>:<name> |
此空間中已簽出的其中一個儲存庫所隨附的技能 |
儲存庫技能會標上它來自哪個儲存庫的徽章,因為光看名稱無法得知它編碼的是
哪個服務的慣例,而且兩個儲存庫可能各自都隨附一個 testing。你不必輸入
前綴就能找到:直接輸入技能名稱也會比對到有命名空間的項目。
代理只會帶著它目前工作所在儲存庫的技能——請參見 儲存庫範圍技能。輸入區 則不採這種範圍劃分:只要你指名,就能叫用任何儲存庫的技能。
/compact 與 /todo 會被用戶端攔截,且永不持久化為訊息——逐字稿中若有
一行 /compact,會把下一次壓縮的切點往回推一個回合。/plan 會翻轉空間
儲存的模式,而不是以文字形式傳送。因此這三者都不是「你送給代理的訊息」;
別預期會在歷史中看到它們。
先要求一份計畫
標題為「先要求一份計畫」的章節在進行複雜的變更之前,請用 /plan、輸入區工具列上的模式下拉式選單,
或 Shift+Tab 將空間切換為計畫模式。接著代理會以唯讀方式研究,並交付
一份具型別的計畫,由你在任何工作開始前核准。請參見
使用計畫模式。
不必專屬空間也能觸及代理
標題為「不必專屬空間也能觸及代理」的章節你不需要為每個代理各開一個空間。在任何空間中:
@alice can you look at the failing tests in src/auth_test.dart?被提及的代理會被加入該空間,並帶著該空間的情境派送。名稱如何比對請參見 @提及代理。
相關指南
標題為「相關指南」的章節- 使用空間
- @提及代理
- 使用計畫模式
- 設定 Slack 整合,讓你能從 Slack 做到同樣的事