网易首页 > 网易号 > 正文 申请入驻

Claude Code大泄露:别光Clone了,当今最顶Harness开源了

0
分享至


作者 | 董道力
邮箱 | dongdaoli@pingwest.com

3 月 31 日,Anthropic 大概没想到,会以这种方式送给开发者社区一份礼物。

安全研究员 Chaofan Shou 发现,Claude Code 的 npm 包里藏着一个.map 文件——sourcemap,这是给开发者调试用的,按理早该从生产环境剔除。没剔除就意味着:任何人都可以从这个文件里还原出 Claude Code 完整的源码。

1906 个文件,512000 行代码,40 多个工具,85 个斜杠命令。几小时内,代码被镜像到 GitHub,获得了数千个 Star 和 Fork。

更讽刺的地方在于,代码里有一个叫"Undercover Mode"的子系统,专门用来防止 Anthropic 内部代号出现在 git commit 里,避免信息泄露。他们精心设计了防泄露机制,然后把整个源码打包进了 npm。

但这篇文章想聊的不是这个失误,而是这份代码里真正值钱的东西:一个生产级 agent harness 长什么样


1

Claude Code 质量有多高?

Agent harness 对于整个行业都是在探索的新东西。Anthropic 过去一年反复讲一个观点:模型本身只是引擎,harness 才是整辆车。他们提出了 context engineering、minimal viable tool sets、sub-agent isolation 等一系列设计原则。

现在源码摊开了,终于可以看看:他们会不会遵循自己写的技术文档。

答案是,不仅遵循了,还藏了个焚决。

下文对于 harness 的评价描述,主要基于 Anthropic 的技术文档。

1

存储层:上下文工程和记忆

context 是要钱的

上下文越长,模型越容易迷失,这个问题业内叫 context rot。上下文不是越多越好,每多塞一个 token,所有其他 token 分到的注意力就少一点,重要信息被稀释。

Claude Code 的做法是给每一块内容设硬上限,强制控制哪些东西能进窗口、进多少。

Skill 列表最多占整个窗口的 1%,每条描述不超过 250 字符:

// verbose whenToUse strings waste turn-1 cache_creation tokens// without improving match rate.export const MAX_LISTING_DESC_CHARS = 250

为什么这么限?因为 Skill 列表的作用是让模型知道"有这个工具",不是让模型读懂怎么用它。发现工具靠的是关键词匹配,描述写 500 字和写 50 字匹配率没有差别,多出来的全是浪费。

System prompt 被切成两半。前半部分是所有用户共用的指令,内容固定,可以缓存,下次调用直接复用。后半部分是这个用户、这个会话特有的内容,每次动态生成。这样每次 API 调用只需要处理变化的那一半,省掉了大量重复计算。

大的工具调用结果不放上下文,直接写到磁盘,给模型一个文件路径。比如执行了一条命令返回了几千行日志,把这几千行塞进上下文会挤掉其他有用的信息,换成文件引用就只占一行。

生产系统的本质是处理失败

模型接近上下文窗口极限时,会倾向于草草收尾,Anthropic 管这叫"context anxiety"。就像一个人知道自己快没时间了,会开始跳步骤、走捷径。解法是彻底清空窗口,把当前进展整理成结构化的交接材料,下一个窗口从交接材料开始,而不是从一个快撑满的上下文开始。

Claude Code 把这个做成了三级压缩:先试轻量摘要,不够再自动压缩,还不够等到 API 报错了再强制压缩。一级解决不了才走下一级。

三级之上还有熔断器:

// BQ 2026-03-10: 1,279 sessions had 50+ consecutive failures (up to 3,272)// in a single session, wasting ~250K API calls/day globally.const MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3

有人在 BigQuery 里跑数据,发现自动压缩连续失败的会话每天浪费了约 25 万次 API 调用。压缩失败的原因通常是上下文已经坏掉了,继续压根没有意义。于是加了个规则:连续失败 3 次就停,不再尝试。

demo 只需要跑通。生产系统还要知道失败的时候怎么止损。

记忆不是把所有东西都存起来

跨 context window 的 agent,每次新开一个窗口,之前发生的事情全忘了。Anthropic 把这比作轮班工程师,每班的人来了都不知道上一班干了什么,只能从头摸索。

Claude Code 用后台子 agent 定期把对话里的关键信息提出来存好,下次需要的时候再注入进来。但不是什么都存,也不是什么都注入。记忆筛选用 Sonnet 来做,判断哪些记忆和当前任务相关。

有一个细节:刚用过的工具,它的参考文档不会被推进来:

async function selectRelevantMemories(  query: string,  memories: MemoryHeader[],  recentTools: readonly string[],  // 过滤掉刚用过的工具文档): Promise

模型刚用过这个工具,上下文里已经有使用记录了,这时候再把文档推进来只是重复信息,占位置没有额外价值。

1

网络层:工具接入

工具的边界就是 agent 的能力边界

工具太多,模型不知道该用哪个,跟没有工具一样。这是 agent 设计里公认的坑,工具选择本身会消耗模型的推理能力,选项越多越容易选错。

Claude Code 有 50 多个工具,解法是大多数工具初始时根本不出现在上下文里,模型主动搜索才拿到完整定义:

export function isDeferredTool(tool: Tool): boolean {  if (tool.alwaysLoad === true) return false  if (tool.isMcp === true) return true          // MCP工具默认延迟加载  if (tool.name === TOOL_SEARCH_TOOL_NAME) return false  // ToolSearch自己永远不延迟}

ToolSearch 永远完整加载,因为模型要靠它找别的工具。如果 ToolSearch 也延迟加载,模型就找不到任何东西了。

每个工具还带着一套属性:能不能并行执行、会不会修改文件系统、结果超过多大写磁盘、用户打断时是停掉还是继续跑完。

这些属性不是给人看的文档,是调度引擎决定怎么执行这个工具的依据。

权限弹窗可以被提前消除

工具调用要过五关才能执行:输入校验、权限逻辑、规则匹配、hook 拦截、分类器或用户确认。每一关都可能叫停,但也都需要时间。

其中最慢的是等用户点确认。为了消除这个等待,分类器在弹窗还没弹出来的时候就已经开始跑了:

/** * Start a speculative bash allow classifier check early, so it runs in * parallel with pre-tool hooks, deny/ask classifiers, and permission dialog setup. */export function startSpeculativeClassifierCheck(  command: string,  ...): boolean {  const promise = classifyBashCommand(command, ...)  promise.catch(() => {})  // 防止未处理的rejection  speculativeChecks.set(command, promise)  return true}

如果分类器判断"这个命令大概率没问题",弹窗直接跳过。用户感知不到等待,因为判断在弹窗准备期间已经做完了。

1

容器层:Sub agent设计

sub-agent 不是套娃,是上下文隔离

sub-agent 的价值是用完即弃:花几万 token 去做一个子任务,做完只把结论交给主 agent,中间过程全扔掉。主 agent 的上下文里只有结论,不是整个过程。

有四种执行模式:同步(主 agent 等子 agent 跑完)、异步后台(子 agent 在后台跑,完成了通知用户)、Worktree 文件系统隔离(子 agent 在一个独立的 git 副本里改代码,不影响主目录,改完了再合并)、跨机器隔离(完全在另一台机器上跑)。风险越高,隔离越彻底。

sub-agent 用的工具是过滤过的,不能递归调用自己,防止无限套娃。

}

子 agent 自己建的连接,退出时自己关。复用父 agent 已有的连接,不能关,因为父 agent 还在用。

1

新加了一层Hook系统

hook 系统让 harness 变成了平台

Claude Code 开放了 27 个事件节点,在 agent 运行的任何关键时刻,用户都可以插进来做点什么:

export const HOOK_EVENTS = [  'PreToolUse', 'PostToolUse', 'PostToolUseFailure',  'SessionStart', 'SessionEnd',  'SubagentStart', 'SubagentStop',  'PreCompact', 'PostCompact',  'PermissionRequest', 'PermissionDenied',  'WorktreeCreate', 'WorktreeRemove',  // ... 还有14个] as const

插进来能干什么?不只是拦截,还能改。工具执行前可以把入参改掉,比如 agent 要写一个文件,hook 把路径悄悄改到沙箱目录,agent 不知道,照常执行,但文件落在了安全的地方。

有两种写法。一种是跑脚本,退出码 0 就放行,退出码 2 就拦截,逻辑自己写。另一种是让 Haiku 来判断,给它描述和标准,让模型决定要不要放行,等 30 秒。

这个设计的结果是:安全策略、审计日志、企业合规要求,全都能从外面接进来,不用改 Claude Code 本身。不同公司有不同的安全规定,以前只能 fork 代码自己改,现在写几个 hook 就行了。harness 从一个固定的产品,变成了可以按需定制的底座。

1

以上七个点,是从源码里挑出来最容易说清楚的部分。

更多同样有意思的东西还埋在里面:压缩后消息的精确重建顺序、工具并发分区的状态竞争处理、Bash 命令里针对 Zsh 和 PowerShell 各自不同的安全绕过逻辑、sub-agent 的 MCP 服务器生命周期管理……每一处细节背后都有一个真实踩过的坑。

想搞清楚一个生产级 harness 到底是怎么运转的,直接去读代码。

512000 行代码在解决一个问题:怎么让一个会犯错的语言模型,稳定地干完一件需要很多步骤的工程任务。

这个问题比"哪个模型更聪明"更难回答,也更值钱。

行业过去两年把 agent 失败归因于模型能力不足。但 Claude Code 认为:模型早就够用了,缺的是那层认真造出来的 harness。context 配额、压缩熔断、工具延迟加载、sub-agent 隔离、hook 平台……这些东西不是 Anthropic 的独家秘方,是任何一个想把 agent 做稳的团队迟早要解决的问题。

Anthropic 先给了个方案,然后意外地把答案公开了,而这可能是这次意外泄露里最值得研究的地方。


点个爱心,再走 吧

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

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.

相关推荐
热点推荐
限速25码却卖15999!九号天价电动车被疯抢,到底谁交“智商税”

限速25码却卖15999!九号天价电动车被疯抢,到底谁交“智商税”

电动车的那些事儿
2026-09-04 07:58:58
越南“分裂危机”!离中国太近,每年15万人“跑路”?

越南“分裂危机”!离中国太近,每年15万人“跑路”?

李云飞Afey
2026-08-31 17:55:27
性生活也有最佳时间吗?什么时候发生、每次多久才最好?

性生活也有最佳时间吗?什么时候发生、每次多久才最好?

医学原创故事会
2026-07-08 21:50:22
能在巴萨当太子爷,却在曼联踢轮换都费劲,多面手被父亲耽误了

能在巴萨当太子爷,却在曼联踢轮换都费劲,多面手被父亲耽误了

足篮大世界
2026-09-04 23:46:40
事业编制也开始搞全员竞聘上岗了

事业编制也开始搞全员竞聘上岗了

职场资深秘书
2026-09-04 18:51:05
“头睡的这么扁,长大要哭死!”小学女生跳舞像红皇后,家长被骂惨

“头睡的这么扁,长大要哭死!”小学女生跳舞像红皇后,家长被骂惨

林林先生
2026-08-18 08:35:32
牡丹花下死?汪峰将森林北踢出局,这次终于彻底印证葛荟婕的评价

牡丹花下死?汪峰将森林北踢出局,这次终于彻底印证葛荟婕的评价

历史的烟火
2026-08-14 15:48:04
女人有以下三种表现,八成是情场老手,别盲目追求

女人有以下三种表现,八成是情场老手,别盲目追求

叶飞飞情感屋
2026-09-04 16:56:47
A股:今晚2.5亿股民,要兴奋到睡不着觉了,你知道为什么吗?

A股:今晚2.5亿股民,要兴奋到睡不着觉了,你知道为什么吗?

夜深爱杂谈
2026-09-04 20:52:04
中央网信办、国家发展改革委、工业和信息化部、生态环境部、住房城乡建设部、农业农村部、商务部,联合印发重要实施方案

中央网信办、国家发展改革委、工业和信息化部、生态环境部、住房城乡建设部、农业农村部、商务部,联合印发重要实施方案

农民日报
2026-09-04 20:17:47
一旦中美开战,中国不会孤立无援,至少有“5大强国”伸手,是谁

一旦中美开战,中国不会孤立无援,至少有“5大强国”伸手,是谁

梦想的现实
2026-08-30 16:08:34
因尺度引发争议,这三部成人美剧建议收藏

因尺度引发争议,这三部成人美剧建议收藏

来看美剧
2026-09-04 20:44:56
2026下半年,厚积薄发的4个星座,熬过沉淀期迎来翻盘

2026下半年,厚积薄发的4个星座,熬过沉淀期迎来翻盘

别人都叫我阿螫
2026-09-04 12:48:13
亚运中国看点|游泳:优势比上届“缩水”,奖牌榜第一仍是目标

亚运中国看点|游泳:优势比上届“缩水”,奖牌榜第一仍是目标

北青网-北京青年报
2026-09-04 20:37:10
孙宇晨紧急报案,新瓜炸上热搜!

孙宇晨紧急报案,新瓜炸上热搜!

互联网品牌官
2026-09-03 14:30:40
中华民族正在登顶,为何仍有人崇洋媚外?文化何时才能自信?

中华民族正在登顶,为何仍有人崇洋媚外?文化何时才能自信?

贱议你读史
2026-09-04 13:24:05
英超冬窗3.5亿英镑花完,这周末却看不到这些人

英超冬窗3.5亿英镑花完,这周末却看不到这些人

日常碎碎念啊
2026-09-05 00:03:43
中国羽协大地震!64岁李永波早已安然落地:离开国羽9年 现状曝光

中国羽协大地震!64岁李永波早已安然落地:离开国羽9年 现状曝光

阿废冷眼观察所
2026-09-04 10:24:25
史上最贵苹果手机来袭:业内称iPhone Ultra就是炫富工具

史上最贵苹果手机来袭:业内称iPhone Ultra就是炫富工具

快科技
2026-09-03 07:25:03
30岁重启生涯,国王低价刮奖,西蒙斯只剩最后一搏

30岁重启生涯,国王低价刮奖,西蒙斯只剩最后一搏

Haviven聊球
2026-09-05 00:32:20
2026-09-05 01:56:49
硅星人 incentive-icons
硅星人
硅(Si)是创造未来的基础,欢迎来到这个星球。
3380文章数 10529关注度
往期回顾 全部

科技要闻

OpenAI深夜王炸!GPT-6 Astra来了

头条要闻

莆田凌晨山体滑坡掩埋房屋 居民:外婆和舅舅失联

头条要闻

莆田凌晨山体滑坡掩埋房屋 居民:外婆和舅舅失联

体育要闻

小卡来去10首轮,快船7年彩礼一场空

娱乐要闻

古天乐公司欠债1.49亿

财经要闻

姚洋:刺激消费要守住两个“大西瓜”

汽车要闻

搭载天枢领航Ultra 长安启源Q06预售14.79万元起

态度原创

房产
本地
艺术
教育
公开课

房产要闻

TOP10房企卖了350亿!海南楼市,最新榜单出炉!

本地新闻

扒完小作文,富豪们私藏的度假胜地有多绝

艺术要闻

吴柳、郑柳、林风柳,各有各的“柳”氓!

教育要闻

小学下发通知,家长会要求穿白上衣、黑裤或过膝长裙,不得穿吊带等随意服饰,学校回应

公开课

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

无障碍浏览 进入关怀版