ai-memory社区贡献指南:从添加新Agent支持开始
2026/9/16 19:05:44 网站建设 项目流程

ai-memory社区贡献指南:从添加新Agent支持开始

【免费下载链接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors项目地址: https://gitcode.com/GitHub_Trending/ai/ai-memory

ai-memory是一个用 Rust 编写的开源项目,为 AI 编程 CLI 提供长期记忆,让 Claude Code、Codex、Cursor 等 20 多种 Agent 在同一个项目间无缝交接(handoff)——退出 Claude Code,换到 Codex 继续工作,不用重新解释架构和失败尝试。🎯 本指南面向想给这个热门开源项目提第一个 PR 的贡献者,带你从最典型、最友好的切入方式——添加新 Agent 支持——完整走一遍社区贡献流程。

贡献前准备:开发环境搭建

ai-memory 对贡献者非常友好:构建完全自包含(SQLite 通过rusqlitebundled 打包,libgit2通过 vendored 方式引入),只需要一个标准 C 工具链,不需要额外安装系统库。📦

  1. 克隆仓库:git clone https://gitcode.com/GitHub_Trending/ai/ai-memory
  2. 构建并跑全量测试:cargo build --workspace然后cargo test --workspace --all-targets
  3. 注意 Rust 版本要求1.95,已由 rust-toolchain.toml 锁定,rustup 会自动切换

日常开发建议安装预推送钩子,它会在每次git push前自动跑完整测试层:

scripts/install-git-hooks.sh

详细开发规范见 CONTRIBUTING.md,完整贡献者规则集中在 AGENTS.md(单一权威规则文件,CLAUDE.md只是指向它的指针)。

添加新 Agent 支持:完整五步路径

当你想支持一个还没有的 Agent(比如某款新发布的编程 CLI),参考最近的真实案例Kiro CLI(迁移版本 V45),完整路径如下:

第 1 步:在 AgentKind 枚举中注册新 Agent

所有 Agent 的身份都收敛在一个类型上:AgentKind。你需要同步改动四处(缺一不可):

  • 枚举本体:新增变体(如KiroCli)并写一行 doc 注释;
  • AgentKind::ALL常量数组——它驱动"数据库约束覆盖全部 Agent"的守护测试,历史上 Zero 集成就因漏掉迁移只被线上测试抓出(源码注释里明确写着这个教训);
  • as_str():返回 kebab-case 的线上传输字符串(如"kiro-cli");
  • from_wire():解析别名(如"claude-code" | "claude_code" | "claude"都映射到 Claude Code)。

第 2 步:新增 SQLite 迁移脚本,扩展 agent_kind 约束

数据库的sessions.agent_kind列有 CHECK 约束,必须为新 Agent 加值。铁律:永远新增迁移文件,绝不修改已发布的迁移。

参考 V45__sessions_kiro_cli_agent_kind.sql 的模板:用sessions_new临时表重建 schema、把kiro-cli加进 CHECK 值列表、原样回迁全部行和索引、重建 scope 配对触发器。文件名按V<序号>__描述.sql递增,放在 crates/ai-memory-store/migrations/。

第 3 步:编写生命周期 hooks 脚本

每个 Agent 一个目录,提供 shell 和 PowerShell 双版本脚本,参考 hooks/kiro-cli/ 的结构:

  • session-start.sh / .ps1—— 会话开始,注入上一轮的交接(handoff)
  • user-prompt-submit.shpre-tool-use.shpost-tool-use.sh—— 采集提示词与工具调用
  • stop.sh—— 轮次结束
  • (部分 Agent 还有pre-compact.shsession-end.shsubagent-start.sh等)

脚本统一调用 hooks/lib/ai-memory-hook.ps1 与 hooks/_lib.sh 公共库,把观察结果 POST 到服务端/hook接口。隐私脱敏由服务端的类型化边界(Sanitized构造)统一完成,脚本层不需要关心。

第 4 步:打通 CLI 的安装命令

在 crates/ai-memory-cli/src/cli.rs 中为新 Agent 添加两个选择项:

  • --client <name>(MCP 注册,写入该 Agent 的mcp.json等配置文件)
  • --agent <name>(hooks 安装,把上一步的脚本部署到 Agent 的配置目录)

实现可参考 install_hooks.rs 与 install_mcp.rs 中已有 Agent 的分发逻辑。完成后,用户只需两条命令即可接入新 Agent:

ai-memory install-mcp --client <new-agent> --apply ai-memory install-hooks --agent <new-agent> --apply

第 5 步:更新文档与支持矩阵(合并门槛)

⚠️ 这一步最容易被忘记,却被视为blocking

  1. 在 CHANGELOG.md 的## [Unreleased]下按### Added加一条过去时描述、尾部带 PR 编号的条目;
  2. 更新 README 支持矩阵和 docs/support-matrix.md 的对应行,写清安装命令、限制与备注(比如"无真正 SessionEnd,需用finalize-session");
  3. 为新 Agent 添加回归测试——解析器、ID 推导类改动尤其需要。

通过 CI 必过的质量门禁

提交前在本地跑完以下门禁,CI 与发布流程会原样复查:

门禁命令检查内容
格式cargo fmt --all -- --check代码格式统一
空白git diff --check无尾随空白等
静态检查cargo clippy --workspace --all-targets -- -D warnings零警告
全量测试cargo test --workspace --all-targets所有 crate 全部测试
依赖策略cargo deny check许可证与安全策略

日常迭代不必每次都跑全量:cargo t(nextest 别名)约 20 秒跑完常规层,慢速/压力测试(slowstress命名的模块)只由预推送钩子和 CI 执行。💡

进阶方向:从 Hooks 支持到 Managed Workstream

如果你的目标不止"能采集",而是让ai-memory run <agent>直接托管新 Agent 的原生会话(精确恢复、只读导入转录、启动时注入上下文),项目提供了专门的贡献协议:docs/managed-harness-contributions.md。它定义了七道要求——原生契约确认、刻意注册(含AgentKind::ALL与迁移)、argv 保真、只读发现与导出、"先交付上下文再确认"、workstream 不变量,以及必过的测试清单(包括 scripts/managed-workstream-acceptance.sh 里的确定性假进程验收)。

新接入的 Agent 最终会出现在 Web 视图中,供团队浏览每个项目的记忆页面:

小结:你的第一个 PR 清单

  • ✅ 环境:Rust 1.95 +scripts/install-git-hooks.sh
  • ✅ 五步:AgentKind枚举 → 新迁移 → hooks 脚本 → CLI 安装命令 → 文档 + CHANGELOG
  • ✅ 门禁:fmt / diff / clippy / 全量测试 / cargo deny
  • ✅ 提交归属:推送前检查每个 commit 的邮箱(git log --format='%h %an <%ae>'),避免 PR 合并后追溯修正
  • ✅ 语义化版本:新增 Agent 属于minor级附加变更,CHANGELOG 条目放在### Added

从"给支持矩阵加一行"开始,就是参与 ai-memory 社区最实际的第一步。祝你的第一个 PR 顺利合并!🚀

【免费下载链接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors项目地址: https://gitcode.com/GitHub_Trending/ai/ai-memory

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询