漏出 51 万行也不慌:Claw Code 清洁室重写如何把 Agent Harness 搬进 Rust

漏出 51 万行也不慌:Claw Code 清洁室重写如何把 Agent Harness 搬进 Rust

漏出 51 万行也不慌:Claw Code 清洁室重写如何把 Agent Harness 搬进 Rust

写作说明:微信原文触发环境验证码,无法完整抓取。本文依据源题意(Claude Code 源码经 npm source map 曝光、社区清洁室重写并登上 GitHub 热榜)以及公开技术资料(ultraworkers/claw-code README / PARITY / Rust workspace、行业复盘文章)独立改写,侧重 Harness 工程拆解与可复现实践,不提供任何侵权源码镜像指引。

2026 年 3 月底,Anthropic 的 @anthropic-ai/claude-code@2.1.88 在 npm 发布包里误带了一个约 59.8MB 的 source map。调试映射不仅能还原压缩代码,还直接指向可下载的完整 TypeScript 树——社区统计约 1900 个文件、51.2 万行。数小时内镜像与 fork 四处开花;与此同时,韩国开发者 Sigrid Jin(instructkr)连夜启动 清洁室重写(clean-room rewrite),先用 Python 搭出可运行的 harness 骨架,再迅速把主运行时迁到 Rust。仓库一度以「两小时破 5 万 Star」冲上 GitHub 速度纪录,后续演进为今天的 ultraworkers/claw-code(二进制名 claw)。

热闹背后真正值得工程师带走的,不是「又一个爆款仓库」,而是三件事:发布流水线如何把 source map 当成一等公民门禁、清洁室重写到底合法地在学什么、以及 一套工业级 Agent Harness 的 Rust 拆分长什么样。

漏出 51 万行也不慌:Claw Code 清洁室重写如何把 Agent Harness 搬进 Rust

清洁室重写与 Harness 分层封面示意


一、事故根因:不是「黑客攻破」,是构建默认值

Source map 本是调试利器:把 minify 后的行号映射回原始 TS/JS。它 绝不该 出现在面向公众的 npm tarball 里。这次事故的典型路径可以概括为:

1. 打包器默认开启 map(Claude Code 侧常用 Bun;类似场景下 esbuild / webpack 也会默认吐 .map)。

2. package.json 的 files 字段或 .npmignore 未显式排除 *.map。

3. 更糟时,map 里还嵌了指向对象存储的完整源码包 URL,等于把「还原钥匙」和「仓库门禁」一起公开。

给所有发 npm 包的团队一句硬规矩:在 CI 里对最终 tarball 做门禁扫描——发现 .map / sourceMappingURL 直接失败。私有调试文件走内网或签名临时链,不要挂公共 CDN。

同类疏漏并非首次:社区此前已有过通过 map / SDK 附带产物窥见 Claude Code 未公开能力的记录。对年化营收百亿美元量级的公司来说,这暴露的是 发布工程与供应链门禁,而不是「模型被破解」。官方事后声明也强调:无客户数据与凭据泄露,属于人为打包错误;但互联网没有删除键——架构模式、工具清单、权限边界一旦被读懂,就会进入公共讨论域。


二、清洁室重写:学架构,不搬源码

「清洁室」不是营销词,而是知识产权语境下的工程纪律:

做法 含义 风险
直接 fork / 镜像泄露树 保留原 TS 文本 高:版权与 DMCA
抄函数改变量名 实质衍生作品 高
清洁室:只读公开行为与接口规格,独立实现 观察输入输出、工具契约、会话语义后重写 相对可控,仍需律师视角评估

Claw Code 路线大致是:

1. Python 审计/参考工作区(src/):快速落地 models / commands / tools / query_engine 等端口元数据,用于对照与审计,不是今天的主运行时。

2. Rust 规范实现(rust/):claw CLI 成为唯一推荐路径;配合 PARITY.md 与 mock Anthropic 服务做行为对齐。

3. 编排层:作者公开提到借助 oh-my-codex(OmX)一类工作流(如并行审查的 team 模式、持续验证的 ralph 循环)加速重写——这本身就是 Harness Engineering 的活教材:用 Agent 编排去建造 Agent 运行时。

从泄露到清洁室再到 Rust 工作区的演进

项目 README 如今也把姿态写得很清楚:仓库更像「被 harness 自动维护的展品」,严肃生产工作建议去 LazyCodex / Gajae-Code 等姊妹项目;但作为 学习 Agent 运行时如何切分 crate、如何做权限与 MCP、如何跑 mock 对等测试,它的文档密度极高。


三、Rust Workspace:把「智能体外壳」拆成可测零件

当前公开的 crate 地图(以 upstream README 为准)大致如下:

rust/crates/
├── api/ # 提供商客户端、SSE 流式、鉴权与请求预检
├── runtime/ # 会话、配置合并、权限、MCP、系统提示拼装、主循环
├── tools/ # Bash/读写/Grep/Web/Agent/Skill 等工具规格与执行
├── commands/ # 斜杠命令注册与帮助渲染
├── plugins/ # 插件安装/启用/钩子
├── telemetry/ # 会话追踪与用量类型
├── mock-anthropic-service/ # 确定性本地 Anthropic 兼容 mock
├── compat-harness/ # 兼容/对等辅助
└── rusty-claude-cli/ # 二进制入口 claw:REPL / prompt / doctor …

这张图比「再写一个 ChatCLI」值钱的地方在于边界:

  • api 只管协议与流,不管文件系统副作用。
  • tools 暴露约 40 个工具规格(含 bash、文件、检索、Web、Todo、Notebook、Skill、Agent、MCP/LSP 相关表面等)。
  • runtime 把权限策略、会话持久化、MCP 生命周期、配置层级(user → project → local)捏在一起。
  • mock-anthropic-service + mock parity harness 让「流式文本、读写往返、权限拒绝、插件工具路径、自动压缩、token/cost」可以在无真实 Key 的干净环境里回归。

Mermaid Diagram

PARITY.md 还按「九车道」记录了 Bash 校验、沙箱探测、文件边界、TaskRegistry、Team/Cron、MCP、LSP、权限强制等合并证据——读它比读营销文更能回答:一个工业级 coding agent,缺口通常卡在哪一层。


四、上手:从源码构建到 claw doctor

注意:crates.io 上的 claw-code 名字是过期 stub,不要 cargo install claw-code。官方路径是 clone 后在 rust/ 构建,或按文档安装正确的上游二进制名。

git clone https://github.com/ultraworkers/claw-code
cd claw-code/rust
cargo build --workspace

# 使用 Anthropic API Key(订阅登录不是该路径的认证方式)
export ANTHROPIC_API_KEY="sk-your-api-key-here"

./target/debug/claw doctor
./target/debug/claw prompt "say hello"
./target/debug/claw # 进入交互会话

常用能力清单(摘自公开功能表):

能力 状态要点
Anthropic / OpenAI 兼容流式 支持;可用 ANTHROPIC_BASE_URL 走代理
工具系统 bash / 读写改 / grep / glob / web
项目记忆 CLAUDE.md → CLAW.md → AGENTS.md 优先级
权限 默认 workspace-write;可读模式与危险跳过开关
MCP / Skills / Plugins CLI 与斜杠命令双入口;status/doctor 可 JSON 输出
Mock 对等 ./scripts/run_mock_parity_harness.sh

本地 OpenAI 兼容服务(Ollama / llama.cpp / vLLM)有独立文档;模型名要用服务端真实 tag。自动化场景建议统一 --output-format json,方便把 doctor、mcp、status 接到 CI。

Rust crate 分层与权限沙箱示意


五、工程师真正该带走的清单

1. 发布供应链

  • CI 扫描发布产物:禁止 .map、禁止未预期的 sourceMappingURL。
  • files / .npmignore 白名单优先,而不是「默认全打包再碰运气」。
  • 调试符号走私有通道;公共包默认「可还原 = 已公开」。

2. Harness 设计

  • 把 会话循环、工具执行、权限、MCP、遥测 拆成可单测模块,而不是一个 5000 行的 print.ts 式巨石(泄露代码里被社区吐槽的超长函数,恰恰反衬了拆分的价值)。
  • 用 确定性 mock 固化行为契约;「对等(parity)」比「看起来能跑」更接近工业交付。

3. 法律与伦理边界

  • 研究公开架构、写自己的实现、讨论权限模型——可以。
  • 传播未授权完整源码树、教人绕过 DMCA——不行。
  • 源码曝光会放大已知 CVE 的可利用面;生产环境务必锁版本、收紧权限模式、审计 hooks/MCP 配置。

六、小结

Claude Code 的 source map 事故,把「Agent 外壳」从黑盒变成了公开课;Claw Code 的价值不在复刻热搜数字,而在于它用 清洁室纪律 + Rust crate 边界 + mock 对等测试,把课变成了可编译、可诊断、可演进的仓库。若你正在自研 coding agent / 内部 DevOps 助手,与其盯着 Star 曲线,不如对照 runtime / tools / PermissionEnforcer / PARITY.md 问自己三句:工具契约清不清?权限是否强制在执行路径上?没有真实 Key 时,回归还能否绿灯?

仓库入口:https://github.com/ultraworkers/claw-code(请以官方 README 与 LICENSE 为准;与 Anthropic 无隶属关系)。

💻 配套实训环境与动手练习

本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验:

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

最新文章

热门文章

本栏目文章