Antigravity CLI 设置¶
为 Antigravity CLI 赋予跨会话的持久记忆。
Antigravity CLI(agy)是 Google 推出的 Gemini CLI 独立继任者——它复用 Gemini CLI 的 ~/.gemini/ 配置树,并且据 Google 称,“保留了 Gemini CLI 最关键的功能:Agent Skills、Hooks、Subagents 和 Extensions。”Claude-mem 通过捕获观察、决策和模式来改变跨会话的行为——然后将相关上下文注入每个新会话。
Info
工作原理: Claude-mem 将生命周期钩子安装到 Antigravity CLI 的 ~/.gemini/config/hooks.json 中,用于捕获工具使用、代理响应和会话事件。本地 Worker Service 提取语义观察,并在会话开始时通过 GEMINI.md、MCP 服务器和规则文件注入相关历史。
Note
Antigravity CLI 与 Antigravity 桌面 IDE(antigravity 二进制文件)是不同的产品——两者共享相同的 ~/.gemini/antigravity 命名空间,但 CLI 自身的二进制文件是 agy。检测会检查你的 PATH 中是否有 agy(或已存在的 ~/.gemini/antigravity 目录)。
前提条件¶
- 已安装 Antigravity CLI(
agy)——curl -fsSL https://antigravity.google/cli/install.sh | bash - Node.js 18+
~/.gemini目录必须存在(由 Antigravity CLI / Gemini CLI 在首次运行时创建)
安装¶
步骤 1:安装 claude-mem¶
安装程序将:
1. 自动检测 Antigravity CLI(检查 PATH 中是否有 agy,或已存在的 ~/.gemini/antigravity 目录)
2. 将 Antigravity CLI 生命周期钩子安装到 ~/.gemini/config/hooks.json
3. 将上下文配置注入到 ~/.gemini/GEMINI.md
4. 在 ~/.gemini/antigravity/mcp_config.json 和 ~/.gemini/config/mcp_config.json 中注册 claude-mem 的 MCP 服务器
5. 将规则/上下文占位符写入 ~/.agents/rules/claude-mem-context.md
6. 启动 Worker Service
步骤 2:配置 AI 提供商¶
Claude-mem 需要一个 AI 提供商来从你的会话中提取观察。选择一项:
最简单的选项——使用 Gemini 自己的 API 进行观察提取:
- 在 Google AI Studio 创建 API 密钥
- 将其添加到你的设置中:
mkdir -p ~/.claude-mem
cat > ~/.claude-mem/settings.json << 'EOF'
{
"CLAUDE_MEM_PROVIDER": "gemini",
"CLAUDE_MEM_GEMINI_API_KEY": "YOUR_API_KEY"
}
EOF
Tip
无需计费: 你可以不启用计费就创建 Gemini API 密钥。只有在查阅 Google 当前的配额和计费条款后,才应考虑启用计费以获得更高的速率限制。
步骤 3:验证安装¶
# Check worker is running
npx claude-mem status
# Check hooks are installed — look for claude-mem entries
cat ~/.gemini/config/hooks.json | grep claude-mem
# Check MCP registration in either candidate config path
cat ~/.gemini/antigravity/mcp_config.json | grep claude-mem
cat ~/.gemini/config/mcp_config.json | grep claude-mem
打开启动时打印的 Worker URL 以查看记忆查看器。
步骤 4:开始使用 Antigravity CLI¶
正常启动 Antigravity CLI。Claude-mem 在后台运行:
在会话开始时,你会看到 claude-mem 上下文注入了你最近的观察和项目历史。
捕获的内容¶
Claude-mem 注册了 Antigravity CLI(agy 1.2.1)触发的五个生命周期钩子:
| 钩子 | 内部事件 | 用途 |
|---|---|---|
| SessionStart | context |
在会话开始时注入一次记忆上下文(通过 injectSteps),使提示词前缀保持可缓存 |
| PreInvocation | session-init |
在每次模型调用前触发。在每个回合的第一次调用时记录一次你的提示词(agy 没有 prompt-submit 钩子)。在同一回合的后续调用中,如果最后一个工具步骤读取了有历史的文件,则每个文件注入一次该历史(通过 injectSteps) |
| PostToolUse | observation |
执行后捕获工具结果 |
| PostInvocation | observation |
记录代理的响应(来自转录的 PLANNER_RESPONSE 节点) |
| Stop | summarize |
在回合/会话结束时捕获会话摘要 |
Note
这些是 agy 从 hooks.json 读取的事件名称。早期版本错误地将 Gemini CLI 名称(BeforeAgent、AfterAgent、BeforeTool、AfterTool)注册到 ~/.gemini/settings.json 中,而 agy 从不读取该文件,因此钩子从未触发,也没有记录任何观察(问题 #4057)。在 #4911 之前安装的版本会在每次模型调用前的 PreInvocation 上注入上下文,这破坏了提示词缓存;请重新运行 claude-mem install --ide antigravity 将其移到 SessionStart。PreInvocation 以 session-init 的身份回归:它只记录提示词,并且仅在文件读取后注入文件历史,而不是在每次调用时注入。在 #5078 之前安装的版本还注册了 PreToolUse,其 allow 应答会跳过 agy 对每个工具的权限提示;重新运行安装程序会将其移除。
MCP 注册¶
Antigravity CLI 原生支持 MCP,但在撰写本文时,它实际读取哪个配置路径确实存在歧义——磁盘上存在两个真实的候选路径,且没有明确的文档说明 agy 加载哪一个。Claude-mem 会安全且幂等地写入两者:
~/.gemini/antigravity/mcp_config.json~/.gemini/config/mcp_config.json
这能让 claude-mem 的搜索工具(search、smart_search、timeline 等)有机会正确注册,无论 Antigravity CLI 实际读取的是哪个路径。
未来增强(本版本未实现)¶
Antigravity CLI 自带一流的插件市场子命令系统:agy plugin {list,import,install,uninstall,enable,disable,validate,link}。值得注意的是,agy plugin import gemini|claude 暗示支持跨工具的原生插件迁移——其结构类似于 Codex CLI 的 .codex-plugin/plugin.json 市场机制。这最终可能成为捆绑 claude-mem 的 hooks + MCP + 技能注册的更简洁、更符合惯例的方式,而非手动编辑 hooks.json。此处未实现该功能,因为在不针对真实清单运行 agy plugin import/install 的情况下,无法发现其清单模式,而这会改变用户实时的本地插件状态。已将其记录为候选后续事项。
故障排查¶
Hook 未触发¶
-
验证 hooks 是否存在于 hooks 配置中:
每个顶层键都是一个 hook 名称。claude-mem 会写入一个包含事件键的"claude-mem"键,其中PostToolUse使用分组后的{ "matcher", "hooks" }结构,而SessionStart/PreInvocation/PostInvocation/Stop使用扁平的处理程序数组:{ "claude-mem": { "SessionStart": [ { "type": "command", "command": "...", "timeout": 30 } ], "PreInvocation": [ { "type": "command", "command": "...", "timeout": 30 } ], "PostToolUse": [ { "matcher": "*", "hooks": [ { "type": "command", "command": "...", "timeout": 30 } ] } ], "PostInvocation": [ { "type": "command", "command": "...", "timeout": 30 } ], "Stop": [ { "type": "command", "command": "...", "timeout": 30 } ] } }timeout以 秒 为单位(agy 的默认值是 30)。如果你在顶层看到事件名称、带有"name": "claude-mem"的处理程序,或"timeout": 10000,说明你安装的是修复前的版本——请重新运行下面的安装程序,它会自动迁移旧布局。 -
安装后重启 Antigravity CLI。
-
重新运行安装程序:
Worker 未运行¶
# Check status
npx claude-mem status
# View logs
npx claude-mem logs
# Restart worker
npx claude-mem restart
会话开始时没有上下文¶
- 确保 worker 正在运行(
npm run worker:status) - 你至少需要有一个包含观察记录的先前会话,才能出现上下文
- 检查你的 AI 提供商已在
~/.claude-mem/settings.json中配置
输出中的原始转义码¶
如果你在会话上下文中看到类似 [31m 或 [0m 的字符,则你的 claude-mem 版本可能需要更新——Antigravity CLI 适配器会自动去除 ANSI 颜色码:
卸载¶
这会从 ~/.gemini/config/hooks.json 中移除 claude-mem 的 hooks(以及 ~/.gemini/settings.json 中的任何旧条目),清理 ~/.gemini/GEMINI.md 中的上下文部分,从两个 MCP 配置文件中移除 claude-mem 的条目,并移除规则上下文部分——同时保留这些文件中的其他所有内容。
后续步骤¶
- Gemini Provider — 配置 Gemini AI 提供商以进行观察提取
- Configuration — 所有设置选项
- Search Tools — 在会话中搜索你的记忆
- Troubleshooting — 常见问题与解决方案
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem