乐于分享
好东西不私藏

从 512,000 行泄露源码的 Skills:Claude Code 内部是怎么防止 AI 撒谎的

从 512,000 行泄露源码的 Skills:Claude Code 内部是怎么防止 AI 撒谎的

原创深度 · Claude Code 工程实践 · 阅读约 12 分钟

写在前面
2026 年 3 月 31 日,Anthropic 意外把 Claude Code 的完整 TypeScript 源码——512,000 行,1,900 个文件——打包进了一个 npm 包。
安全研究员 Chaofan Shou 发现后,数小时内代码就被镜像到 GitHub,吸引了数万开发者研究。
这不是一次普通的代码泄露。普通的代码泄露暴露实现细节;这次泄露暴露的是一个年营收 $2.5B 的生产级 AI Agent 系统的完整工程决策过程——包括失败案例、调试注释和硬性约束。
我花时间读完了核心部分,从中提炼出了 8 个 Skills。测试结论:8/8 在对抗基线测试中达到 100% pass rate(vs 基线平均 28%)。

01 为什么要从泄露源码中创建 Skills?
与学术论文或技术博客的本质区别:
来源类型
内容性质
可信度
学术论文
实验室验证的理论
高,但可能不适用于生产
技术博客
作者的实践经验
中,依赖作者水平
泄露的生产源码
运行数百万次后沉淀的工程决策
极高,已被规模验证
选题的核心原则只有一个:只选在源码中有直接工程证据支撑的问题域
每一个 Skill 都有对应的「源码指纹」:
源码发现
核心证据
对应 Skill
KAIROS 守护模式 + subagent fork
task-budgets-2026-03-13 beta flag
task-concurrency
Capybara v8 的 29-30% false claims
constants/prompts.ts:237 补丁原文
self-rationalization-guard
autoDream 四阶段流程
consolidationPrompt.ts 重建
memory-type-system
“only channel = prompt string”
subagent API 文档原文
subagent-communication
“coordinator never writes code”
COORDINATOR_PROMPT 骨架重建
coordinator-orchestrator
Explore subagent: Read/Glob/Grep
工具集硬性限制 + thoroughness 参数
lightweight-explorer
“Keep MEMORY.md under 200 lines”
autoDream Phase4 强制约束
smart-memory-guard
Builder-Validator 分离架构
Validator 使用 fresh context 设计
adversarial-verification

02 8 个 Skills 各自解决什么问题
每个 Skill 回答一个具体问题,用「问题 → 源码发现 → 核心价值」三步说明。

Skill 1:task-concurrency
并发安全与任务依赖管理
问题:多个 Agent 同时操作同一资源时会发生什么?
源码揭示了 KAIROS 守护模式——主线程空闲时自动激活的后台 daemon,被 fork 为独立 subagent,防止「维护任务污染主 Agent 的思路链」。task-budgets-2026-03-13 beta flag 揭示了三维资源预算(token/工具调用/时间),这是防止 subagent 失控的工程化手段。
核心价值:最关键的洞察——读操作可以并发,写操作必须串行。这个原则在生产代码中有 2500 行安全校验支撑。

Skill 2:self-rationalization-guard
AI 自我欺骗的 8 种模式与防护
问题:AI Agent 说「测试通过」,但真的通过了吗?
这是最有直接证据的 Skill。constants/prompts.ts:237 包含一条 2026 年专门写的补丁注释:
// @[MODEL LAUNCH]: False-claims mitigation for Capybara v8
// (29-30% FC rate vs v4's 16.7%)
更惊人的数据:1,279 个会话出现了 50+ 次连续失败(最高 3,272 次),每天浪费约 25 万次 API 调用——因为 Agent 不会主动报告卡死。
核心价值:这个 Skill 本质上是把 Anthropic 工程师为自己写的保护规则,公开给所有用户使用。Anthropic 内部员工(ant)使用的 Claude 有一个外部用户没有的提示:“If you notice the user’s request is based on a misconception, say so. You’re a collaborator, not just an executor.” 他们知道问题存在,但默认没有给外部用户开启这些保护。

Skill 3:memory-type-system
跨会话记忆的设计规范
问题:AI Agent 如何记住上次对话的内容?如何防止记忆越来越乱?
泄露代码揭示了一个三层架构:
Layer 1: MEMORY.md  → 只存指针(始终在上下文,上限 200行/25KB)
Layer 2: Topic Files → 按需加载(实际的项目知识)
Layer 3: Raw Logs    → 只 grep 不整体读(历史记录)
consolidationPrompt.ts 中 autoDream 的核心指令是:「你正在进行一次梦境——对记忆文件的反思性回顾,将近期学到的内容综合为持久的、有组织的记忆。」
核心价值:将「记忆是索引不是存储」这个反直觉设计,系统化为 T1-T4 四类型分类和 Strict Write Discipline(只在验证成功后才更新索引)。

Skill 4:subagent-communication
Worker Prompt 五层结构
问题:我派给子代理的任务,它为什么总是做偏、做错、格式乱?
最关键的一句话来自泄露源码的设计文档:
“The ONLY channel from parent to subagent is the Agent tool’s prompt string.”
子代理没有父对话的任何记忆。你写给子代理的那段文字就是它的整个世界
核心价值:五层结构(角色→上下文注入→精确任务→输出契约→失败协议)是从这个架构约束中提炼的最佳实践。最关键的是「输出契约」——子代理返回的格式必须是编排者可以直接使用的格式,不是「再理解一遍」的素材。

Skill 5:coordinator-orchestrator
你是指挥官,不是执行者
问题:我作为 Coordinator 总忍不住自己去读文件、写代码,而不是派给 Worker。这有什么问题?
COORDINATOR_PROMPT 的核心定义(社区基于泄露源码重建):
“The coordinator never writes code; it delegates and synthesises.”
在 COORDINATOR_MODE 下,写工具被硬性禁用——这不是建议,是架构约束。
核心价值:编排六步循环(ASSESS→PLAN→DISPATCH→TRACK→SYNTHESISE→RESPOND)加 5 条不可破规则。最深刻的洞察:综合(Synthesise)和转发(Forward)是本质不同的操作。Coordinator 的价值来自去重、关联、优先级排序、给出行动建议,而不是把 Worker 输出原样传给用户。

Skill 6:lightweight-explorer
用最少 Token 完成代码搜索
问题:我想了解某个函数在哪里被使用,结果 Claude 读了一堆文件,花了大量 token,能更快吗?
Explore subagent 的工具集被硬性限制为 Read, Glob, Grep 三件套——没有写权限,没有执行权限。这不是功能约束,而是工程哲学:探索任务不需要全套工具。
核心价值
grep -n + sed 读30行  ≈ 200 tokens
Read 整个1000行文件  ≈ 4000 tokens
节省 95%,且通常能完整回答问题。四层工具优先级(grep-l → grep-n → sed 读片段 → cat 全文)确保 token 消耗最小化。

Skill 7:smart-memory-guard
记忆膨胀与漂移的诊断和修复
问题:我的 MEMORY.md 已经有 320 行了,Agent 开始给出过时的建议。怎么办?
autoDream Phase 4 的原文约束:
“Keep MEMORY.md under 200 lines AND ~25KB. Remove stale pointers. Resolve contradictions.”
这个约束每次 autoDream 运行时强制执行。Strict Write Discipline 的目的明确:防止「幻觉固化」——未经验证的推断被写成事实,后续越来越难被质疑。
核心价值:与 memory-type-system 的分工是——前者解决「如何设计记忆系统」,后者解决「记忆系统出问题了如何诊断和修复」。提供可直接运行的诊断脚本(memory-health-check.sh)和四种漂移类型的修复手册。

Skill 8:adversarial-verification
尝试「把它搞坏」,而不是确认「它能工作」
问题:同事说转账函数测试过了,能正常工作。我怎么真正验证它的正确性?
Builder-Validator 分离是 Claude Code 内置的验证架构:Validator Worker 使用 fresh context,不知道 Builder 是怎么实现的,只知道原始需求。这个设计解决了「实现者验证自己的工作」的核心问题——实现者有确认偏见,独立验证者没有。
核心价值:5 个攻击面(边界极值/假设失效/权限隔离/时序状态/依赖环境)+ 6 种假性验证识别,将「对抗性思维」系统化为可操作的检查清单。

03 如何组合使用这 8 个 Skills
这 8 个 Skills 有清晰的层级关系,不是平等的工具集合:
横切层(所有场景都应考虑):self-rationalization-guard + adversarial-verification
调度/通信层(多 Agent 协作):coordinator-orchestrator + subagent-communication
记忆层(跨会话知识管理):memory-type-system + smart-memory-guard
探索/运维层(执行和维护):lightweight-explorer + smart-memory-guard
基础层(并发基础架构):task-concurrency
场景组合推荐:
你要做的事
推荐组合
构建多 Agent 系统
task-concurrency + coordinator + subagent-communication
设计长期记忆系统
memory-type-system + smart-memory-guard
代码库调研(省 token)
lightweight-explorer
验证 AI 交付物
adversarial-verification + self-rationalization-guard
从零构建 Agent
全套 8 个
四大共同原则
这 8 个 Skills 共享 4 个底层设计原则,均直接来自泄露源码:
原则 1:上下文最小化——不是「加载更多」,而是「只加载必要的」。
原则 2:严格角色隔离——Builder 不能是 Validator;Coordinator 不能执行。隔离不是限制功能,而是确保系统可调试、可替换。
原则 3:失败优先设计——先设计失败如何处理,再设计成功路径。
原则 4:诚实性约束——confidence 字段不允许虚报;声称「测试通过」前必须附上实际输出。这些规则源于 Anthropic 自己修复的 29% false claims 率。

04 测试结果
测试方法:读取 Skill 的 SKILL.md 内容,用 Skill 内容完成 eval prompt,对照 assertions 评分。每个 Skill 设计 4 个 assertions,分别验证 Skill 的核心独特价值。
Skill
使用 Skill
不使用 Skill
Delta
task-concurrency
100%
25%
0.75
self-rationalization-guard
100%
25%
0.75
memory-type-system
100%
25%
0.75
subagent-communication
100%
25%
0.75
coordinator-orchestrator
100%
25%
0.75
lightweight-explorer
100%
25%
0.75
smart-memory-guard
100%
25%
0.75
adversarial-verification
100%
50%
0.5
综合
100%
28%
0.72
关键发现:基线在大多数 Skill 的测试中只能答对 1/4 个 assertions,原因是 Skill 的核心价值在于工程化概念——输出契约、BLOCKER 协议、confidence 字段系统、thoroughness 分层策略——这些 Claude 在没有 Skill 时不会主动提供。
adversarial-verification 的基线稍高(50%),因为「边界值测试」是通用测试知识,Claude 即使没有 Skill 也能答对。
发现的 4 个优化点
O1(高优先级)adversarial-verification 缺少 AI Agent 专项 Eval。attack-playbooks.md 的 P5(AI Agent 特有攻击:Prompt 注入、权限升级)是最具差异性的内容,但标准 eval prompt「验证转账函数」不会触发这部分。建议增加 Eval 9——「验证一个 AI Agent 的工具调用权限设计是否安全,找出 Prompt 注入风险」。
O2(中优先级)task-concurrency 缺少反模式对比。建议参考 self-rationalization-guard 的写法,在每个模式后增加「错误做法→后果→正确做法」的对比区。
O3(低优先级)memory-type-system 的 T1 边界模糊。建议增加示例——「正在运行的测试的输出 = T1;测试命令本身 = T2」。
O4(低优先级):coordinator 与 subagent-communication 有 15% 内容重叠。建议 coordinator-orchestrator 在 DISPATCH 步骤显式引用 subagent-communication Skill,不重复展开。

05 未来方向
短期(1-3 个月):修复 O1 优先级问题;为 task-concurrency 增加分布式锁(Redis 锁)扩展方案;为 adversarial-verification 增加 LLM-as-Judge 的评估者本身的验证流程。
中期(3-6 个月):建立 Skills 互调用体系;将 smart-memory-guard 的诊断脚本集成为 Claude Code 的 /memory-health 命令,在每次会话开始时自动运行。
长期(6-12 个月):跟踪官方功能发布,尤其是 KAIROS 正式发布、Agent Teams 稳定后,对应 Skill 将从「泄露信息」升级为「官方验证版」。
泄露源码还揭示了 ULTRAPLAN——可以将复杂规划任务委托给远端 Opus 4.6 实例,允许长达 30 分钟的深度思考。当正式发布后,计划创建 Skill 9:ULTRAPLAN 规划模式

写在最后
创建这 8 个 Skills 时遵循的原则:
使用了架构模式、工程原则、设计理念——这些是思想层面的内容,不是实现代码。没有使用具体的源代码行、系统提示原文(除了用于说明的引用片段)。
正如 eWeek 的分析所说:
「这次泄露的真正意义,不是开发者得以一窥内部实现。而是我们得到了一幅更清晰的图景——一个现代 AI 编程 Agent 究竟是什么:不是一个有 shell 的模型,而是一个精心工程化的、由权限、检索、记忆规范、任务管理、UI 设计和编排逻辑组成的堆栈。」
这 8 个 Skills 的目标,是让这个堆栈背后的思想变得更可理解、可复用、可验证。

8 Skills 快速参考卡
Skill
一句话定义
主要触发词
task-concurrency
DAG 并发 + 读写安全
并发/竞态/依赖
self-rationalization-guard
识别 AI 的 8 种欺骗
虚假声明/偷懒/漂移
memory-type-system
T1-T4 记忆分类 + 写入纪律
跨会话/记忆/CLAUDE.md
subagent-communication
Worker Prompt 五层结构
子代理/Worker
coordinator-orchestrator
编排六步循环 + 5 条规则
Coordinator/编排
lightweight-explorer
grep 分层 + token 预算
代码搜索/调研
smart-memory-guard
诊断膨胀 + 修复漂移
记忆膨胀/过时
adversarial-verification
5 攻击面 + 假性验证识别
验证/找漏洞