编程 Everything Claude Code(ECC)深度解析:20万Star的AI编程操作系统如何用61个Agent+246个Skills把Claude Code变成虚拟开发团队——从黑客松冠军到工程化标配的完整实战指南

2026-07-06 16:16:15 +0800 CST views 14

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 的核心数据:

指标数值
Star200,000+
Fork28,000+
Agent61 个
Skills246 个
Commands76 个斜杠命令
支持语言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 的重构工作流:

  1. Architect Agent 分析现有代码结构,生成重构方案
  2. TDDGuide Agent 为现有功能补充测试用例(确保重构不破坏功能)
  3. Planner Agent 将重构拆分为多个小步骤
  4. 每个步骤执行后自动运行测试验证
  5. 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         │
# └──────────────────────────────────────┘

优化建议:

  1. 禁用不需要的 Skills

    # 查看已加载的 Skills
    ecc skills list --loaded
    
    # 禁用不需要的
    ecc skills disable docker k8s aws
    
  2. 精简 MCP 工具

    # 只启用项目需要的 MCP
    ecc mcp enable github postgres
    ecc mcp disable docker k8s redis
    
  3. 使用 --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

维度ECCSuperpowers
Star 数200K+199K+
定位AI 编程操作系统AI 编程方法论
Agent 数量61 个按场景动态生成
Skills 数量246 个无固定 Skills
安全模块AgentShield(完整)无专门安全模块
记忆系统.instinct 跨会话持久化无持久记忆
适用工具Claude Code/Cursor/CodexClaude Code 为主

7.2 ECC vs Cline

维度ECCCline
定位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,都能通过它把开发效率提升一个量级。

最后给三个建议:

  1. 不要贪多:从 Rules + 2-3 个核心 Agent 开始,逐步扩展
  2. 安全第一:AgentShield 必须启用,密钥泄露的成本太高了
  3. 持续迭代: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 正是这个时代最值得关注的工程化实践之一。

推荐文章

给Go程序加个沙箱:go-landlock
2026-07-03 06:32:08 +0800 CST
一键压缩图片代码
2024-11-19 00:41:25 +0800 CST
宝塔面板 Nginx 服务管理命令
2024-11-18 17:26:26 +0800 CST
程序员茄子在线接单