跳转至

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

npx claude-mem install --ide antigravity

安装程序将: 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 进行观察提取:

  1. 在 Google AI Studio 创建 API 密钥
  2. 将其添加到你的设置中:
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 当前的配额和计费条款后,才应考虑启用计费以获得更高的速率限制。

如果你有 Claude API 密钥:

mkdir -p ~/.claude-mem
cat > ~/.claude-mem/settings.json << 'EOF'
{
  "CLAUDE_MEM_PROVIDER": "claude"
}
EOF

通过环境变量设置你的 API 密钥:

export ANTHROPIC_API_KEY="your-key"

用于访问 100+ 模型:

mkdir -p ~/.claude-mem
cat > ~/.claude-mem/settings.json << 'EOF'
{
  "CLAUDE_MEM_PROVIDER": "openrouter",
  "CLAUDE_MEM_OPENROUTER_API_KEY": "YOUR_KEY"
}
EOF

步骤 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 在后台运行:

agy

在会话开始时,你会看到 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 未触发

  1. 验证 hooks 是否存在于 hooks 配置中:

    cat ~/.gemini/config/hooks.json
    
    每个顶层键都是一个 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,说明你安装的是修复前的版本——请重新运行下面的安装程序,它会自动迁移旧布局。

  2. 安装后重启 Antigravity CLI。

  3. 重新运行安装程序:

    npx claude-mem install --ide antigravity
    

Worker 未运行

# Check status
npx claude-mem status

# View logs
npx claude-mem logs

# Restart worker
npx claude-mem restart

会话开始时没有上下文

  1. 确保 worker 正在运行(npm run worker:status)
  2. 你至少需要有一个包含观察记录的先前会话,才能出现上下文
  3. 检查你的 AI 提供商已在 ~/.claude-mem/settings.json 中配置

输出中的原始转义码

如果你在会话上下文中看到类似 [31m 或 [0m 的字符,则你的 claude-mem 版本可能需要更新——Antigravity CLI 适配器会自动去除 ANSI 颜色码:

npx claude-mem install --ide antigravity

卸载

npx claude-mem uninstall

这会从 ~/.gemini/config/hooks.json 中移除 claude-mem 的 hooks(以及 ~/.gemini/settings.json 中的任何旧条目),清理 ~/.gemini/GEMINI.md 中的上下文部分,从两个 MCP 配置文件中移除 claude-mem 的条目,并移除规则上下文部分——同时保留这些文件中的其他所有内容。

后续步骤

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem