无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

看看 Claude Code 怎么做 Harness,這才是 Agent 工程化的真正難點

0
分享至

Claude Code 源代碼泄露的事情在 X 等平臺上引發了極大的關注。

不過,這次更值得關注的不是泄露本身,而是 Claude Code 非常典型的生產級 AI agent harness 設計,向外界完整地展示了一個成熟的 Autonomous Agent 產品應該長什么樣,從底層的工程實現到上層的產品決策邏輯,包含了各種細節。

結合 Substack 以及 Hacker News 上對于源代碼的分析,我們整理了 Claude Code 在 Agent 架構設計上值得開發者關注、學習的一些要點。

??關注 Founder Park,最及時最干貨的創業分享

超 22000 人的「AI 產品市集」社群!不錯過每一款有價值的 AI 應用。

邀請從業者、開發人員和創業者,飛書掃碼加群:

進群后,你有機會得到:

  • 最新、最值得關注的 AI 新品資訊;

  • 不定期贈送熱門新品的邀請碼、會員碼;

  • 最精準的 AI 產品曝光渠道

01真正的難點,在模型之外的 Harness

Claude Code 的架構核心,是一個「Harness」本地運行時的外殼,更多地是依靠 Harness 的工程化與可靠性。

根據公開鏡像倉庫 nirholas/claude-code,Claude Code 的 TypeScript 源代碼跨越了約 1,900 個文件,超過 512,000 行嚴格類型的 TypeScript,基于 Bun 運行時構建,用 React 和 Ink 驅動終端 UI。

在架構文檔里,描述的 Claude Code 系統相當龐大:一個大型 QueryEngine、集中式工具注冊表、數十個斜杠命令、持久化記憶、IDE 橋接、MCP 集成、遠程會話、插件、技能,以及支持后臺和并行工作的任務層。

更準確的比喻是,Claude Code 更像是一個用于軟件工作的操作系統,圍繞模型堆疊了權限管理、記憶層、后臺任務、IDE 橋接、MCP 管道和多代理編排。

Vikash Rungta 在他的逆向工程分析里把這個東西叫做 Harnes:一個本地運行時外殼,把 LLM(Brain)包裹在工具、記憶和編排邏輯(Body)之中,讓模型能在現實世界里行動。

要想理解 Claude Code,首先要理解 Agent 架構的三個代際演進:

  • 第一代是 Chatbot,無狀態問答;

  • 第二代是 Workflow,用 n8n、LangChain 這類工具把 LLM 嵌進代碼驅動的 DAG 流里,代碼決定模型下一步做什么;

  • 第三代是 Autonomous Agent,模型控制循環,運行時只是執行器。

Claude Code,就是屬于第三代的商業化產品。

Claude Code 的源碼也說明了,真正難的是 Harness,給任何支持工具調用的 LLM 提供文件系統訪問、shell、分層記憶和聲明式擴展能力。所有的這些,都要在一個由可組合權限約束的有界自主循環里運行。

02TAOR Loop 設計:Orchestrator 越笨,架構越穩定

Claude Code 的執行引擎是一個叫 TAOR 的循環:Think-Act-Observe-Repeat。這個設計本身不復雜,但背后的設計哲學,很值得關注。

它的 Orchestrator 本身被設計得極其「愚蠢」,只負責驅動循環、執行工具調用、感知結果。所有的推理、決策、何時停止,全部都交給模型。運行時不知道代碼是什么,不知道文件在哪,它只是跑循環,讓模型決定下一步。

總結來講:運行時越笨,架構越穩定。把智能下沉到模型,把確定性留給框架。

這和早期 LangChain 試圖在框架層做各種「聰明編排」的路線形成了鮮明對比。LangChain 更傾向于把編排邏輯寫進代碼,用復雜的 Orchestrator 控制 LLM 的每一步。Claude Code 的做法是,所有的推理、決策和停止判斷,統統下放給大模型本身。TAOR 循環的核心邏輯大約只有 50 行,但給了模型無限的操作空間。

同樣,在工具層遵循這個「笨」的哲學。Claude Code 沒有給模型配備 100 個專項工具,而是只提供四種能力原語:Read、Write、Execute、Connect。其中 Bash 是通用適配器,允許模型使用任何人類開發者會用的工具——git、npm、docker,全部通過 shell 組合完成。不要構建 100 個工具,給模型一個 shell,讓它自己組合。

隨著模型變得更強,腳手架應該變薄,而不是變厚。硬編碼的腳手架應該隨著模型能力提升而被主動刪除,架構隨時間推移越來越薄。如果你每次模型升級都要往框架里加更多腳手架,說明你在對抗模型,而不是利用模型。

03Context Window 是稀缺資源,不是越大越好

Context 不是越大越好,而是越干凈越好。這是 Claude Code 整個架構里貫穿始終的設計原則。

一般來說,Context Collapse 是 Agent 系統最普遍的失敗模式。隨著對話進行,上下文窗口被填滿,記憶退化,幻覺出現,Agent 開始在自己積累的噪音里迷失方向。但 Claude Code 把 Context Window 看成了一種需要主動管理的稀缺資源,圍繞 Context 構建了一套自動壓縮、子 Agent 隔離和詳盡的緩存經濟學防御體系。

第一層是 Auto-Compaction。當 Context 使用量達到約 50% 時自動觸發,用 LLM 摘要替換原始對話輪次,釋放空間的同時保留關鍵決策。這不是簡單地截斷歷史,而是用摘要壓縮,確保重要信息不丟失。這個機制對應的故障模式叫做 Context Collapse,解決方案是:Auto-compaction at ~50% + sub-agents with isolated context windows。

第二層是 Sub-Agent 隔離。把重型的探索、研究任務卸載給獨立的子 Agent。子 Agent 運行自己獨立的 TAOR 循環,有自己的 Context 預算,任務完成后只把摘要返回給主 Agent。這樣,無論子任務消耗了多少 token,主 Agent 的 Context 都不會被污染。

從代碼結構上看,這個機制的設計非常精細。子 Agent 運行時:有自己的 maxTurns 上限、有自己的 compaction 機制(獨立壓縮,不影響主對話)、有自己的 MEMORY.md。主 Agent 派出子 Agent 之后,只等一個 summary 回來,整個子任務的 token 消耗對主 Context 完全透明隔離。

第三層是 Prompt Cache 經濟學。promptCacheBreakDetection.ts 里追蹤了 14 個 cache-break 向量,也就是 14 種會讓 prompt 緩存失效的情況。代碼里還有一個函數叫 DANGEROUS_uncachedSystemPromptSection(),光是這個命名本身就是一種文檔:這里加東西要小心,會破壞緩存。代碼里還有多個 sticky latches,防止模式切換破壞 prompt 緩存的鎖定機制。

當你為每個 token 付費的時候,緩存失效不再是計算機科學笑話,更多的是一個財務問題。

此外,還有一個細節是:Session Continuity。在 Claude Code 里,會話不是一次性的。它們像 git branch 一樣運作,可以 checkpoint、rollback,或者把某個探索方向 fork 成一條新路徑。這意味著 Context 的管理不只是在單次會話內,而是跨會話的。

04記憶系統的核心是索引,不是存儲

Claude Code 的記憶系統設計,也非常有意思。

大多數人想象「Agent 記憶」就像一個更大的背包,裝得越多越好。但 Claude Code 的記憶系統,更像是一個帶有嚴格圖書管理員的檔案系統。

核心設計原則是:記憶是索引,不是存儲。能從代碼庫中重新推導出的信息,絕不應該被存儲。

從架構上看,Claude Code 的記憶系統分為六層,在每次會話啟動時按層加載:

  • Managed Policy(組織級策略):企業或團隊層面的統一規范

  • Project CLAUDE.md(項目配置):當前項目的特定指令和上下文

  • User Preferences(用戶偏好):個人層面的習慣和偏好設置

  • Auto-Memory(自動學習模式):Agent 從歷史交互中學到的用戶模式

  • Session(會話上下文):當前會話的臨時信息

  • Sub-Agent Memory(子 Agent 記憶):各子 Agent 獨立維護的專項記憶

其中,Auto-Memory 循環甚至允許 Agent 學習用戶的工作模式,并把這些模式寫入 MEMORY.md 供未來會話使用。用戶不需要反復解釋相同的事情,Agent 會從之前的交互里學習并記住重要信息。

同時,Claude Code 的子 Agent 記憶機制也值得一提。在自定義子 Agent 的配置里,可以設置 memory: user,Agent 會把學到的模式寫入 ~/.claude/agent-memory/ /MEMORY.md,下次調用時自動加載前 200 行。這意味著每個子 Agent 都可以有自己獨立的、持續積累的專項記憶。

更關鍵的是,這個系統具有主動自我編輯能力。它不僅會記錄,還會重寫、去重、甚至剪除互相矛盾的信息,過期且無效的記憶在這里被視為「負債」而非資產。

Claude Code 的記憶系統設計,也側面反映了:在產品層面,記憶不只是一個 Feature,它是決定用戶是否繼續使用的核心留存機制,因為用戶真正期待的是一個「會學習」的 Agent。

05權限系統的設計更像是 UX 設計,信任是可組合的

權限與安全問題,是 Agent 走向企業級應用的前提。

Claude Code 的權限系統被設計為一個五檔的信任光譜:

  • plan:只讀,完全不能寫入,信任級別最低

  • default:編輯和 shell 操作前都需要詢問,標準模式

  • acceptEdits:自動批準文件編輯,shell 操作仍需詢問,中等信任

  • dontAsk:自動批準白名單內的所有操作,高信任

  • bypassPermissions:跳過所有檢查,僅限托管組織使用,最高信任

每個工具調用都經過靜態分析層的多層白名單校驗。bashSecurity.ts 里有 23 項編號的安全檢查,包括:

  • 18 個被阻止的 Zsh 內置命令

  • 防御 Zsh equals expansion:=curl 這種寫法可以繞過對 curl 的權限檢查

  • unicode 零寬字符注入

  • IFS null-byte 注入

  • 一個在 HackerOne 審查期間發現的惡意 token 繞過

這種可組合的信任光譜,讓 Claude Code 能夠適應完全不同的使用場景:從什么都要確認的高度受限企業環境,到全速運行的個人開發環境。權限設計更像是 UX 設計。對于 Agent 產品來說,這也是從 Demo 進入企業生產環境的「門檻」。

同時,Claude Code 還有一個更底層、巧妙的機制是,API 請求在 JS 層之下做了身份驗證。

在 system.ts 文件里,每個 API 請求都包含一個 cch=00000 占位符。在請求真正離開進程之前,Bun 的原生 HTTP 棧(用 Zig 編寫,運行在 JavaScript 運行時之下)會把這五個零替換成一個計算出的哈希值。服務端會驗證這個哈希,確認請求來自真實的 Claude Code 二進制文件,而不是第三方偽造的客戶端。

之所以用等長的占位符,是為了讓替換不改變 Content-Length 頭部,也不需要緩沖區重新分配,這是一個很細節的工程考量。整個計算過程發生在 JS 層之下,對運行在 JS 里的任何代碼都完全不可見。本質上是在 HTTP 傳輸層實現的 API 調用 DRM。

這也是 Anthropic 此前向 OpenCode 發律師函背后的技術基礎。Anthropic 不只是要求第三方工具不要使用他們的 API,二進制文件本身通過加密證明了自己的身份。OpenCode 社區在收到法律通知后不得不訴諸會話拼接技巧和認證插件,原因就在這里。

06多 Agent 編排,從子 Agent 到 Agent Teams

Claude Code 的多 Agent 編排采用了橫向擴展的方式,分為兩層。

第一層:Sub-Agent

子 Agent 以獨立進程方式運行,有自己的 TAOR 循環、自己的 Context 預算、自己的 maxTurns 上限、自己的記憶。任務完成后,只把摘要返回給主 Agent,主 Agent 的 Context 完全不受影響。

Claude Code 內置了三種預設子 Agent,各有分工:

  • Explore:用 Haiku 模型(速度快、成本低),只有只讀工具(Read、Grep、Glob),專門做文件發現和代碼庫探索

  • Plan:繼承主 Agent 的模型,只有只讀工具,專門做代碼庫研究和規劃前的信息收集

  • General-purpose:繼承主 Agent 的模型,配備全套工具,處理復雜的多步驟操作

自定義子 Agent 通過 .md 文件加 YAML frontmatter 定義,可以指定模型(sonnet/opus/haiku/inherit)、權限模式、maxTurns、可用工具白名單、禁用工具黑名單,甚至可以預加載特定的 Skills。存儲位置有三種:~/.claude/agents/(用戶級)、.claude/agents/(項目級),或通過 --agents CLI 參數指定。

子 Agent 還支持前臺和后臺兩種執行模式。前臺模式會阻塞主對話,權限詢問和問題會透傳給用戶;后臺模式則在用戶繼續工作的同時并發運行,權限在啟動前就預先收集,如果遇到沒有預批準的權限請求,工具調用直接失敗,Agent 繼續運行。按 Ctrl+B 可以把正在運行的前臺 Agent 切換到后臺。

第二層:Agent Teams

這不再是主 Agent 派遣子 Agent 的主從關系,而是完全獨立的 Claude Code 實例通過共享文件系統協調任務。兩者區別:


Agent Teams 的協調機制包括:Shared Task List(所有 Agent 可見任務狀態,完成當前任務后自主認領下一個未分配任務)、單播 Message(發給特定 Teammate)、Broadcast(發給所有 Teammate,注意成本隨團隊規模線性增長)、以及 Automatic Idle Notification(Teammate 完成任務停止時自動通知 Lead)。

同時,還有兩個專門針對團隊的質量門控 Hook:TeammateIdle(Teammate 即將進入空閑時觸發,返回 exit code 2 可以發送反饋讓它繼續工作)和 TaskCompleted(任務即將被標記完成時觸發,返回 exit code 2 可以阻止完成并要求修復)。

但 Agent Teams 目前還是實驗性功能,需要通過 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 環境變量或 settings.json 啟用。

07還沒發布的 KAIROS,一個 Always-On Agent

在這次泄露中,有一個 Claude Code 還未發布的功能 KAIROS,可以在后臺持續運行的 Agent。

根據 main.tsx 里的代碼路徑,KAIROS 是一個功能門控的未發布模式,包含以下特征:

  • /dream 技能,用于夜間記憶蒸餾(nightly memory distillation)

  • 每日 append-only 日志

  • GitHub Webhook 訂閱

  • 后臺 Daemon 工作進程

  • 每 5 分鐘的 Cron 調度刷新

把這些特征拼在一起,是一個完全不同的產品形態:常駐后臺、持續學習、主動感知代碼庫變化的 Autonomous Agent。不是你召喚它,它來幫你,而是它一直在,主動為你工作。

現有的 Claude Code 是一個召喚式 Agent:你打開終端,它來幫你,你關掉終端,它就停了。但 KAIROS 描繪的是下一代形態:Agent 在后臺持續運行,通過 GitHub Webhook 感知代碼庫的變化,每天晚上做記憶蒸餾,把當天的工作模式和項目狀態壓縮進長期記憶,第二天一早已經「預熱」好了。

雖然不知道 Anthropic 內部對 KAIROS 的開發已經進展到了什么程度。但 KAIROS 的泄露說明了,Claude Code 的產品野心已經遠超「LLM + 命令行包裝」,朝著「終端操作系統級 Agent」方向前進。

08一些彩蛋:Anti-Distillation 機制、Undercover Mode

此外,在這次泄露的源碼里,還有一些非常有爭議性的工程決策,被扒了出來。

Anti-Distillation 機制

claude.ts 第 301-313 行有一個叫 ANTI_DISTILLATION_CC 的標志。當它開啟時,Claude Code 會在 API 請求里攜帶 anti_distillation: ['fake_tools'] 參數,服務端會向系統提示中靜默注入虛假的工具定義。

邏輯很直接:如果有人在錄制 Claude Code 的 API 流量來訓練競品模型,這些假工具會污染訓練數據。這個機制通過 GrowthBook 功能標志 tengu_anti_distill_fake_tool_injection 控制,只對第一方 CLI 會話激活。

還有第二層機制在 betas.ts 第 279-298 行:服務端 connector-text 摘要。啟用時,API 會緩沖 Assistant 在工具調用之間的推理文本,對其摘要后返回帶加密簽名的版本。在后續輪次里,原始文本可以從簽名恢復。錄制 API 流量的人只能拿到摘要,拿不到完整的推理鏈。

Undercover Mode

undercover.ts 文件大約 90 行,實現了一個單向門:當 Claude Code 在非 Anthropic 內部倉庫里使用時,它會指示模型永遠不提及內部代號(比如 Capybara、Tengu)、內部 Slack 頻道、倉庫名稱,甚至不提及 Claude Code 這個名字本身。

第 15 行有一條注釋寫得很清楚:

There is NO force-OFF. This guards against model codename leaks.

你可以用 CLAUDE_CODE_UNDERCOVER=1 強制開啟,但沒有辦法強制關閉。在外部構建里,整個函數會被死代碼消除為平凡返回。這是一個單向門。

這意味著,Anthropic 員工在開源項目里用 Claude Code 生成的 commit 和 PR,將沒有任何 AI 參與的標記。如何在商業防御需求與 AI 透明度倫理之間做權衡,也是值得思考的事情。


轉載原創文章請添加微信:founderparker

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
研究發現:體質好的人,一般有6個特征,能占4個,就很不錯

研究發現:體質好的人,一般有6個特征,能占4個,就很不錯

蜉蝣說
2026-05-19 21:58:27
生育率問題的罪魁禍首不是房價和經濟 而是你手里拿著的這樣東西

生育率問題的罪魁禍首不是房價和經濟 而是你手里拿著的這樣東西

新浪財經
2026-05-17 14:34:05
錢大媽5年閉店約500家,創始人馮冀生套現超億元跑路

錢大媽5年閉店約500家,創始人馮冀生套現超億元跑路

財觀潮頭
2026-05-19 20:42:43
安切洛蒂談世界杯:五個奪冠熱門,但沒有球隊是完美的

安切洛蒂談世界杯:五個奪冠熱門,但沒有球隊是完美的

懂球帝
2026-05-19 09:42:40
華為、騰訊、比亞迪等都等不及了!深圳高校2026集體“瘋狂上新”

華為、騰訊、比亞迪等都等不及了!深圳高校2026集體“瘋狂上新”

深圳夢
2026-05-19 21:53:00
姚晨緊急刪文僅一天,不對勁一幕出現,為什么圈內好友無一人發聲

姚晨緊急刪文僅一天,不對勁一幕出現,為什么圈內好友無一人發聲

青杉依舊啊啊
2026-05-20 02:54:17
挺進決賽!U17國足2比0完勝澳大利亞,將與日本隊爭冠!

挺進決賽!U17國足2比0完勝澳大利亞,將與日本隊爭冠!

足球報
2026-05-20 04:30:59
深挖 | 夏奇拉:世界杯的“音樂符號”,人生比情歌更跌宕

深挖 | 夏奇拉:世界杯的“音樂符號”,人生比情歌更跌宕

新民周刊
2026-05-19 09:10:27
上海交大樊同學要哭死:學校終止她的儲才計劃,取消她校內轉專業

上海交大樊同學要哭死:學校終止她的儲才計劃,取消她校內轉專業

江山揮筆
2026-05-19 22:16:34
深夜,“烏龍指”再現?!

深夜,“烏龍指”再現?!

證券時報
2026-05-19 23:34:05
好消息!上調至3.67%

好消息!上調至3.67%

幸福肥東
2026-05-19 14:56:40
誰干的?以色列核彈頭儲存基地發生強烈爆炸!特朗普推遲打擊伊朗

誰干的?以色列核彈頭儲存基地發生強烈爆炸!特朗普推遲打擊伊朗

影孖看世界
2026-05-19 21:47:46
全民拒接陌生來電,我們正在經歷,一場無聲的信任危機

全民拒接陌生來電,我們正在經歷,一場無聲的信任危機

天天熱點見聞
2026-05-07 06:55:16
A股:中央兩部門剛剛發聲,釋放一信號,明日將迎來更大的變盤

A股:中央兩部門剛剛發聲,釋放一信號,明日將迎來更大的變盤

云鵬敘事
2026-05-20 00:00:05
還是忘不了!特朗普又曬檢閱解放軍儀仗隊照片,還展示自己軍裝照

還是忘不了!特朗普又曬檢閱解放軍儀仗隊照片,還展示自己軍裝照

阿龍聊軍事
2026-05-17 21:08:17
熱議海港勝成都:史上最弱海港做到了;成都主場失利是警醒

熱議海港勝成都:史上最弱海港做到了;成都主場失利是警醒

懂球帝
2026-05-19 23:11:08
蔡卓妍:全部都是假的

蔡卓妍:全部都是假的

最江陰
2026-05-19 15:05:17
郎朗真有福!吉娜戛納紅毯開叉到大腿根,生圖曝光網友吵翻天!

郎朗真有福!吉娜戛納紅毯開叉到大腿根,生圖曝光網友吵翻天!

動物奇奇怪怪
2026-05-20 04:29:55
果然!是華人而不是中國人統治了芯片,真夠扎心的…

果然!是華人而不是中國人統治了芯片,真夠扎心的…

慧翔百科
2026-05-19 08:34:16
怒增5700億!大行消費貸“殺瘋了”

怒增5700億!大行消費貸“殺瘋了”

柒財經
2026-05-19 23:19:43
2026-05-20 05:19:00
FounderPark incentive-icons
FounderPark
關注AI創業,專注和創業者聊真問題
1217文章數 162關注度
往期回顧 全部

科技要聞

馬斯克敗訴,法院判他起訴OpenAI太晚了

頭條要聞

媒體:特朗普為何拋涉臺"四不"說法 魯比奧解釋清楚了

頭條要聞

媒體:特朗普為何拋涉臺"四不"說法 魯比奧解釋清楚了

體育要聞

文班亞馬:沒拿到MVP,就證明自己是MVP

娛樂要聞

姚晨刪博難平眾怒,為什么她還能蹦噠

財經要聞

潔麗雅硬剛豪門內斗傳言

汽車要聞

煥新極氪009上市41.38萬起 齊家版讓MPV回歸家庭

態度原創

旅游
教育
家居
數碼
公開課

旅游要聞

中國旅游日主會場廣州啟動!廣東全力建設旅游友好型城市

教育要聞

中考數學,-0的倒數是多少?

家居要聞

觀山隱秀 心靈沉淀

數碼要聞

谷歌推出Gemini 3.5系列模型

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關懷版