Summon CLI
目標
把當前請求完整交給一個已配置的外部 Agent CLI。外部 Agent 可以是 Claude Code、Grok CLI、Gemini CLI、Codex CLI 或以後加入的其它 Agent;API、模型、前台或後台協議、啟動參數和目標 Skill 都由本 Skill 內的配置決定,不寫死在行為說明中。
使用者明確呼叫 $summon-cli 時使用本 Skill。當前還配置了一條寫作自動路線:Codex 識別出使用者要創作短帖、文章、專案介紹或其它可發布文字時,讀取 writing 任務配置並委派;這條自動路線同時由本機 AGENTS.md 授權,其它任務不會因為本 Skill 存在而自動委派。
工作方式
首次使用或把本 Skill 複製到另一台機器後,先在本 Skill 目錄執行一次本機發現:
& '<本 Skill 目錄>\scripts\summon.ps1' setup
macOS、Linux 或 WSL 使用:
sh '<本 Skill 目錄>/scripts/summon.sh' setup
setup 只發現當前系統上的 Python、Agent CLI、Skill 和圖形終端,並把絕對路徑寫入本 Skill 內被 Git 忽略的 config/config.local.json;不會安裝軟體、移動金鑰或修改公共配置。隨後執行 show 和 doctor 檢查結果。
根據使用者點名的任務、profile 和 Skill 選擇配置;使用者沒有點名時,根據任務說明選擇已經配置的路線。一個任務可以不使用 Skill,也可以使用一個 Skill,不能在一次呼叫中向外部 Agent 傳遞多個 Skill。任務要求一個 Skill、但使用者和預設配置都沒有選定時,先詢問使用者本次使用哪個,不猜測,也不同時呼叫候選項。
Codex 聯網補充
任務配置的 codex_web 為 supplement 時,由當前 Codex 負責呼叫前的公開材料發現。先完整閱讀現有請求、使用者材料和本地物件,判斷完成本次任務是否還缺公開材料;已有內容足夠時直接交接,確有缺口時才聯網。實際採用網頁中的相關原文或必要上下文連同來源連結進入交接,保留其材料身份,不附加 Codex 提煉的中心句、推薦角度、敘事說明或預寫內容。
Codex 判斷現有內容或本次補充已經足夠時,公開材料發現到此結束;外部 Agent 不再重複搜尋,並按使用者本輪要求執行目標 Skill 的當前階段。使用者要求先交付大綱、確認後再寫正文時,本輪只執行大綱階段,不提前準備案例、鉤子、正文、檢查或修改。只有完成當前階段仍缺必要公開材料時,才把尚缺的具體材料交給外部 Agent 繼續尋找。聯網只用於補充材料,不逐項核查使用者內容,也不生成事實核查報告。
使用者明確禁止聯網或要求只使用現有材料時跳過聯網補充。其它任務只有在自己的配置明確啟用時才由 Codex 處理公開材料發現。
交給外部 Agent
交給外部 Agent 的是當前仍需要它執行的使用者原話和真實材料,不是整段除錯歷史。後來的使用者訊息修正了先前方向時,直接移開已經失效的要求、角度和助手產物;其餘使用者原話、來源正文、順序與來源身份保持不變。當前意思分佈在多條訊息中時,只選取仍然有效、且仍需要外部 Agent 執行的使用者原句,不由 Codex 改寫成簡報、總結、中心句或敘事框架。
呼叫輸入只包括:
- 當前仍需要外部 Agent 執行的使用者原話和來源材料;
- 本次真正採用的 Codex 聯網補充材料及連結;
- 必要的執行交接。
對於寫作或內容委派,材料位於當前 Codex 可存取的歷史任務、本地檔案或專案時,由當前 Codex 在呼叫前讀取實際需要的內容,並把採用的原文隨交接發送。「閱讀這段歷史」「開啟這些檔案」「檢查這個專案後取材」等已經由當前 Codex 完成的取材指令不再作為外部 Agent 的待辦重複傳遞;用實際材料替代這類指令不屬於改寫使用者的創作要求。不要讓外部 Agent 再去閱讀 Summon CLI 的 README、SKILL.md、配置說明、公共配置、測試或 Git 歷史,也不要把「自行探索專案後找材料」寫進交接。只有使用者本輪明確要求外部 Agent 審查或修改某個專案時,才允許它檢查該專案內與任務直接相關的檔案。
執行交接只說明公開材料發現由哪一層繼續處理,不宣告材料成文準備已經完成。它只供外部 Agent 決定是否繼續呼叫聯網工具,不進入目標 Skill 的工作材料、寫作準備結果或成品。Codex 的分析過程、失敗稿、除錯過程、內部路線判斷、維護說明、事實核查、提綱和預寫正文都留在當前任務。
將完整輸入透過標準輸入交給啟動器:
$input | & '<本 Skill 目錄>\scripts\summon.ps1' run --task writing --skill content-writing --cwd '<目前任務目錄>'
macOS、Linux 或 WSL 使用對應的 summon.sh。--cwd 是外部 Agent 實際開啟的專案目錄;不傳時使用呼叫 Summon CLI 的當前目錄,因此它不會固定指向某位開發者機器上的資料夾。
summon.py 會從本機配置解析唯一 profile,載入相應 API 環境,向外部 Agent 明確傳遞唯一目標 Skill 的名稱和 SKILL.md 絕對路徑,再使用該 CLI 為當前模式配置的協定啟動程序。它不解釋、摘要或改寫輸入。
預設執行模式是 visible。claude-code 執行器會在 Windows Terminal、macOS Terminal.app 或 Linux 已發現的圖形終端中啟動真正的 Claude Code 互動介面,不使用 -p,並以 Auto 權限模式開始;首輪完成時透過會話級 Stop Hook 把 Claude 的完整回答返回當前 Codex 任務,Claude 視窗繼續停在輸入框,可由使用者直接追問或親自關閉。使用者本輪要求的完整交付必須放在外部 Agent 的最後一條回覆中;使用者明確要求分階段確認時,只交付當前階段,不提前執行後續階段。如果外部 Agent 在完整結果後又補發了很短的完成摘要,Stop Hook 會從本輪會話記錄中恢復此前的完整結果。啟動前會沿用 Claude Code 現有的使用者設定,並把首次初始化與目前工作目錄信任狀態準備好,因此不會停在 style、安全說明或目錄確認頁。沒有圖形桌面的機器會明確報告可見模式不可用,不會擅自改成背景。配置中的任務或 profile 可以把 run_mode 設為 background,這時使用 -p 在背景執行並捕捉結果。顯式呼叫時還可以用 --run-mode 暫時覆蓋。解析順序是本次命令、任務配置、profile 配置、全域預設值。
顯式呼叫時可以用 --profile 繞過任務預設 profile,也可以用 --skill 覆蓋任務的預設 Skill。覆蓋只作用於本次呼叫,不修改長期配置。
外部 CLI 回傳成功結果後,完整交付該結果。呼叫失敗時回傳實際退出碼、標準輸出和錯誤輸出;不更換 Agent、API 或 Skill,也不由 Codex 生成替代結果。
資源
scripts/summon.py:跨平台核心程式,讀取配置、解析任務與唯一 Skill、載入 profile 環境並啟動外部 Agent CLI。scripts/summon.ps1、scripts/summon.sh:分別供 Windows 與 macOS/Linux/WSL 使用的便攜入口。config/config.json:可隨 Skill 遷移的公共執行協定、profile、任務與 Skill 名稱,不儲存本機絕對路徑。config/config.local.json:由setup生成的本機 CLI、Skill 和終端路徑;檔案位於本 Skill 內並由.gitignore排除。config/profiles/*.env:對應 profile 的 API 環境;檔案與其它配置一起放在本 Skill 內,並由.gitignore排除。references/configuration.md:說明配置和新增執行器、profile、任務、Skill 的方式。
輸出與完成
預設在獨立視窗顯示外部 Agent 的真實互動介面或即時執行過程,並將其完整正文或結果返回當前任務,不額外新增 Codex 版本。結果返回不等待使用者關閉視窗;原生互動視窗在首輪完成後繼續保留,供使用者檢視和追問。外部 Agent 按使用者請求產生檔案時,檔案屬於使用者明確指定的目標專案;可見模式用於首輪交接的暫存檔案在結果返回後立即清理,啟動器不另存提示詞、正文或執行日誌。Claude Code 自身仍按其正常機制儲存可復原的互動會話。
只有外部 Agent 真實回傳成功結果,才說明委派完成。配置可解析、可執行檔案存在和命令能夠啟動分別只證明相應層級;缺少 API 金鑰、目標 Skill 或相容的非互動協定時,準確說明缺少項並停止。