Claude Code 是一個常駐終端機程式:整個代理迴圈(編排器)、工具執行、情境組裝、權限把關與擴充機制全部跑在使用者自己的機器上;唯一的雲端依賴,是每一回合送到 Anthropic 模型 API 的「推論」。
來源:xuanyuancode.com《Claude Code 源码学习》教學,共 8 大主題、20+ 章,分主題平行擷取後彙整。
main.tsx 組裝者啟動時平行預熱、載入設定/政策/環境、認證與功能旗標、收集指令與工具、組裝情境、初始化 MCP/LSP/Skills/外掛,再進入 REPL。
QueryEngine.ts 大腦會話級任務編排器,每段對話一個實例;常駐有狀態(訊息、用量、檔案狀態)。跑「決策→權限→執行→回流」主迴圈直到任務完成。
tools.ts 能力閘統一工具註冊與過濾:filterToolsByDenyRules() 在模型看到工具前先篩掉——被隱藏的工具模型根本無法呼叫(能力暴露層的安全)。
幾乎所有方塊都在「使用者本機」內;只有模型推論那一條線連到雲端。
9 個層級,每一層的「執行位置」標記:本機 雲端 兩者皆可
注意第 4 步是「唯一」離開本機的動作。
哲學是「可控的自動化」而非完全自治。① 權限模式(default/acceptEdits/plan/bypassPermissions)② ToolPermissionContext 的 allow/deny/ask 規則 ③ 在 tools.ts 直接把某些工具對模型隱藏(比執行期攔截更強)④ 情境式自動拒絕 ⑤ 危險規則剝除。
Plan Mode 是系統級核可節點:ExitPlanModeV2Tool(shouldDefer)會強制「Exit plan mode?」人工核可,requiresUserInteraction() 對一般使用者回 true、對 teammate 回 false。
Skills 由 loadSkillsDir.ts 從平台/政策層 → 使用者層 → 專案層掃描。Admin 只要把治理過的 SKILL.md(用 allowedTools / model / context / hooks 限縮爆炸半徑)放到平台層,每位使用者開機即自動獲得,同時仍可自加專案 skill。
再加上 settings/政策與開機時的 MDM 讀取,就有了「組織級權限預設 + 功能旗標」的受管裝置通道——不需要信任任何遠端控制平面。
把這套客戶端編排器模式套到「賣 Spark + 管理 skill」的產品上,意思是:每位 user 裝一個 codex 式 client、skill 同步到各自裝置、編排在裝置端跑,模型推論再呼叫 Spark。它的架構長處(本機編排、能力暴露層安全、分層 skill 目錄)依然成立。
但對你的首要目標(最快上手、最少維運)這不是最佳解:要逐機佈署 client + 把 skill 同步到每台裝置(MDM),且因為模型本來就在 Spark,「資料落地/離線」的好處被抵消,反而讓 skill IP 散落到裝置。它真正佔優的是「裝置端分擔算力、在地 UX」。完整對照見 ③ 決策報告——本案建議改採選項 B:skill 集中在 Spark(見 報告 ②)。下方仍列出此客戶端架構本身的優勢與限制。