项目快照:affaan-m/ECC,约 240,398 个 Star,36,478 个 Fork;最新推送时间 2026-08-16T06:22:24Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/affaan-m/ECC · https://ecc.tools

项目速览(TL;DR)
ECC 是一个面向智能体执行框架(Agent Harness)的配置与工程实践集合,目标是把技能、钩子、规则、记忆、安全约束和研究优先的开发流程带到 Claude Code、Codex、OpenCode、Cursor、Gemini 等工具中。
| 项目属性 | 已知信息 | 核查来源 |
|---|---|---|
| 仓库 | affaan-m/ECC |
GitHub 元信息 |
| 默认分支 | main |
GitHub 元信息 |
| 主要语言 | JavaScript | GitHub 元信息 |
| npm 包 | ecc-universal,版本 2.2.0 |
package.json |
| Python 子项目 | llm-abstraction,版本 0.1.0 |
pyproject.toml |
| 许可证 | MIT | LICENSE |
| Star / Fork | 240398 / 36478 | 题目所给 GitHub 元信息快照,不代表实时数值 |
该仓库不是资料所能确认的单一常驻服务,也没有已公开的端口、吞吐量、延迟、服务等级协议(SLA)或基准测试数据。它更接近一套跨智能体工具分发的控制面约定,同时包含一个独立的 Python 大语言模型(Large Language Model,LLM)抽象层。
“The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.”
定位与目标用户
ECC 的核心定位是智能体工具链的工程化配置仓库,而不是从资料中可以确认的模型提供商或在线推理平台。它将面向不同宿主工具的目录、技能、命令、规则和模型上下文协议(Model Context Protocol,MCP)约定集中在同一代码库中。
根据 package.json 的描述,项目关注“harness-native agent operating system”,并列出技能、钩子、规则、MCP 约定和操作员控制面模式。这里的“operating system”应理解为项目自身的架构表述,资料没有说明它能够替代 Linux、Windows 或其他通用操作系统。
- 需要为 Codex、OpenCode、Cursor、Gemini、Claude Code 等多个宿主管理一致规则的研发团队。
- 希望把测试驱动开发(Test-Driven Development,TDD)、代码审查和安全要求写入智能体工作流的维护者。
- 需要审阅配置文件、技能文件和提示规则,再决定是否纳入内部代码库的平台工程团队。
- 需要通过 Anthropic、OpenAI 等依赖构建提供商无关 LLM 调用层的 Python 开发者。
核心功能
仓库资料能够确认的能力集中在技能、钩子、规则、命令、MCP 约定和多宿主分发。由于 README 内容不完整,下列机制只描述文件清单和包元数据可以直接支持的事实,不补写未公开的调用接口。
技能与智能体定义
package.json 的发布文件清单包含 .agents/ 与 agents/,关键词中也包含 skills。这表明技能或智能体定义会作为 npm 包内容分发,但资料没有给出单个技能的文件格式、输入字段、输出结构及触发优先级。
在实际接入时,触发条件由宿主工具如何读取这些目录决定。官方仓库未提供完整的加载顺序和冲突处理规则,建议以最新 README 以及相应宿主目录中的说明为准。
命令与操作流程
发布清单包含 commands/ 和 COMMANDS-QUICK-REF.md,说明仓库将命令定义与快速参考文档一并交付。命令接受哪些参数、是否修改工作区、是否调用外部模型,不能从现有资料中核实。
命令是否触发应由使用者在目标工具内明确发起,输出则受对应命令定义和宿主行为控制。接入前应逐项审查命令文件,尤其要确认文件写入、网络访问和外部进程执行范围。
钩子、规则与控制面
package.json 明确使用 hooks、rules 和 operator control-plane patterns 描述项目。钩子可用于把规则接入智能体生命周期,但现有资料没有公布具体事件名称、执行时机、失败重试策略或返回码。
根据本文作者的经验判断,这类配置最重要的接入步骤不是直接复制全部目录,而是先确认宿主实际识别哪些文件,再对有副作用的规则进行最小权限审查。该判断属于工程建议,不是仓库承诺的行为。
MCP 约定
仓库发布 .mcp.json,包描述也将 MCP conventions 列为组成部分。该文件可作为 MCP 相关配置入口,但资料没有提供其中的服务器名称、启动命令、传输方式、鉴权字段或超时配置。
因此不能据此认定 ECC 自带某个可运行的 MCP 服务。输入、输出与依赖组件应以仓库当前版本的 .mcp.json 内容及各服务端文档为准。
系统架构与关键模块
ECC 采用多宿主目录与通用内容目录并存的布局,npm 包负责分发这些资源,Python 配置则定义独立的 LLM 抽象子项目。现有资料未给出正式架构图,以下结构仅来自 package.json 的发布清单和 pyproject.toml。
| 路径或模块 | 资料可确认的角色 | 边界说明 |
|---|---|---|
.agents/、agents/ |
作为 npm 包内容发布的智能体相关目录 | 具体文件模式未提供 |
commands/ |
命令内容目录 | 参数与执行副作用未提供 |
.claude-plugin/ |
Claude 相关插件目录 | 安装过程与兼容版本未提供 |
.codex/、.codex-plugin/ |
Codex 相关配置或插件目录 | 加载协议未提供 |
.cursor/、.opencode/、.gemini/ |
不同宿主工具的专用目录 | 宿主最低版本未提供 |
.hermes/、.kimi/、.pi/ |
随 npm 包发布的宿主专用目录 | 资料未解释目录内部协议 |
.openclaw/、.qwen/、.zed/ |
随 npm 包发布的工具适配内容 | 启用步骤未提供 |
.mcp.json |
MCP 约定或连接配置文件 | 具体服务器配置未提供 |
src/llm |
Python wheel 的包路径 | 公开 API 签名未提供 |
llm.cli.selector:main |
llm-select 命令的入口点 |
参数和交互方式未提供 |
仓库的 GitHub 主要语言为 JavaScript,但 pyproject.toml 表明其中同时存在 Python 代码。两套版本号分别属于 npm 包和 Python 项目,不能将 2.2.0 与 0.1.0 视为同一个发布序列。
依赖与运行环境
能够确定的运行环境要求来自 Python 项目配置:Python 版本必须不低于 3.11。JavaScript 侧没有提供 engines 字段,因此无法从给定资料确认 Node.js 或 npm 的最低版本。
anthropic>=0.120.2:Python 运行时依赖。openai>=1.30.0:Python 运行时依赖。pytest>=9.1.1:开发与测试依赖。pytest-asyncio>=1.4.0、pytest-cov>=7.1.0、pytest-mock>=3.15.1:异步测试、覆盖率和模拟支持。ruff>=0.16.1、mypy>=2.3.0:代码检查和静态类型检查依赖。pyyaml>=6.0.3:开发可选依赖。hatchling:Python 构建后端依赖,资料未锁定其版本。
资料没有提供受支持的操作系统、CPU 架构、内存下限、磁盘需求、容器镜像或 GPU 要求。若部署环境受企业基线约束,应在目标操作系统上执行测试套件,并以仓库最新锁文件或发布说明核对依赖。
快速开始:安装、运行与验证
现有资料没有给出完整的终端安装教程,也没有确认 npm 侧可执行入口。下面的最小闭环只验证仓库中由 pyproject.toml 声明的 Python 包与测试配置,不代表已经启用了任一智能体宿主。
第一步:获取代码并检查 Python
git clone https://github.com/affaan-m/ECC.git
cd ECC
python --versionpython --version 的结果需要满足 Python 3.11 或更高版本,这是 pyproject.toml 中的明确要求。Git 客户端和 Python 安装方式未在仓库资料中指定。
第二步:安装开发依赖
python -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[dev]"以上命令在本地虚拟环境中以可编辑模式安装当前 Python 项目及 dev 可选依赖。Windows 虚拟环境激活命令未在资料中提供,建议根据所用 Python 发行版的文档调整。
第三步:运行测试并验证包
python -m pytest
python -c "import llm; print(llm.__file__)"pytest 会按照配置查找 tests 目录,并启用自动异步模式;第二条命令验证 src/llm 对应的包可以被解释器导入。仓库资料没有给出预期测试数量和覆盖率阈值,因此不应预设固定的通过数或覆盖率百分比。
npm 发布内容的无安装检查
npm pack --dry-run该命令用于查看当前 package.json 将纳入包的文件,不会向 npm 发布内容。Node.js 与 npm 版本要求未提供;若命令因环境版本失败,应先查阅最新 README,而不是自行推断兼容范围。
配置说明
配置事实分别来自 package.json、pyproject.toml 和 .env.example 的可见片段。环境变量示例被截断,除 Anthropic 分类标题外没有可核查的变量名,因此不在表中虚构 API Key 字段。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
project.name |
字符串 | llm-abstraction |
定义 Python 项目名称 |
project.version |
字符串 | 0.1.0 |
定义 Python 子项目版本 |
project.requires-python |
版本约束字符串 | >=3.11 |
限制可使用的 Python 版本 |
project.dependencies |
字符串数组 | anthropic>=0.120.2、openai>=1.30.0 |
声明 Python 运行时依赖 |
project.optional-dependencies.dev |
字符串数组 | pytest、pytest-asyncio、pytest-cov、pytest-mock、ruff、mypy、pyyaml 的给定版本下限 |
定义测试、覆盖率、检查和开发辅助依赖 |
project.scripts.llm-select |
字符串 | llm.cli.selector:main |
注册 Python 命令行入口 |
tool.pytest.ini_options.testpaths |
字符串数组 | ["tests"] |
指定 pytest 测试搜索路径 |
tool.pytest.ini_options.asyncio_mode |
字符串 | auto |
设置 pytest 异步运行模式 |
tool.coverage.run.branch |
布尔值 | true |
启用分支覆盖率统计 |
tool.ruff.target-version |
字符串 | 未提供 | 资料在该字段处截断,无法核实目标版本 |
package.name |
字符串 | ecc-universal |
定义 npm 包名称 |
package.version |
字符串 | 2.2.0 |
定义 npm 包版本 |
publishConfig.access |
字符串 | public |
声明 npm 发布访问级别为公开 |
环境变量文件
.env.example 明确要求复制为 .env 并填入真实值,同时警告不得把 .env 提交到版本控制。给定片段没有显示任何完整环境变量名,官方仓库未提供该信息,建议以最新 .env.example 为准。
cp .env.example .env
# 使用本地编辑器填写实际值
# 不要执行:git add .env真实凭据应填入本地 .env,而不是写入命令历史、源代码或本文示例。若配置需要 API Key,应使用 <你的-API-KEY> 作为文档占位符,并通过团队批准的密钥管理机制注入真实值。
进阶用法
进阶接入的重点是按宿主拆分配置并建立受控升级流程,而不是同时启用发布包中的所有目录。由于资料没有给出宿主版本矩阵和冲突规则,应采用逐个宿主验证的方式。
按目标宿主选择目录
- 先确定团队实际使用的宿主,例如 Codex、Cursor、OpenCode、Gemini 或 Claude Code。
- 只审查与该宿主对应的目录,以及通用的
agents/、commands/和.mcp.json。 - 记录文件复制、符号链接或包安装带来的变更;仓库资料没有指定应采用哪一种部署方式。
- 在隔离测试仓库中验证命令、规则和钩子的副作用,再决定是否进入生产代码库。
使用 Python 提供商抽象层
llm-abstraction 的描述是“Provider-agnostic LLM abstraction layer”,并依赖 Anthropic 与 OpenAI Python 包。该描述可以确认其设计目标,但公开类名、方法签名、模型选择参数和响应对象均未出现在给定资料中。
llm-select 命令入口确实存在,但没有可核查的参数列表,因此本文不提供未经确认的调用选项。安装后可先在隔离环境审查 src/llm/cli/selector 的当前实现,再依据最新 README 运行。
将规则纳入代码审查
根据本文作者的经验判断,团队可以把宿主配置目录视为基础设施代码,对每次更新执行差异审查。审查内容应覆盖新增命令、外部网络目标、文件写入范围、MCP 服务启动命令和环境变量读取行为。
这套流程不依赖 ECC 提供额外服务,也不表示仓库已经内置审批系统。审批责任仍属于采用该项目的组织。
测试、质量门禁与变更验证
Python 配置已经提供测试路径、异步测试模式、覆盖率来源和若干排除规则,可用于建立基础质量门禁。资料没有给出持续集成(Continuous Integration,CI)的完整工作流结果,也没有规定最低覆盖率。
- 测试目录:
tests。 - 异步模式:
auto。 - 覆盖率源目录:
src/llm。 - 分支覆盖率:已启用。
- 忽略警告:
DeprecationWarning。 - 覆盖率排除项包括
pragma: no cover、if TYPE_CHECKING:和raise NotImplementedError。
python -m pytest
python -m pytest --cov=src/llm --cov-branch
python -m ruff check src tests
python -m mypy src这些工具名称和相关依赖均来自 pyproject.toml。具体的 mypy 配置、Ruff 完整目标版本和仓库要求的通过标准未完整提供,因此命令结果应结合当前分支配置解释。
可观测性与运维
给定资料没有说明 ECC 内置日志、指标、链路追踪、健康检查、告警或遥测上报。运维侧能够直接执行的是版本固定、配置差异审计、测试验证和凭据隔离。
- 版本记录:分别记录 npm 包版本、Python 子项目版本和 Git 提交,不要只保留一个“ECC 版本”字段。
- 变更追踪:升级前比较宿主目录、
commands/、agents/与.mcp.json的差异。 - 失败定位:区分宿主加载失败、Python 依赖安装失败、模型提供商认证失败和测试失败。
- 凭据审计:检查
.env是否被忽略,并确认日志中没有输出真实密钥。 - 发布核对:使用
npm pack --dry-run查看 npm 包文件范围,避免把未预期内容带入内部制品库。
官方仓库未提供日志字段、指标名称、追踪协议、数据保留周期和运维仪表盘,建议以最新 README 为准。任何生产监控方案都应由部署方结合实际宿主与模型提供商独立设计。
安全与合规边界
该项目涉及代码智能体、命令、钩子、外部模型 API、记忆和安全规则,可能接触源代码、提示文本、终端输出及环境变量。使用范围应限定在组织有权处理的代码库、账号、模型端点和基础设施中。
- 授权边界:只在自有环境或已取得明确授权的项目中运行命令、钩子和智能体,不把配置用于未授权目标。
- 最小权限:宿主进程不应获得超出任务所需的文件系统、网络、云账号和代码托管权限。
- 隐私边界:向 Anthropic、OpenAI 或其他端点发送内容前,应确认源代码、个人信息、日志和业务数据是否允许离开当前信任域。
- 凭据保护:遵循
.env.example的注释,不提交.env;密钥泄露后应由对应提供商控制台执行撤销和轮换。 - MCP 审查:启用
.mcp.json中的任何服务前,核对启动命令、网络目标、数据访问范围和第三方许可证。 - 命令隔离:首次运行未知命令时使用测试仓库和低权限账号,不向其开放生产凭据。
资料没有提供安全认证、合规报告、漏洞响应时限、数据处理协议、数据驻留承诺或沙箱保证。不能把 MIT 许可证、项目中的“security”关键词或规则文件等同于合规认证,也不能据此推定项目满足特定行业监管要求。
许可证与商用条款
ECC 使用 MIT License,版权声明为“Copyright (c) 2026 Affaan Mustafa”。该许可证允许获得软件副本的人使用、复制、修改、合并、发布、分发、再许可和销售软件副本,因此允许商用。
- 在软件的所有副本或重要部分中保留原版权声明和许可声明。
- 许可证不要求修改后的项目必须采用相同许可证公开源代码。
- 软件按“原样”提供,不包含明示或默示担保。
- 作者或版权持有人不对因软件或其使用产生的索赔、损害及其他责任负责。
MIT 条款只覆盖仓库中由相应版权持有人许可的内容。外部模型服务、依赖包、品牌名称、用户数据和接入的 MCP 服务仍受各自条款约束;涉及再分发或商业交付时,以仓库 LICENSE 和实际依赖许可证为准。
局限性与已知限制
当前资料足以确认项目形态、部分目录和构建配置,但不足以复现全部智能体工作流。部署决策不能建立在未公开的性能、兼容性或安全保证之上。
- README 内容片段不完整,缺少正式安装、卸载、升级和回滚步骤。
- 没有提供 Node.js、npm、Claude Code、Codex、Cursor、OpenCode 或 Gemini 的最低兼容版本。
- 没有给出技能、命令、钩子和规则的完整数据结构及执行顺序。
- 没有给出 MCP 服务端清单、端口、传输协议和鉴权方式。
- 没有提供吞吐量、时延、并发数、上下文规模或资源占用基准。
- 没有提供生产可用性等级、SLA、支持期限或商业支持承诺。
.env.example片段被截断,无法核实完整环境变量名称。pyproject.toml在 Ruff 配置处截断,不能确认其完整检查规则。- Python 项目分类为
Development Status :: 3 - Alpha,该分类只对应 Python 包元数据,不应扩展解释为整个仓库所有内容的成熟度评级。
适合谁
是否采用 ECC,应依据宿主数量、审查能力、Python 环境和数据边界判断,而不是只依据 Star 数量。以下信号满足三项以上时,可以进入隔离验证阶段。
- 团队同时维护至少两种资料中列出的智能体宿主,并希望集中审查规则与命令。
- 团队能够逐项审阅
.cursor/、.codex/、.opencode/等目录,而不是直接把全部配置复制到生产仓库。 - Python 环境已达到
3.11或更高版本,并能管理 Anthropic 与 OpenAI SDK 依赖。 - 研发流程已包含测试、代码审查、静态检查和凭据管理,可以承接配置更新带来的治理工作。
- 组织允许在完成数据分类和供应商审查后使用外部模型 API,或者只启用不涉及敏感数据的仓库内容。
不适合谁
ECC 不应被当作资料未承诺的托管平台、兼容层保证或合规产品。存在以下任一硬性条件时,应先寻找满足该条件的明确方案,或等待仓库提供可核查信息。
- 需要官方承诺的 SLA、支持时限、故障赔偿或全天候商业支持,但当前资料没有相应合同信息。
- 要求明确的宿主版本矩阵、长期支持周期和自动回滚机制,且不能自行完成兼容性测试。
- 环境禁止向 Anthropic、OpenAI 等外部服务传输任何代码,而项目接入方案又无法在审查后关闭相关调用。
- 生产系统要求现成的指标、追踪、健康检查和告警接口,但团队没有能力自行补齐可观测性。
- 只能使用低于 Python
3.11的运行环境,却需要部署仓库中的llm-abstraction子项目。
常见问题与排查(FAQ / Troubleshooting)
排查时应先区分 npm 分发层、Python 子项目、宿主配置和外部模型服务。四者的版本及失败原因并不相同。
为什么 GitHub 显示 JavaScript,仓库却要求 Python 3.11?
JavaScript 是题目所给 GitHub 主要语言,Python 要求则来自仓库中的独立 pyproject.toml。只有安装或运行 llm-abstraction 时,才需要遵守其中的 Python 版本约束。
pip install -e ".[dev]" 安装失败怎么办?
先运行 python --version,确认版本不低于 3.11,再检查失败是否发生在 anthropic、openai 或开发依赖的解析阶段。代理、证书和包索引配置未在官方资料中提供,应按照组织内部 Python 包管理策略排查。
llm-select 应该传入哪些参数?
资料只确认入口为 llm.cli.selector:main,没有给出参数、交互格式和退出码。官方仓库未提供该信息,建议以最新 README 和当前源代码为准,不应把未验证参数写入自动化脚本。
是否需要同时复制所有隐藏目录?
资料没有要求这样做。根据本文作者的经验判断,应只选择与实际宿主匹配的目录,并在测试仓库中验证其加载行为,避免不同宿主配置互相干扰。
项目是否自带 MCP 服务器?
现有资料只能确认 npm 包包含 .mcp.json,不能确认其中是否定义可直接运行的服务器。服务器名称、命令、端口和鉴权配置均应查看当前文件,本文不作推断。
为什么测试通过后宿主仍未加载配置?
pytest 配置面向 src/llm Python 子项目,测试通过不等于 Cursor、Codex、OpenCode 或其他宿主已正确读取各自目录。应分别检查宿主版本、配置路径、文件格式和宿主日志;官方仓库未提供统一日志位置。
Star 和 Fork 数据能否用于容量规划?
不能。240398 个 Star 与 36478 个 Fork 是题目提供的仓库元信息快照,只反映代码托管平台上的项目关注与派生数量,不构成性能、稳定性、活跃用户数或生产规模证明。
可以把 .env 提交到私有仓库吗?
.env.example 的原文注释明确写明“NEVER commit .env to version control”,因此不应提交。私有仓库仍然存在成员误授权、日志泄露、镜像同步和历史记录残留风险。
采用建议与验证清单
在正式纳入团队工作流前,应把 ECC 当作需要审计的配置与代码依赖,而不是可信边界本身。验证结果应关联到具体 Git 提交、npm 版本和 Python 子项目版本。
- 确认目标提交位于预期的
main分支或内部固定分支。 - 审阅 npm 打包文件,确认只包含团队批准的目录。
- 在 Python
3.11或更高版本环境执行测试、覆盖率和静态检查。 - 审阅所有将被启用的命令、钩子、规则和 MCP 配置。
- 使用无生产数据、无生产凭据的测试仓库验证宿主加载行为。
- 确认外部模型请求符合组织的数据分类、保留和跨境传输要求。
- 制定升级差异审查、凭据轮换、禁用与回滚流程。
- 在内部文档中记录资料未提供的兼容性结论,并注明其来自团队测试,而非官方承诺。
项目地址与资源
以下链接均来自题目所给仓库资料,可用于核对最新代码、问题记录、文档和仓库趋势信息。版本、配置与兼容性发生冲突时,应以仓库当前文件和 LICENSE 为准。



