Everything Claude Code(ECC)深度解析:20 万 Star 的 AI 编程操作系统如何用 61 个 Agent + 246 个 Skills 把 Claude Code 变成虚拟开发团队——从黑客松冠军到工程化标配的完整实战指南
2026 年 7 月,GitHub Trending 被一个近 20 万 Star 的开源项目刷屏。它不是新的大模型,不是新的 IDE,却让无数开发者惊呼:AI 编程的真正拐点来了。它叫 Everything Claude Code(ECC),一个让 AI 从「写代码的助手」变成「懂工程、会协作、保安全」的虚拟开发团队的增强系统。
一、前言:AI 编程的「最后一公里」
2026 年,AI 编程工具已经遍地开花。Claude Code、GitHub Copilot、Cursor、Codex——每一个都能帮你写代码,每一个都能在你卡壳时给出建议。但如果你是一个真正做过大型项目的开发者,你一定有过这样的体验:
- AI 写的代码能跑,但风格不统一,review 的时候一言难尽
- 让 AI 做架构设计,它给你一个「看起来对」但实际跑不通的方案
- 安全审计?AI 根本不知道你的项目里哪些 key 不能提交
- 会话一断,AI 就「失忆」了,之前讨论的架构决策全部归零
- 想让 AI 做 TDD?它会先写代码再补测试,覆盖率永远到不了 80%
这就是 AI 编程的「最后一公里」:模型能力够了,但工程化能力不够。
ECC(Everything Claude Code)的出现,精准地补上了这块短板。它不是一个新的 AI 模型,而是一个AI 编程的操作系统层——给 Claude Code、Cursor、Codex 这些工具装上「工程化大脑」。
本文将从源码架构、核心模块、安装部署、实战工作流、性能优化、安全机制六个维度,带你吃透这个现象级项目。
二、项目起源:一天黑客松,十个月打磨
2.1 黑客松夺冠:从 0 到 1 的 24 小时
2025 年 9 月,纽约举办了一场 Agentic AI Hackathon,主题极具挑战性:用 AI Agent 在一天内完成数周工作量,涵盖获客、产品规划、原型、开发、上线全流程。
来自旧金山的开发者 Affaan Mustafa 带着他的团队参赛。他们的武器不是什么秘密模型,而是作者自用 10 个月的 Claude Code 工程化工作流。最终,他们凭借 zenith.chat(一个 AI 用户调研平台)夺冠,全程几乎由 Claude Code 自主完成。
赛后,Affaan 将这套工作流开源,这就是今天的 ECC。
2.2 从 0 到 20 万 Star 的三个月
开源后的增长曲线堪称疯狂:
- 第 1 周:1000 Star,社区开始关注
- 第 1 个月:5 万 Star,登上 GitHub Trending
- 第 2 个月:12 万 Star,Anthropic 官方推荐
- 第 3 个月:近 20 万 Star,成为 Claude Code 生态的「标配」
截至 2026 年 7 月,ECC 的核心数据:
| 指标 | 数值 |
|---|---|
| Star | 200,000+ |
| Fork | 28,000+ |
| Agent | 61 个 |
| Skills | 246 个 |
| Commands | 76 个斜杠命令 |
| 支持语言 | 12+(TS/Python/Go/Java/C++/Rust 等) |
| 贡献者 | 170+ |
| 协议 | MIT |
2.3 核心定位:不是插件,是操作系统
很多人第一次听到 ECC 会问:「又一个 Claude Code 插件?」
不是。ECC 的定位是 AI Agent Harness(智能体增强层),它给 AI 编程工具提供的不是单个功能,而是一整套工程化操作系统:
ECC = Skills(技能) + Agents(智能体) + Commands(命令) + Hooks(钩子) + Rules(规则) + MCPs(工具链) + Plugins(插件)
用一个类比:如果 Claude Code 是一辆跑车的引擎,ECC 就是整辆车——底盘、变速箱、安全气囊、导航系统、自动驾驶辅助,一应俱全。
三、架构全景:六大模块深度解析
ECC 的架构可以分为六个核心模块,每个模块解决 AI 编程的一个核心痛点。
3.1 多专家 Agent 集群:一人就是一支团队
传统 AI 编程工具只有一个「全能型」Agent,什么都能做但什么都不精。ECC 把复杂开发任务拆解为 61 个专业子 Agent,各司其职:
┌─────────────────────────────────────────────────────────┐
│ ECC Agent 集群 │
├─────────────┬─────────────┬─────────────┬───────────────┤
│ Planner │ Architect │ CodeReviewer│ SecurityReview│
│ 需求拆解 │ 架构设计 │ 代码审查 │ 安全审计 │
├─────────────┼─────────────┼─────────────┼───────────────┤
│ TDDGuide │ BuildFixer │LanguageExp │ DeployAgent │
│ 测试驱动 │ 构建修复 │ 语言专家 │ 部署运维 │
├─────────────┼─────────────┼─────────────┼───────────────┤
│ DBExpert │ APIExpert │ GitMaster │ DocWriter │
│ 数据库 │ API 设计 │ Git 操作 │ 文档生成 │
└─────────────┴─────────────┴─────────────┴───────────────┘
核心 Agent 详解:
Planner(规划师):负责将模糊的需求拆解为可执行的开发计划。它不只是列 TODO,而是会分析依赖关系、评估风险、给出优先级排序。
# Planner 输出示例
## 开发计划:用户认证模块
### Phase 1: 基础设施(优先级 P0)
- [ ] 数据库 Schema 设计(依赖:无)
- [ ] JWT 工具类封装(依赖:无)
- [ ] Redis 连接池配置(依赖:无)
### Phase 2: 核心逻辑(优先级 P0)
- [ ] 注册接口(依赖:Schema + JWT)
- [ ] 登录接口(依赖:Schema + JWT + Redis)
- [ ] Token 刷新接口(依赖:JWT + Redis)
### Phase 3: 安全加固(优先级 P1)
- [ ] 限流中间件(依赖:Redis)
- [ ] CORS 配置(依赖:无)
- [ ] 输入校验(依赖:无)
### 风险评估
- 高风险:JWT 密钥管理 → 建议使用环境变量 + 密钥轮换
- 中风险:并发注册 → 建议数据库唯一索引 + 分布式锁
Architect(架构师):负责技术选型、目录规划、模块划分。它会根据项目规模和团队能力给出「够用就好」的方案,而不是过度设计。
CodeReviewer(代码审查员):在代码写入后自动触发,从可读性、性能、规范、冗余、安全五个维度进行审查。它的审查标准是可配置的,支持 .ecc-review.yml 自定义。
SecurityReviewer(安全审查员):这是 ECC 最亮眼的 Agent 之一。它不只是检查 OWASP Top 10,还能识别硬编码的密钥、不安全的依赖版本、SQL 注入风险、XSS 攻击面等。
3.2 Skills 系统:246 个技能,按需加载
246 个 Skills 听起来很多,但 ECC 的精妙之处在于动态按需加载——它不会把所有 Skills 都塞进上下文窗口,而是根据当前任务类型智能选择。
Skills 分类体系
skills/
├── languages/ # 语言相关
│ ├── typescript/ # TypeScript 最佳实践
│ ├── python/ # Python 最佳实践
│ ├── go/ # Go 最佳实践
│ └── rust/ # Rust 最佳实践
├── frameworks/ # 框架相关
│ ├── react/ # React 组件模式
│ ├── nextjs/ # Next.js App Router
│ ├── express/ # Express 中间件
│ └── fastapi/ # FastAPI 路由
├── patterns/ # 设计模式
│ ├── tdd/ # 测试驱动开发
│ ├── refactoring/ # 重构模式
│ └── architecture/ # 架构模式
├── tools/ # 工具链
│ ├── docker/ # 容器化
│ ├── k8s/ # Kubernetes
│ ├── git/ # Git 工作流
│ └── cicd/ # CI/CD 流水线
└── security/ # 安全相关
├── auth/ # 认证授权
├── encryption/ # 加密解密
└── audit/ # 安全审计
Skills 加载机制
ECC 采用上下文感知的动态加载策略:
# ECC Skills 加载逻辑(伪代码)
class SkillLoader:
def load_for_context(self, project_context: ProjectContext) -> List[Skill]:
skills = []
# 1. 始终加载基础规则
skills.extend(self.load_common_skills())
# 2. 根据项目语言加载
for lang in project_context.languages:
skills.extend(self.load_language_skills(lang))
# 3. 根据当前任务类型加载
if project_context.task_type == "testing":
skills.extend(self.load_tdd_skills())
elif project_context.task_type == "deployment":
skills.extend(self.load_deploy_skills())
# 4. 根据文件类型加载
for file in project_context.active_files:
skills.extend(self.load_file_type_skills(file.extension))
# 5. 上下文窗口保护
return self.prune_to_fit(skills, max_tokens=8000)
这意味着:写 Python 代码时不会加载 Rust 的 Skills,做前端时不会加载 K8s 的 Skills。平均每个任务只加载 15-25 个 Skills,上下文窗口利用率极高。
自定义 Skills 示例
你也可以创建自己的 Skills。每个 Skill 是一个 Markdown 文件,包含明确的角色定义、输入约束和输出契约:
---
name: api-design-review
description: API 设计审查专家,检查 RESTful 规范、错误处理、版本控制
trigger: 当修改 API 路由文件时自动触发
---
# API 设计审查 Skill
## 角色
你是一个资深 API 设计审查专家,专注于 RESTful API 设计最佳实践。
## 审查清单
1. URL 命名是否符合 RESTful 规范(名词复数、小写、连字符)
2. HTTP 方法是否正确使用(GET 无副作用、POST 创建、PUT 全量更新、PATCH 部分更新)
3. 状态码是否语义化(201 Created、204 No Content、400 Bad Request、422 Unprocessable Entity)
4. 错误响应格式是否统一({ "error": { "code": "...", "message": "..." } })
5. 分页参数是否标准化(page/limit 或 cursor/limit)
6. 版本控制策略是否明确(URL 路径 vs Header)
## 输出格式
- ✅ 通过项
- ⚠️ 建议改进项(附带具体建议)
- ❌ 必须修复项(附带修复方案)
3.3 Hooks 系统:全流程自动化
Hooks 是 ECC 的「自动化神经系统」。它在代码写入、会话开始/结束、工具调用前后自动触发预定义的动作。
Hooks 类型
// ECC Hooks 配置示例 (.ecc/hooks.json)
{
"hooks": {
// 代码保存前触发
"onSave": [
{
"name": "format-code",
"command": "prettier --write $FILE",
"languages": ["typescript", "javascript"]
},
{
"name": "lint-check",
"command": "eslint $FILE --fix",
"languages": ["typescript", "javascript"]
},
{
"name": "type-check",
"command": "tsc --noEmit --strict",
"languages": ["typescript"],
"parallel": false // 串行执行,等待结果
}
],
// 代码写入后触发
"afterWrite": [
{
"name": "run-related-tests",
"command": "vitest related $FILE",
"timeout": 30000
},
{
"name": "security-scan",
"command": "ecc-security scan $FILE",
"failOnError": true
}
],
// 会话开始时触发
"onSessionStart": [
{
"name": "load-project-context",
"command": "ecc context load",
"priority": "high"
},
{
"name": "check-dependencies",
"command": "ecc deps check --outdated",
"priority": "low"
}
],
// 工具调用前触发
"beforeToolCall": [
{
"name": "validate-bash-command",
"tool": "bash",
"command": "ecc security validate-bash '$COMMAND'",
"blockOnFail": true // 安全命令验证失败则阻止执行
}
]
}
}
Hooks 执行流程
用户输入 → Claude Code 处理 → ECC Hooks 拦截
│
┌───────────────┼───────────────┐
▼ ▼ ▼
beforeToolCall onSessionStart onSave
(安全验证) (加载上下文) (格式化)
│ │ │
▼ ▼ ▼
工具执行 会话就绪 代码保存
│ │ │
▼ ▼ ▼
afterToolCall onSessionEnd afterWrite
(结果验证) (保存记忆) (测试+安全)
3.4 Rules 系统:强制编码规范
Rules 是 ECC 的「法律体系」。它定义了 AI 在编写代码时必须遵守的规范,确保输出的代码风格统一、质量可控。
Rules 层级结构
rules/
├── common/ # 通用规则(所有语言适用)
│ ├── naming.md # 命名规范
│ ├── comments.md # 注释规范
│ ├── error-handling.md # 错误处理规范
│ └── security.md # 安全规范
├── typescript/ # TypeScript 专用
│ ├── style.md # 代码风格
│ ├── types.md # 类型规范
│ ├── async.md # 异步规范
│ └── testing.md # 测试规范
├── python/ # Python 专用
│ ├── pep8.md # PEP 8 规范
│ ├── typing.md # 类型注解规范
│ └── testing.md # 测试规范
└── project/ # 项目专用(可选)
└── .ecc-project-rules.md # 项目特定规范
Rule 示例:TypeScript 命名规范
# TypeScript 命名规范
## 变量和函数
- 使用 camelCase:`userName`, `getUserById()`
- 布尔值使用 `is/has/should` 前缀:`isActive`, `hasPermission`
- 工厂函数使用 `create` 前缀:`createUser()`, `createConnection()`
## 类和接口
- 使用 PascalCase:`UserService`, `IAuthProvider`
- 接口使用 `I` 前缀(可选,项目统一即可)
## 常量
- 使用 UPPER_SNAKE_CASE:`MAX_RETRY_COUNT`, `API_BASE_URL`
## 类型别名和泛型
- 类型别名使用 PascalCase:`type UserProfile = ...`
- 泛型参数使用单字母大写:`T`, `U`, `K`, `V`
## 文件命名
- 组件文件:PascalCase(`UserProfile.tsx`)
- 工具文件:camelCase(`formatDate.ts`)
- 测试文件:与源文件同名 + `.test` 后缀(`UserProfile.test.tsx`)
安全规则示例
# 安全编码规范
## 禁止项(AgentShield 强制执行)
1. ❌ 禁止硬编码密钥、Token、密码
- 违规示例:`const API_KEY = "sk-1234567890"`
- 正确做法:`const API_KEY = process.env.API_KEY`
2. ❌ 禁止使用 `eval()`、`new Function()`、`innerHTML`
- 违规示例:`eval(userInput)`
- 正确做法:使用安全的替代方案
3. ❌ 禁止 SQL 拼接
- 违规示例:`` `SELECT * FROM users WHERE id = ${userId}` ``
- 正确做法:使用参数化查询
4. ❌ 禁止关闭 CSRF 保护
5. ❌ 禁止使用 `*` 作为 CORS 来源
6. ❌ 禁止在日志中输出敏感信息
3.5 MCP 工具链:连接外部世界
MCP(Model Context Protocol)是 ECC 连接外部服务的桥梁。通过 MCP,AI 可以操作文件系统、调用 API、管理容器、操作数据库。
MCP 配置示例
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"docker": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-docker"]
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./src"]
}
}
}
MCP 使用最佳实践
ECC 官方建议的 MCP 配置原则:
- MCP 总数:20-30 个(所有项目共享)
- 单项目启用:≤10 个
- 活跃工具:≤80 个
为什么有这些限制?因为每个 MCP 工具的描述都会占用上下文窗口。如果启用太多,AI 的「有效思考空间」会被压缩,反而降低代码质量。
# 查看当前 MCP 工具占用的上下文
ecc mcp stats
# 输出示例:
# MCP Server: github 工具数: 12 上下文占用: 2,340 tokens
# MCP Server: docker 工具数: 8 上下文占用: 1,560 tokens
# MCP Server: postgres 工具数: 6 上下文占用: 1,200 tokens
# ─────────────────────────────────────────────────────
# 总计: 26 个工具, 5,100 tokens (建议上限: 8,000 tokens)
3.6 AgentShield:毫秒级安全防御
AgentShield 是 ECC 最核心的安全模块。它解决了 AI 编程最大的隐患:AI 生成的代码可能包含安全漏洞或泄露敏感信息。
AgentShield 架构
┌─────────────────────────────────────────────────────┐
│ AgentShield │
├─────────────────────────────────────────────────────┤
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 红队 │ │ 蓝队 │ │ 审计师 │ │
│ │ 主动挖洞 │ │ 自动修复 │ │ 安全报告 │ │
│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 100+ 安全规则引擎 │ │
│ │ OWASP Top10 | 密钥检测 | 依赖审计 | XSS │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 实时代码扫描器 │ │
│ │ AST 解析 | 模式匹配 | 数据流分析 │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
AgentShield 实战:密钥泄露防护
// ❌ AgentShield 拦截的代码
const config = {
apiKey: "sk-proj-abc123def456", // 🚨 AgentShield: 硬编码密钥!
dbPassword: "MyS3cretP@ss!", // 🚨 AgentShield: 硬编码密码!
};
// ✅ AgentShield 建议的修复
const config = {
apiKey: process.env.API_KEY!,
dbPassword: process.env.DB_PASSWORD!,
};
// 如果确实需要默认值(仅限开发环境)
const config = {
apiKey: process.env.API_KEY || (process.env.NODE_ENV === 'development'
? "sk-test-placeholder"
: (() => { throw new Error("API_KEY is required in production"); })()),
};
Opus 安全模式:三 Agent 联防
对于高安全要求的项目,ECC 提供了 Opus 安全模式——三个 Agent 协同工作:
# 启用 Opus 安全模式
ecc security enable --mode=opus
# 三个 Agent 的分工:
# 🔴 红队 Agent:主动寻找代码中的安全漏洞
# - SQL 注入、XSS、CSRF、SSRF
# - 不安全的反序列化
# - 路径遍历攻击
# - 权限提升漏洞
# 🔵 蓝队 Agent:自动修复发现的漏洞
# - 生成修复补丁
# - 验证修复有效性
# - 更新安全规则
# 🟢 审计师 Agent:出具安全报告
# - 漏洞等级分类(Critical/High/Medium/Low)
# - 修复建议
# - 合规性检查
四、安装部署:三种方案,5 分钟上手
4.1 方案一:插件安装(推荐新手)
这是最简单的安装方式,两行命令搞定:
# 第一步:添加 ECC 插件市场
/plugin marketplace add https://github.com/affaan-m/ECC
# 第二步:安装 ECC
/plugin install ecc@ecc
关键提醒:插件不会自动分发 Rules,必须手动安装!
# 克隆仓库
git clone https://github.com/affaan-m/ECC.git
cd ECC
# 复制通用规则
mkdir -p ~/.claude/rules/ecc
cp -r rules/common ~/.claude/rules/ecc/
# 复制你使用的语言规则(按需选择)
cp -r rules/typescript ~/.claude/rules/ecc/ # TypeScript
cp -r rules/python ~/.claude/rules/ecc/ # Python
cp -r rules/go ~/.claude/rules/ecc/ # Go
4.2 方案二:手动安装(适合定制化需求)
# 克隆仓库
git clone https://github.com/affaan-m/ECC.git
cd ECC
# 安装依赖
npm install
# 全量安装(包含所有语言和工具)
./install.sh --profile full
# 或按语言安装(推荐,更轻量)
./install.sh typescript python go
# 或按需组合
./install.sh --agents=planner,architect,codereviewer --skills=tdd,security
4.3 方案三:团队统一配置(适合企业)
团队项目建议将 ECC 配置纳入版本控制,确保所有人使用相同的规范:
# 项目根目录结构
your-project/
├── .ecc/
│ ├── hooks.json # Hooks 配置
│ ├── mcp.json # MCP 工具配置
│ ├── rules/ # 项目专用规则
│ │ ├── common/
│ │ └── typescript/
│ └── skills/ # 项目专用 Skills
│ └── api-review.md
├── .claude/
│ └── settings.json # Claude Code 设置
└── CLAUDE.md # 项目级 Claude 配置
# 团队成员安装
git clone <your-project>
cd your-project
ecc init --from-project # 自动读取 .ecc/ 配置
4.4 验证安装
# 检查 ECC 状态
ecc status
# 输出示例:
# ✅ ECC v2.3.1 已安装
# ✅ Agent: 61 个可用
# ✅ Skills: 246 个(当前加载: 23 个)
# ✅ Hooks: 5 个活跃
# ✅ Rules: 12 条生效
# ✅ MCP: 3 个服务器连接中
# ⚠️ AgentShield: 未启用(建议运行 `ecc security enable`)
# 运行健康检查
ecc doctor
五、实战工作流:从需求到上线全自动
5.1 场景一:新建项目全流程
以一个 Todo API 项目为例,体验 ECC 的完整工作流:
第一步:需求规划
/plan 用 Node.js + Express + MongoDB 开发 Todo CRUD API,要求:
1. RESTful 风格
2. JWT 认证
3. TDD 驱动,覆盖率 ≥ 80%
4. Docker 容器化
5. GitHub Actions CI/CD
Planner Agent 自动输出:
# 开发计划:Todo API
## 技术栈
- Runtime: Node.js 20 LTS
- Framework: Express 4.x
- Database: MongoDB 7.x + Mongoose 8.x
- Auth: JWT (jsonwebtoken + bcrypt)
- Test: Vitest + Supertest
- Container: Docker + Docker Compose
- CI/CD: GitHub Actions
## 目录结构
src/
├── config/ # 配置文件
│ ├── database.ts # 数据库连接
│ └── auth.ts # JWT 配置
├── models/ # 数据模型
│ ├── User.ts
│ └── Todo.ts
├── routes/ # 路由
│ ├── auth.ts
│ └── todos.ts
├── middleware/ # 中间件
│ ├── auth.ts # JWT 验证
│ └── validate.ts # 输入校验
├── services/ # 业务逻辑
│ ├── auth.ts
│ └── todo.ts
└── utils/ # 工具函数
└── errors.ts
## 开发阶段
### Phase 1 (Day 1): 基础设施
- 项目初始化 + 依赖安装
- 数据库连接 + Mongoose Schema
- JWT 工具类封装
- 错误处理中间件
### Phase 2 (Day 2): 核心 API
- 注册/登录接口(TDD)
- Todo CRUD 接口(TDD)
- 输入校验中间件
- 认证中间件
### Phase 3 (Day 3): 安全与部署
- 限流中间件
- CORS 配置
- Dockerfile + docker-compose.yml
- GitHub Actions 工作流
## 风险评估
- ⚠️ MongoDB 连接池配置 → 建议 maxPoolSize: 10
- ⚠️ JWT 密钥轮换 → 建议环境变量 + 定期更换
- ⚠️ 并发写入 → 建议 Mongoose 版本锁(乐观锁)
第二步:TDD 开发
/tdd
TDDGuide Agent 会先写测试用例,再生成业务代码:
// tests/services/todo.test.ts
import { describe, it, expect, beforeEach, vi } from 'vitest';
import { TodoService } from '../../src/services/todo';
import { TodoModel } from '../../src/models/Todo';
describe('TodoService', () => {
let service: TodoService;
beforeEach(() => {
service = new TodoService();
vi.clearAllMocks();
});
describe('create', () => {
it('should create a todo with valid data', async () => {
const todoData = {
title: 'Buy groceries',
description: 'Milk, eggs, bread',
userId: 'user123',
};
const result = await service.create(todoData);
expect(result).toMatchObject({
title: 'Buy groceries',
description: 'Milk, eggs, bread',
completed: false,
userId: 'user123',
});
expect(result._id).toBeDefined();
expect(result.createdAt).toBeInstanceOf(Date);
});
it('should throw ValidationError if title is empty', async () => {
const todoData = { title: '', userId: 'user123' };
await expect(service.create(todoData)).rejects.toThrow(
'Title is required'
);
});
it('should throw ValidationError if title exceeds 200 chars', async () => {
const todoData = {
title: 'a'.repeat(201),
userId: 'user123',
};
await expect(service.create(todoData)).rejects.toThrow(
'Title must be less than 200 characters'
);
});
});
describe('getAll', () => {
it('should return paginated todos for a user', async () => {
const result = await service.getAll('user123', { page: 1, limit: 10 });
expect(result).toHaveProperty('data');
expect(result).toHaveProperty('pagination');
expect(result.pagination).toMatchObject({
page: 1,
limit: 10,
total: expect.any(Number),
});
});
it('should filter by completed status', async () => {
const result = await service.getAll('user123', {
completed: true,
});
result.data.forEach((todo) => {
expect(todo.completed).toBe(true);
});
});
});
});
然后 TDDGuide Agent 生成实现代码:
// src/services/todo.ts
import { TodoModel, ITodo } from '../models/Todo';
import { ValidationError, NotFoundError } from '../utils/errors';
interface CreateTodoDTO {
title: string;
description?: string;
userId: string;
}
interface GetAllOptions {
page?: number;
limit?: number;
completed?: boolean;
}
export class TodoService {
async create(data: CreateTodoDTO): Promise<ITodo> {
// 输入校验
if (!data.title || data.title.trim().length === 0) {
throw new ValidationError('Title is required');
}
if (data.title.length > 200) {
throw new ValidationError('Title must be less than 200 characters');
}
const todo = new TodoModel({
title: data.title.trim(),
description: data.description?.trim(),
userId: data.userId,
completed: false,
});
return await todo.save();
}
async getAll(userId: string, options: GetAllOptions = Promise<ITodo[]> {
const { page = 1, limit = 10, completed } = options;
const skip = (page - 1) * limit;
const filter: Record<string, any> = { userId };
if (completed !== undefined) {
filter.completed = completed;
}
const [data, total] = await Promise.all([
TodoModel.find(filter)
.sort({ createdAt: -1 })
.skip(skip)
.limit(limit)
.lean(),
TodoModel.countDocuments(filter),
]);
return {
data,
pagination: {
page,
limit,
total,
totalPages: Math.ceil(total / limit),
},
};
}
async getById(id: string, userId: string): Promise<ITodo> {
const todo = await TodoModel.findOne({ _id: id, userId }).lean();
if (!todo) {
throw new NotFoundError('Todo not found');
}
return todo;
}
async update(
id: string,
userId: string,
data: Partial<Pick<ITodo, 'title' | 'description' | 'completed'>>
): Promise<ITodo> {
if (data.title !== undefined) {
if (!data.title || data.title.trim().length === 0) {
throw new ValidationError('Title cannot be empty');
}
if (data.title.length > 200) {
throw new ValidationError('Title must be less than 200 characters');
}
}
const todo = await TodoModel.findOneAndUpdate(
{ _id: id, userId },
{ $set: data },
{ new: true, runValidators: true }
).lean();
if (!todo) {
throw new NotFoundError('Todo not found');
}
return todo;
}
async delete(id: string, userId: string): Promise<void> {
const result = await TodoModel.deleteOne({ _id: id, userId });
if (result.deletedCount === 0) {
throw new NotFoundError('Todo not found');
}
}
}
第三步:代码审查
/code-review
CodeReviewer Agent 会输出详细的审查报告:
# 代码审查报告
## ✅ 通过项
1. 命名规范:变量和函数使用 camelCase,符合规范
2. 错误处理:使用自定义 Error 类,层次清晰
3. 类型安全:TypeScript 类型定义完整
4. 输入校验:在 Service 层进行业务校验
## ⚠️ 建议改进
1. **性能优化**:`getAll` 方法的 `countDocuments` 和 `find` 可以并行执行
- 当前:串行查询,耗时 = T(find) + T(count)
- 建议:`Promise.all` 并行,耗时 = max(T(find), T(count))
2. **错误信息**:建议在 `NotFoundError` 中包含资源类型
- 当前:`'Todo not found'`
- 建议:`` `Todo with id ${id} not found` ``
3. **日志记录**:关键操作(创建、删除)建议添加日志
- 建议使用结构化日志:`logger.info({ userId, todoId, action: 'create' })`
## ❌ 必须修复
1. **竞态条件**:`delete` 方法应使用 `findOneAndDelete` 而非 `deleteOne`,以便返回被删除的文档用于审计日志
第四步:安全审计
/security-review
第五步:构建与部署
/build-fix # 自动修复构建错误
/deploy # 触发 Docker 构建 + 推送
5.2 场景二:重构遗留代码
# 告诉 ECC 你要重构的范围
/refactor src/legacy/user-service.ts \
--strategy="逐步迁移" \
--preserve-tests="true" \
--target-pattern="repository-pattern"
ECC 的重构工作流:
- Architect Agent 分析现有代码结构,生成重构方案
- TDDGuide Agent 为现有功能补充测试用例(确保重构不破坏功能)
- Planner Agent 将重构拆分为多个小步骤
- 每个步骤执行后自动运行测试验证
- CodeReviewer Agent 审查每一步的变更
5.3 场景三:安全漏洞修复
# 扫描项目安全漏洞
ecc security scan --full
# 输出示例:
# 🔍 扫描完成,发现 3 个问题:
#
# ❌ [Critical] src/config/database.ts:15
# 硬编码数据库密码
# 修复:使用环境变量 process.env.DB_PASSWORD
#
# ⚠️ [High] src/routes/user.ts:23
# SQL 注入风险(字符串拼接)
# 修复:使用参数化查询
#
# ⚠️ [Medium] package.json
# 依赖 lodash@4.17.20 存在已知漏洞
# 修复:升级到 lodash@4.17.21
# 自动修复
ecc security fix --auto
六、性能优化:让 ECC 跑得更快
6.1 上下文窗口管理
ECC 最大的性能瓶颈是上下文窗口。以下是一些优化策略:
# 查看当前上下文使用情况
ecc context stats
# 输出示例:
# ┌──────────────────────────────────────┐
# │ 上文窗口使用情况 │
# ├──────────────────────────────────────┤
# │ Rules: 1,200 tokens (15%) │
# │ Skills: 2,400 tokens (30%) │
# │ MCP Tools: 1,800 tokens (22.5%) │
# │ Agent Defs: 800 tokens (10%) │
# │ 对话历史: 1,800 tokens (22.5%) │
# ├──────────────────────────────────────┤
# │ 总计: 8,000 / 200,000 tokens │
# │ 剩余可用: 192,000 tokens │
# └──────────────────────────────────────┘
优化建议:
禁用不需要的 Skills
# 查看已加载的 Skills ecc skills list --loaded # 禁用不需要的 ecc skills disable docker k8s aws精简 MCP 工具
# 只启用项目需要的 MCP ecc mcp enable github postgres ecc mcp disable docker k8s redis使用
--compact模式# 紧凑模式:减少 Agent 描述,节省上下文 ecc config set compact-mode true
6.2 并行任务执行
ECC 支持多个 Agent 并行工作:
# 并行运行多个任务
ecc run --parallel \
"code-review src/services/" \
"security-scan src/config/" \
"test-coverage --check"
6.3 缓存机制
# 启用 Skills 缓存(避免重复解析)
ecc config set cache.skills true
# 启用 Rules 缓存
ecc config set cache.rules true
# 清除缓存(当配置变更时)
ecc cache clear
七、与竞品对比:ECC 的护城河在哪里?
7.1 ECC vs Superpowers
| 维度 | ECC | Superpowers |
|---|---|---|
| Star 数 | 200K+ | 199K+ |
| 定位 | AI 编程操作系统 | AI 编程方法论 |
| Agent 数量 | 61 个 | 按场景动态生成 |
| Skills 数量 | 246 个 | 无固定 Skills |
| 安全模块 | AgentShield(完整) | 无专门安全模块 |
| 记忆系统 | .instinct 跨会话持久化 | 无持久记忆 |
| 适用工具 | Claude Code/Cursor/Codex | Claude Code 为主 |
7.2 ECC vs Cline
| 维度 | ECC | Cline |
|---|---|---|
| 定位 | Claude Code 增强层 | 独立 AI 编程工具 |
| 安装方式 | 插件/手动 | VS Code 扩展 |
| Agent 系统 | 61 个专业 Agent | 单一通用 Agent |
| 安全机制 | AgentShield 完整防护 | 基础权限控制 |
| 适用场景 | 大型项目工程化 | 中小型项目快速开发 |
7.3 什么时候不该用 ECC
ECC 不是银弹。以下场景可能不需要它:
- 个人小项目:几百行代码的脚本,ECC 的规范和审查是「过度工程」
- 快速原型:hackathon 或 PoC 项目,速度优先于质量
- 学习阶段:初学者需要先理解基础,再用工具提效
- 模型能力不足:如果底层模型(Claude)本身能力不够,ECC 也救不了
八、争议与反思:ECC 的「过剩」问题
8.1 社区争议
ECC 功能极多,社区对此有两极化评价:
支持者:「装上 ECC,AI 就从助手变成了团队。以前要三个人 review 的代码,现在 AI 帮你做了。」
反对者:「246 个 Skills?61 个 Agent?我连自己的项目都没搞清楚,AI 还要先学 ECC 的配置?」
8.2 作者的回应
Affaan Mustafa 在 README 中给出了明确建议:
ECC 是一套工具箱,不是必须全部打开的开关。保留你需要的,关闭你不用的,定制你自己的工作流。一个好的工匠不会因为工具箱里有 100 把锤子就焦虑——他只会拿起需要的那一把。
8.3 我的建议
根据项目规模选择 ECC 的使用深度:
- 小型项目(<10K 行):只用 Rules + 基础 Hooks
- 中型项目(10K-100K 行):加上核心 Agent(Planner、CodeReviewer、TDDGuide)
- 大型项目(>100K 行):全量启用,包括 AgentShield 和 Opus 安全模式
九、ECC 背后的技术趋势
9.1 AI 编程从「工具」到「系统」
ECC 的爆火不是偶然。它代表了 AI 编程的一个关键转折:从单点工具到系统化平台。
2024 年:AI 能帮你写代码
2025 年:AI 能帮你做 review
2026 年:AI 能帮你管理整个开发流程
这个趋势的底层逻辑是:模型能力趋于同质化后,真正的竞争转移到了工程化层面。
9.2 Agent 编排成为核心能力
ECC 的 61 个 Agent 不是独立运行的,它们之间有明确的协作关系:
Planner → Architect → TDDGuide → CodeReviewer → SecurityReviewer → DeployAgent
↑ │
└──────────────── 反馈循环 ────────────────────────────────────┘
这种多 Agent 编排模式正在成为 AI 应用的标准范式。无论是 ECC、CrewAI 还是 AutoGen,核心都是:如何让多个专业 Agent 高效协作。
9.3 安全成为一等公民
ECC 的 AgentShield 模块反映了另一个趋势:AI 生成代码的安全性正在成为刚需。
随着 AI 编程工具的普及,一个新问题浮出水面:AI 生成的代码可能包含安全漏洞,而且这些漏洞比人工编写的更难发现(因为审查者默认「AI 写的应该没问题」)。
AgentShield 的三 Agent 联防(红队、蓝队、审计师)模式,很可能成为未来 AI 编程安全的标准方案。
十、总结:AI 编程的竞争,早已不在模型本身
ECC 三个月狂揽 20 万 Star,证明了一个趋势:当大模型趋于同质化,真正拉开差距的,是你如何「调教」AI。
- 普通开发者:让 AI 写代码
- 高阶开发者:用 ECC 把 AI 变成工程团队
- 未来竞争力:Agent 编排 + 工作流 + 安全 + 规范
ECC 不只是一个开源项目,更是一套 AI 时代的工程化开发标准。无论你是学生、个人开发者、团队 Leader,都能通过它把开发效率提升一个量级。
最后给三个建议:
- 不要贪多:从 Rules + 2-3 个核心 Agent 开始,逐步扩展
- 安全第一:AgentShield 必须启用,密钥泄露的成本太高了
- 持续迭代:ECC 更新很快(月涨 5 万 Star 的项目,迭代节奏惊人),定期
git pull保持最新
附录:ECC 常用命令速查
# 基础操作
ecc status # 查看 ECC 状态
ecc doctor # 健康检查
ecc init # 初始化项目配置
# Agent 管理
ecc agents list # 列出所有 Agent
ecc agents list --active # 列出当前活跃的 Agent
ecc agents enable <name> # 启用 Agent
ecc agents disable <name> # 禁用 Agent
# Skills 管理
ecc skills list # 列出所有 Skills
ecc skills list --loaded # 列出已加载的 Skills
ecc skills enable <name> # 启用 Skill
ecc skills disable <name> # 禁用 Skill
ecc skills create <name> # 创建自定义 Skill
# Hooks 管理
ecc hooks list # 列出所有 Hooks
ecc hooks test <name> # 测试 Hook
ecc hooks enable <name> # 启用 Hook
ecc hooks disable <name> # 禁用 Hook
# 安全管理
ecc security status # 查看安全状态
ecc security enable # 启用 AgentShield
ecc security scan # 扫描安全漏洞
ecc security scan --full # 全量安全扫描
ecc security fix --auto # 自动修复安全问题
# MCP 管理
ecc mcp list # 列出所有 MCP 服务器
ecc mcp stats # 查看 MCP 上下文占用
ecc mcp enable <name> # 启用 MCP 服务器
ecc mcp disable <name> # 禁用 MCP 服务器
# 上下文管理
ecc context stats # 查看上下文使用情况
ecc context load # 加载项目上下文
ecc context clear # 清除上下文缓存
# 配置管理
ecc config list # 列出所有配置
ecc config set <key> <value> # 设置配置项
ecc config get <key> # 获取配置项
项目地址:https://github.com/affaan-m/ECC
协议:MIT(免费可商用)
最后更新:2026 年 7 月
如果你觉得这篇文章有帮助,欢迎收藏、转发。AI 编程的时代已经到来,而 ECC 正是这个时代最值得关注的工程化实践之一。