DEV Community

Cover image for 用自己的 Claude 訂閱,讓 Claude Code 擔任 osFoundry 的 worker
BBT for BBT 繁體中文

Posted on

用自己的 Claude 訂閱,讓 Claude Code 擔任 osFoundry 的 worker

完成這套設定後,osFoundry 裡的 Worker 角色就交給 Claude Code。當計畫中的某個步驟輪到 Worker,桌面 app 會在你的專案資料夾裡啟動 claude,登入的是你自己的 Claude 訂閱。Claude Code 用自己的工具編輯檔案,osFoundry 這邊的工具(例如搜尋你的筆記)則以 mcp__osfoundry__memory_search 的名稱呼叫。每一次這樣的呼叫,都會在 osFoundry 的聊天裡顯示成一行「Using …」。

誰負責什麼

Claude Code osFoundry 桌面 app
登入 你的 Claude 訂閱,/login 之後由 CLI 保存 完全不經手。會從子行程的環境中移除 ANTHROPIC_API_KEY 之類的變數,讓這次執行不會退回 API 計費
費用 從你的訂閱裡扣 這次執行記為費用 0
檔案 用自己的 Read、Edit、Bash,只在一個資料夾內(--add-dir) 決定是哪個資料夾:Local Folders 裡最新加入的那個
osFoundry 工具 以 mcp__osfoundry__<tool> 呼叫 只在這次執行期間透過 loopback port 提供,並逐一用白名單檢查每次呼叫
核准 在自己的資料夾內以 --permission-mode bypassPermissions 執行 經過 bridge 的每次呼叫,都會通過和其他模型工具呼叫相同的核准與政策關卡
輸出 最終文字 成為該角色的輸出。工具活動以進度行顯示

設定

1. 安裝 Claude Code,並登入一次

依照 Anthropic 文件的方式安裝 CLI。接著在終端機裡登入:

$ claude
> /login
Enter fullscreen mode Exit fullscreen mode

osFoundry 會在 PATH、~/.claude/local,以及 VS Code 擴充套件的 bundle(~/.vscode/extensions/anthropic.claude-code-*/resources/native-binary/claude)裡尋找執行檔。所以只透過 VS Code 擴充套件裝的 Claude Code 也找得到。

2. 在 External AI 中啟用

在桌面 app 裡點標題列的鑰匙圖示(API Keys (BYOK)),再打開 External AI(外部 AI)分頁。Claude Code 那一列應該長這樣:

Claude Code   Installed                                  [Enabled]
/Users/you/.claude/local/claude
Model id: cli:claude (chat) · cli:claude:agent (autonomous)
[Verify sign-in]  [Sign in]
Enter fullscreen mode Exit fullscreen mode

External AI 分頁中的 Claude Code 與 Codex

範例:External AI 分頁中的 Claude Code 與 Codex

點 Verify sign-in(驗證登入)。app 會透過 CLI 跑一次很小的 completion,然後顯示 ✓ Signed in 或 Needs sign-in。Sign in 會在終端機視窗裡開啟 Claude Code,並顯示提示「Type /login to sign in, then close this window.」

你可能會看到 API key in env 的標籤。這表示啟動 osFoundry 的環境裡設了 ANTHROPIC_API_KEY 之類的變數。app 在啟動 claude 之前會把它拿掉,所以這次執行仍然使用你的訂閱。這個標籤只是提醒。

3. 指定資料夾

Agent 模式在真實的目錄裡運作。到 Settings → Local Folders 加入你的專案。如果有好幾個,會使用最近加入的那個。從 Code 介面(Code surface)啟動的執行,則改用該次執行所登記的 repository。

4. 綁定角色

打開 Pipeline 分頁 → Pipeline Roles。在 Agents 底下選 Worker,再從 External AI (subscription) 群組選擇 cli:claude:agent。

這兩個 id 是兩種不同的模式:

  • cli:claude:agent 是自主模式。Claude Code 在你的資料夾裡有自己的工具,另外還能透過 bridge 使用 osFoundry 的工具。適合 Worker、Researcher、Document Agent 這類角色。
  • cli:claude 是聊天模式。CLI 會帶著 --disallowedTools '*' 執行,什麼都不能呼叫。適合 Titling 或 Compaction 這類純文字角色。如果把需要工具的角色綁到它,執行會失敗,並顯示訊息請你改用 cli:claude:agent。

你在 Agents 畫面自訂的 agent 也能使用它。它們的模型選單會在 CLI agents 底下列出,標籤是「autonomous — runs in your local folder」。

5. app 實際啟動的指令

每次執行時,osFoundry 會先啟動一個全新的 MCP bridge,再大致用下面的方式啟動 CLI。這些 flag 來自 src-tauri/src/providers/agent_cli.rs 裡的 build_claude_command:

claude -p "<conversation>" \
  --output-format stream-json --verbose --include-partial-messages \
  --permission-mode bypassPermissions \
  --add-dir /Users/you/work/site \
  --mcp-config '{"mcpServers":{"osfoundry":{"type":"http",
      "url":"http://127.0.0.1:<port>/mcp",
      "headers":{"Authorization":"Bearer <per-run token>"},
      "timeout":120000}}}' \
  --strict-mcp-config \
  --append-system-prompt "<role prompt>"
Enter fullscreen mode Exit fullscreen mode

有了 --strict-mcp-config,你自己設在全域或專案裡的 MCP 伺服器就不會混進這次執行。只會接上 osfoundry 這個伺服器。port 和 token 每次執行都是新的,行程結束時 listener 也會關閉。

實際執行一次

範例。筆記和 repository 都是示範內容。

你(Maestro 聊天,Worker = cli:claude:agent)
  幫我在筆記裡找 Q4 預算檢討是什麼時候,然後加到 TODO.md。

Claude Code 的工具呼叫
  mcp__osfoundry__memory_search  {"query": "Q4 預算檢討"}
    → 「Q4 預算檢討:週四 14:00。」
  Read   TODO.md
  Edit   TODO.md   (+ "- [ ] 準備 Q4 預算檢討(週四 14:00)要用的數字")

osFoundry 的進度行
  Using memory_search — {"query":"Q4 預算檢討"}
  Using Read — {"file_path":"TODO.md"}
  Using Edit — {"file_path":"TODO.md", …}

回答
  已在 TODO.md 加入「準備 Q4 預算檢討(週四 14:00)要用的數字」。
  時間取自你的筆記「Q4 預算檢討:週四 14:00。」
Enter fullscreen mode Exit fullscreen mode

mcp__osfoundry__ 這個前綴,是 Claude Code 為名叫 osfoundry 的伺服器的工具取名的方式。osFoundry 會在進度行裡把它拿掉,所以 memory_search 看起來和用 API 模型時一樣。

界線在哪裡

bridge 提供的是一份簡短、固定的清單。裡面有唯讀工具,例如 memory_search、web_search、extract_content、code_search、todo_list、transcribe 和 cloud_* 的讀取工具,再加上編排(spawn_fleet、graph_run、loop_run)、即時畫面與 Canvas 工具。read_file、write_file、execute_command 是刻意排除的。Claude Code 本來就有限定在資料夾內的同類工具,若再透過 MCP 給它第二個不受範圍限制的執行器,就會伸手到 --add-dir 之外。

白名單由 bridge 強制執行,而不是靠 CLI flag。以 bypassPermissions 模式執行時不會遵守 --allowedTools,所以 osFoundry 根本不傳。呼叫這次執行清單以外的任何工具,都會收到 JSON-RPC 錯誤:「tool '…' is not available to this agent」。

workspace 和 channel 在 bridge 啟動時就固定了。工具呼叫無法透過參數把自己導向別的 workspace。

寫入畫面或 Canvas 編輯器的操作(ui_agent_act、Canvas 的寫入工具)一律會先問你,和 API 模型時一樣。沒有人在看的執行,例如回應 channel 提及的 agent,會直接拒絕需要核准的工具,而不是去等一個不會出現的點擊。

你的檔案從不經過 osFoundry。Claude Code 直接讀取和編輯,流量則以你自己的登入送往 Anthropic,就跟在終端機裡用一樣。

下一步是把 cli:claude:agent 也綁到 Researcher 角色,和 Worker 並列,然後跑一個編排任務。Pipeline 角色頁面列出了所有可以交給它的角色,Local Folders 則說明工作資料夾是怎麼選出來的。

Top comments (0)