自定义 Anthropic 兼容后端¶
当你使用 claude 提供方时,claude-mem 会通过 Claude Agent SDK 与 Anthropic API 通信。默认情况下,SDK 以官方 Anthropic 端点为目标,但它会遵循标准的 ANTHROPIC_BASE_URL 环境变量。这意味着你可以将 claude-mem 路由到任何与 Anthropic 协议兼容的后端——例如企业网关、区域桥接服务,或暴露 Anthropic 风格 API 的第三方提供方——而无需修改任何 claude-mem 源代码。
Note
本文档说明如何持久化自定义 base URL,以便 claude-mem 的 worker 始终如一地使用它。对于兼容 OpenAI 的上游提供方,请使用 LiteLLM 之类的网关,并遵循 LiteLLM Gateway 指南。
何时使用此功能¶
如果你需要 claude-mem 的观察 worker 与以下目标通信,请使用 ANTHROPIC_BASE_URL:
- 一个企业级 Anthropic 网关(位于
api.anthropic.com前面的代理) - 一个区域级 Anthropic 部署(例如通过 Anthropic 兼容 shim 的 AWS Bedrock 或 GCP Vertex)
- 一个第三方提供方,将其 API 桥接到 Anthropic 协议
如果你的提供方只支持 OpenAI chat-completions 协议,请在它前面放置一个 LiteLLM 之类的网关,并将 claude-mem 的 Claude Agent SDK 路径指向该网关。完整的路由模型请参阅 LiteLLM Gateway。
工作原理¶
流程设计得非常简单:
- 你写入凭据到
~/.claude-mem/.env。 EnvManager.loadClaudeMemEnv()读取该文件(src/shared/EnvManager.ts:67)。buildIsolatedEnv()将ANTHROPIC_BASE_URL复制到 worker 的启动环境中,同时包含显式的网关或 API 凭据(src/shared/EnvManager.ts:164)。ClaudeProvider.startSession()使用该隔离环境启动 Claude Agent SDK(src/services/worker/ClaudeProvider.ts:115)。SDK 原生读取ANTHROPIC_BASE_URL——claude-mem 不会解析或重写它。
由于该变量被隔离在 worker 进程中,你的交互式 Claude Code 会话不受影响;只有后台记忆代理使用此覆盖。
配置¶
第 1 步:编辑 ~/.claude-mem/.env¶
凭据文件是一个纯文本 KEY=VALUE 环境文件,位于 ~/.claude-mem/.env(权限 0600)。添加或更新 ANTHROPIC_BASE_URL 行:
# ~/.claude-mem/.env
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_BASE_URL=https://your-gateway.example.com/v1
如果文件尚不存在,请创建它。目录权限会被强制为 0700,文件权限会被强制为 0600,这些会在下次 worker 写入时自动完成。
第 2 步:选择兼容的模型¶
CLAUDE_MEM_MODEL(位于 ~/.claude-mem/settings.json)会直接传给 SDK。模型名称必须是你的桥接服务接受的名称——claude-mem 不会转换名称。
如果你的桥接服务期望非 Anthropic 模型名称(例如 Bedrock 推理配置),则在此处设置该字符串。
第 3 步:重启 Worker¶
凭据在 worker 启动 SDK 时加载,因此编辑 .env 后需要重启:
示例:企业网关¶
假设你的团队在 api.anthropic.com 前面运行 https://anthropic-proxy.internal.example.com,用于审计和速率限制。该代理接受相同的协议和相同的模型名称。
~/.claude-mem/.env:
~/.claude-mem/settings.json:
重启后,下一条观察记录将通过你的网关路由。
验证¶
重启后,在 worker 日志中查看下一条观察记录的刷新:
通过网关的成功请求会显示标准的 SDK Starting SDK query 行,随后是 Response received。如果网关拒绝该请求,SDK 错误会原样出现在 worker-error.log 中——不会静默回退到公共 Anthropic 端点。
限制与注意事项¶
- 不进行模型名称转换。 如果你的桥接服务期望
glm-4.7,而CLAUDE_MEM_MODEL是claude-haiku-4-5-20251001,请求将失败。请将CLAUDE_MEM_MODEL固定为你桥接服务能识别的名称。 - 网关认证通常使用
ANTHROPIC_AUTH_TOKEN。 对于 LiteLLM 网关模式,请将网关密钥或虚拟密钥存储为ANTHROPIC_AUTH_TOKEN。对于直接使用 Anthropic API 密钥模式或明确期望该密钥的网关,请使用ANTHROPIC_API_KEY。 - shell 中的
ANTHROPIC_BASE_URL不会被继承。ANTHROPIC_API_KEY位于 BLOCKED_ENV_VARS 列表(src/shared/EnvManager.ts:10)中,以防止因 shell 泄漏密钥而导致意外计费;ANTHROPIC_BASE_URL未被阻止,但仍必须设置在~/.claude-mem/.env中,以便 worker 在重启期间可靠地读取它。不要依赖 shell 导出。 - 无自动检测。 如果你已经为 Claude Code 本身配置了
ANTHROPIC_BASE_URL、ANTHROPIC_DEFAULT_HAIKU_MODEL等,claude-mem 目前不会读取这些配置。请将相关值镜像到~/.claude-mem/.env和~/.claude-mem/settings.json中。
相关文档¶
- Configuration — claude-mem 的全部设置
- LiteLLM Gateway:将 Claude Agent SDK 路径路由到 LiteLLM
- OpenRouter Provider — 适用于非 Anthropic 协议的 OpenAI 兼容桥接
- Gemini Provider — 原生 Gemini API 替代方案
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem