跨执行载体架构¶
ECC 是可复用的工作流层。执行载体是执行面。
目标是将智能体工作中持久化的部分保存在一个仓库中:
- 技能
- 规则与说明
- 在执行载体支持的地方使用钩子
- MCP 配置
- 安装清单
- 会话与编排模式
- 持久的、执行载体无关的记忆文档
Claude Code、Codex、OpenCode、Cursor、Gemini 以及未来的执行载体应在边缘适配这些资产,而不是为每个工具要求一套新的工作流模型。
如需查看面向操作者的支持矩阵和记分卡工作流,请参阅
执行载体适配器合规矩阵。
如需查看全栈平台框架和产品集成循环,请参阅
ECC 平台价值循环。
可移植性模型¶
| 界面 | 共享源 | 执行载体适配器 | 当前状态 |
|---|---|---|---|
| 技能 | skills/*/SKILL.md |
Claude 插件、Codex 插件、.agents/skills、Cursor 技能副本、OpenCode 插件/配置 |
受支持,采用特定执行载体打包 |
| 规则与说明 | rules/、AGENTS.md、翻译后的文档 |
Claude 规则安装、Codex AGENTS.md、Cursor 规则、OpenCode 说明 |
受支持,但各执行载体之间不完全一致 |
| 钩子 | hooks/hooks.json、scripts/hooks/ |
Claude 原生钩子、OpenCode 插件事件、Cursor 钩子适配器 | 在 Claude/OpenCode/Cursor 中由钩子支撑;在 Codex 中由说明支撑 |
| MCP | .mcp.json、mcp-configs/ |
按执行载体导入原生 MCP 配置 | 在执行载体暴露 MCP 的地方受支持 |
| 命令 | commands/、CLI 脚本 |
Claude 斜杠命令、兼容性垫片、CLI 入口点 | 受支持,但命令语义存在差异 |
| 记忆 | .ecc/memory/、~/.ecc/memory/ |
ecc memory CLI 或可选启用的 ecc-memory-mcp stdio 服务器 |
受支持,需显式召回且写入为未审核状态 |
| 会话 | ecc2/、会话适配器、编排脚本 |
TUI/守护进程、tmux/worktree 编排、特定执行载体运行器 | Alpha |
原样迁移的内容¶
SKILL.md 是最可移植的单元。
一个好的 ECC 技能应当:
- 使用带有
name、description和origin的 YAML frontmatter - 描述何时使用该技能
- 说明所需工具或连接器,而不嵌入密钥
- 保持示例为仓库相对路径或通用示例
- 避免假设仅限执行载体的命令,除非该部分已明确标注
同一个源技能可以安装到多个执行载体中,因为它主要由说明、约束和工作流形态组成。
需要适配的内容¶
每个执行载体都有不同的加载和强制执行行为:
- Claude Code 加载插件资产,并具有原生钩子执行能力。
- Codex 读取
AGENTS.md、插件元数据、技能和 MCP 配置,但钩子一致性由说明驱动。 - OpenCode 具有插件/事件系统,可以通过适配层复用 ECC 钩子逻辑。
- Cursor 使用自己的规则和钩子布局,因此 ECC 在
.cursor/下维护翻译后的界面。 - Gemini 支持以安装/说明为导向,应将其视为兼容性界面,而非完整的钩子一致性。
适配器应保持轻量。共享行为应放在 skills/、rules/、hooks/、scripts/ 和 mcp-configs/ 中。
共享记忆契约¶
该契约的会话快照部分(ecc.session.v1)在
session-adapter-contract.md 中定义。
ECC Memory Vault 是 Claude、Codex、Hermes、Cursor、OpenCode 和其他智能体的通用知识传递界面。它在三个作用域中存储可移植的
ecc.memory.v1 Markdown 文档:
- 项目:
<repo>/.ecc/memory/project/ - 团队:
<repo>/.ecc/memory/team/ - 用户:
~/.ecc/memory/
每个执行载体必须使用相同的仓库工作目录,或相同的
ECC_MEMORY_PROJECT_ROOT 和 ECC_MEMORY_USER_ROOT 覆盖值。确定性的
ecc memory CLI 是基线接口。支持 MCP 的执行载体也可以改为启动
ecc-memory-mcp,并使用 memory_save、memory_search、
memory_read 和 memory_doctor。常规搜索召回在 project 和 team 中仅召回活动条目;直接按 ID 读取可以检查非活动条目,而
user 必须显式请求。CLI 目标标志是调用方选择的路由过滤器,而不是授权边界。
MCP 服务器是可选启用的。其参考条目位于
mcp-configs/mcp-servers.json;它被有意从默认
.mcp.json 中省略,以免安装过程静默获得可写的上下文界面或承担其工具模式成本。每个 MCP 进程都需要小写的
ECC_MEMORY_HARNESS;这个绑定到服务器的身份提供源执行载体和目标过滤器,因此工具调用方无法选择另一个身份。除非操作者使用
ECC_MEMORY_ALLOW_USER_SCOPE=1 启动进程,否则用户作用域的 MCP 访问仍被阻止。
信任边界在所有适配器中保持一致:
- 所有首次发布的 vault 条目仅可创建,且始终为
unreviewed; - 召回的记忆是数据,而不是可执行指令;
- 已知密钥形状的写入会作为尽力而为的最后防线被拒绝,并且读取器不跟随符号链接;
- 如果 vault 的保护性
.gitignore被修改,项目作用域写入将停止; - 人工接受会将知识提升为受治理的仓库工件;它永远不会将记忆 frontmatter 变成自我声明的批准;
- 活动执行状态保留在 GitHub 或 Linear 中,而不仅仅在记忆中。
skills/unified-memory/SKILL.md 拥有此工作流。Codex 和 Cursor 在
.agents/skills/ 和 .cursor/skills/ 下接收行为一致的打包副本;Hermes 可以导入规范技能。没有任何执行载体拥有单独的权威记忆存储。
Hermes 边界¶
Hermes 不是公开的 ECC 运行时。
Hermes 是一个可以消费 ECC 资产的操作者外壳:
- 将选定的 ECC 技能导入 Hermes 技能目录
- 使用 ECC MCP 约定进行工具访问
- 通过可复用的 ECC 模式路由聊天、CLI、cron 和交接工作流
- 将重复的本地操作者工作提炼回脱敏的 ECC 技能
公共仓库应提供可复用模式,而不是本地 Hermes 状态。
应包含:
- 已脱敏的配置文档
- 相对于仓库的演示提示词
- 通用操作员技能
- 不依赖私有凭据的示例
不应包含:
- OAuth 令牌或 API 密钥
- 原始
~/.hermes导出 - 个人工作区记忆
- 私有数据集
- 未经审查的仅限本地的自动化包
实际示例¶
在多个框架中使用 skills/hermes-imports/SKILL.md 作为相同的技能源。
工作流如下:
- 在
skills/hermes-imports/SKILL.md中一次性编写持久行为。 - 将密钥、本地路径和原始操作员记忆排除在技能之外。
- 让每个框架自行适配技能的加载方式。
- 分别测试源技能和面向框架的元数据。
Claude Code 通过 Claude 插件接口获取该技能,并可以原生执行相关钩子。
Codex 读取仓库说明、.codex-plugin/plugin.json 和 MCP 参考配置。相同的技能源仍然描述该工作流,但除非 Codex 添加原生钩子接口,否则钩子一致性由指令支撑。
OpenCode 通过 OpenCode 包/插件接口获取该技能。事件处理可以通过适配层复用 ECC 钩子逻辑,同时技能文本保持不变。
如果某项更改需要编辑同一工作流的三个框架副本,则共享源的位置不正确。请将工作流放回 skills/,然后仅在框架边缘适配加载、事件形状或命令路由。
当前与后续¶
当前支持:
skills/中的共享技能源- Claude Code 插件打包
- Codex 插件元数据和 MCP 参考配置
- OpenCode 包/插件接口
- Cursor 适配的规则、钩子和技能
- 通过 CLI 和可选 MCP 适配器实现的以文件优先的跨框架记忆
- 作为 alpha Rust 控制平面的
ecc2/
仍在完善:
- 所有框架之间的精确钩子一致性
- 自动将技能同步到 Hermes
ecc2/的发布打包- 跨框架会话恢复语义
- 可选的语义重排序和受治理的记忆晋升工作流
- 完整的平台闭环,外部产品将技能包、 受控 API、评估和案例研究贡献回 ECC
新工作规则¶
添加工作流时,先将持久行为放入 ECC。
仅将框架特定文件用于:
- 加载共享资产
- 适配事件形状
- 映射命令名称
- 处理平台限制
如果某工作流仅在一个框架中可用,请直接记录该边界。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC