ECC 源码拆解
本文档不是 ECC 的使用手册,而是一份“从文件如何协作”的源码导读。它回答:ECC 如何把工程规范、专用 agent、工作流 skill、生命周期 hook、选择性安装器和跨平台适配层组装成一个可持续运行的 Agent harness 操作系统。
先给结论
ECC(Everything Claude Code)最容易被误解成一个 Markdown 提示词包。源码真正实现的是一条更完整的控制链:
静态资产 → 解析/选择 → 目标适配 → 安装状态 → 会话加载
↑ ↓
学习/记忆 ← 生命周期 hook ← 工具调用 ← Agent 执行
agents/、skills/ 和 commands/ 负责告诉模型“怎么做”;rules/ 负责持续约束;hooks/ 与 scripts/hooks/ 负责在工具和会话边界执行代码;manifests/、scripts/install-*.js 负责把同一套资产投影到 Claude Code、Codex、Cursor、OpenCode、Gemini、Zed 等不同宿主。
本文档的分析范围
本拆解基于本地 ECC-main 快照的 VERSION=2.1.0,以目录和源码实际计数为准:
| 资产 | 快照计数 | 作用 |
|---|---|---|
| agents | 67 | 面向委派的角色提示词 |
| 顶层 skills | 281 | 可按需加载的工作流/领域知识 |
| commands | 94 | slash command 兼容入口 |
| 安装 modules | 34 | 受依赖约束的安装单元 |
| 安装 profiles | 7 | minimal / core / developer / full 等组合 |
| install components | 81 | 面向用户的选择器(baseline、language、framework、capability 等) |
| hook 注册 | 21 | hooks/hooks.json 中按事件分组的运行时入口 |
| rule 文件 | 122 | common 与语言/框架规则包 |
README 中的“281 skills”是产品口径;文件系统中 skills/ 的 281 个顶层目录包含 452 个文件,其中 22 个 skill 目录含配置或脚本等附加文件。计数不同不代表内容丢失,而是“能力目录数”和“物理文件数”两个维度。
推荐阅读顺序
- 总体架构:先建立层次与数据流。
- 内容模型:理解每种文件的职责边界。
- Agents → Skills:看知识如何被组织和委派。
- Hooks → 选择性安装器:看静态内容如何进入运行时。
- 跨平台适配 → 记忆与学习 → 安全治理:理解 ECC 的工程化护城河。
每章都按三个问题展开:是什么、源码怎么做、为什么这样设计。源码定位使用 ECC 上游仓库链接,便于读者对照最新版本;如果上游继续演进,应优先相信本地快照和具体文件,而不是文档里的数字。
如何使用这份拆解
- 把章节当作源码导航,而不是替代源码。每个结论都尽量落到目录、配置或函数。
- 先看“主链路”,再按需钻入某个 skill 或 hook;ECC 的规模不适合从 281 个 skill 逐个通读。
- 运行时问题优先查安装状态和目标适配器;内容问题优先查 skill/agent/command 的 canonical 文件。