跳转到内容

自动捕获 AI 提供商

自动捕获运行后台 AI 请求以总结技术工作并将其保存为记忆。它需要以下提供商配置之一。

推荐: 使用已在 opencode 中认证且支持结构化输出的提供商:

"opencodeProvider": "anthropic",
"opencodeModel": "claude-haiku-4-5-20251001",

插件向 opencode 的会话 API 发出结构化输出请求,而非直接调用提供商端点,因此由 opencode 拥有认证、令牌刷新与提供商路由。提供商名称必须与 opencode providers list 中的条目匹配,且所选模型必须通过 opencode 支持结构化 JSON 输出。

可选地用 "opencodeVariant": "xhigh" 固定模型推理变体(例如用于 grok-4.7)。它会应用于插件的内部 LLM 调用(自动捕获摘要、画像学习、画像清理),包括当 opencodeModel 为 "inherit" 时,以便后台工作可以使用与交互式会话不同的推理级别。

慢速推理模型(或非常大的画像提示)可能超过默认的 90 秒结构化输出预算。设置 "opencodeTimeoutMs"(毫秒)可为内部结构化输出调用(自动捕获摘要、画像学习)延长 — 例如 "opencodeTimeoutMs": 180000 表示 3 分钟。值钳制在 10000..600000;默认保持 90000。数字字符串会被强制转换。画像清理使用单独的、更长的超时。

支持的提供商:opencode providers list 列出的任何提供商(例如 anthropic、openai、github-copilot 等)。

若设置了 opencodeProvider 与 opencodeModel,它们优先于下方的手动 memoryProvider 设置。

跟随会话模型: 设置 "opencodeModel": "inherit" 以在调用时使用具体的 OpenCode 模型,而非固定 id。对于自动捕获,每个提示通过 chat.params 钩子记录,捕获请求重用该提示的提供商/模型。对于画像学习及其他结构化输出路径(不绑定到单条用户消息),inherit 先复用主机在 chat.params / V2 context 钩子上报的最近模型,再回退到 OpenCode model.json 最近列表(若存在;优先使用已配置的 opencodeProvider)。OpenCode v2 不再写入 model.json,因此进程内会话模型是主要回退。发送字面模型 id inherit 永远无效,此前会在这些路径上导致 ProviderModelNotFoundError: Model not found: <provider>/inherit。opencodeProvider 仍作为正常配置门控是必需的。

回退: 手动 API 配置(若不使用 opencodeProvider):

"memoryProvider": "openai-chat",
"memoryModel": "gpt-4o-mini",
"memoryApiUrl": "https://api.openai.com/v1",
"memoryApiKey": "sk-...",

API 密钥格式:

"memoryApiKey": "sk-..."
"memoryApiKey": "file://~/.config/opencode/api-key.txt"
"memoryApiKey": "env://OPENAI_API_KEY"

手动 memoryProvider 模式:

  • openai-chat:兼容 OpenAI Chat Completions、带工具/函数调用的 API。仅当所选上游模型与代理保留工具调用时,这可与兼容代理(如 LiteLLM)一起工作。
  • openai-responses:带函数调用输出的 OpenAI Responses API。
  • anthropic:带工具使用的 Anthropic Messages API。
  • minimax:MiniMax Anthropic Messages 兼容端点。将 memoryApiUrl 设置为全球端点(https://api.minimax.io)或中国端点(https://api.minimax.cn);/anthropic/v1/messages 路径与 x-api-key 标头会自动应用。使用 MiniMax-M3.1-Flash(推荐)或 MiniMax-M3,二者均为 1,000,000-token 上下文。Flash 始终开启思考;可选将 memoryExtraParams 设为 { "output_config": { "effort": "max" } },取值为 low、medium、high、xhigh 或 max(默认)。Flash 会拒绝禁用思考与 effort none,且不支持 service_tier。在此端点上 M3 思考默认关闭;可通过 { "thinking": { "type": "adaptive" } } 启用。模型 ID 仍需显式配置;已有自定义或旧版 ID 会原样透传。参见 MiniMax 兼容性参考。
  • orcarouter:带命名空间模型 ID 的 OpenAI 兼容模型网关。memoryApiUrl 与 memoryModel 可选 — 它们默认为 https://api.orcarouter.ai/v1 与 orcarouter/auto(按请求选择有能力模型的路由别名)。若设置 memoryModel,请使用命名空间 ID,例如 openai/gpt-5.5 或 deepseek/deepseek-v4-flash;OrcaRouter 拒绝裸模型名。示例:
    "memoryProvider": "orcarouter",
    "memoryApiKey": "<OrcaRouter API key>",
    OrcaRouter 还在同一端点上为 AI 代理运行网关级零信任安全 — 默认拒绝基础上筛选每个提示/响应并治理每个工具调用,无需更改应用代码。
  • atlas-cloud:面向 Atlas Cloud 的 OpenAI 兼容 Chat Completions 预设。memoryApiUrl 与 memoryModel 可选 — 它们默认为 https://api.atlascloud.ai/v1 与 deepseek-ai/deepseek-v4-pro。若省略 memoryApiKey,则使用环境中的 ATLASCLOUD_API_KEY。示例:
    "memoryProvider": "atlas-cloud",
    "memoryApiKey": "env://ATLASCLOUD_API_KEY",
    选择此提供商时,自动捕获 / 画像提示、模型响应与相关对话上下文会传输到 https://api.atlascloud.ai。
  • cheaper-inference:面向 Cheaper Inference 的 OpenAI 兼容 Chat Completions 预设。memoryApiUrl 与 memoryModel 可选 — 它们默认为 https://api.cheaperinference.com/v1 与 gpt-5.4-mini。若省略 memoryApiKey,则使用环境中的 CHEAPER_INFERENCE_API_KEY。示例:
    "memoryProvider": "cheaper-inference",
    "memoryApiKey": "env://CHEAPER_INFERENCE_API_KEY",
    选择此提供商时,自动捕获 / 画像提示、模型响应与相关对话上下文会传输到 https://api.cheaperinference.com。
  • api-route:面向 API Route 的 OpenAI 兼容 Chat Completions 预设。memoryApiUrl 与 memoryModel 可选 — 它们默认为 https://global.api-route.com/v1 与 gpt-6.1-sol。若省略 memoryApiKey,则使用环境中的 API_ROUTE_API_KEY。示例:
    "memoryProvider": "api-route",
    "memoryApiKey": "env://API_ROUTE_API_KEY",
    选择此提供商时,自动捕获 / 画像提示、模型响应与相关对话上下文会传输到 https://global.api-route.com。
  • runcrate:面向 Runcrate 的 OpenAI 兼容 Chat Completions 预设。memoryApiUrl 与 memoryModel 可选 — 它们默认为 https://api.runcrate.ai/v1 与 deepseek-ai/DeepSeek-V4.1-Flash。若省略 memoryApiKey,则使用环境中的 RUNCRATE_API_KEY。示例:
    "memoryProvider": "runcrate",
    "memoryApiKey": "env://RUNCRATE_API_KEY",
    选择此提供商时,自动捕获 / 画像提示、模型响应与相关对话上下文会传输到 https://api.runcrate.ai。
  • cloudgpu:面向 CloudGPU 的 OpenAI 兼容 Chat Completions 预设。memoryApiUrl 与 memoryModel 可选 — 它们默认为 https://cloudgpu.app/v1 与 deepseek-v4.1-flash。若省略 memoryApiKey,则使用环境中的 CLOUDGPU_API_KEY(在 https://cloudgpu.app/api/console 创建密钥;API 文档:https://cloudgpu.app/api/docs)。示例:
    "memoryProvider": "cloudgpu",
    "memoryApiKey": "env://CLOUDGPU_API_KEY",
    选择此提供商时,自动捕获 / 画像提示、模型响应与相关对话上下文会传输到 https://cloudgpu.app。

故障排除:

  • 自动捕获失败不会阻止手动 memory 工具使用。
  • 若自动捕获报告提供商未连接,请用 opencode providers list 确认提供商名称,并先在 opencode 中配置该提供商。
  • 若代理或自定义提供商返回纯文本而非结构化/工具输出,请选择另一模型/提供商,或使用上方手动提供商模式之一。
  • 对于拒绝 temperature 的模型,在使用手动 API 配置时添加 "memoryTemperature": false。
  • 对于拒绝强制工具调用(tool_choice: "required",例如某些思考模式)的模型,在使用 openai-chat / orcarouter / atlas-cloud / cheaper-inference / api-route / runcrate / cloudgpu 时添加 "forceToolChoice": false。
  • 对于 opencodeProvider / opencodeModel(例如 DeepSeek V4 thinking),OpenCode 仍会为结构化输出发送强制的 tool_choice。opencode-mem 在内部 opencode-mem-structured 代理上禁用思考(并在变体合并后在 chat.params 中重新应用),以便自动捕获与画像学习可以完成。你的交互式聊天代理不变。若捕获仍因 thinking/tool_choice 错误失败,请为 opencodeModel 选择非思考模型,或配置完整的手动回退(memoryModel + memoryApiUrl)。
  • opencode-claude-auth / Claude Code: 自动捕获使用带有你已认证 anthropic 提供商的 OpenCode。强制的 format: json_schema 常与 Claude-auth 循环,因此 opencode-mem 对 opencodeProvider: "anthropic" 使用保留认证的 text-JSON 路径(无强制 StructuredOutput 工具;用 Zod 解析回复)。步骤看门狗仍会在 2 步后中止失控的内部会话。若捕获仍失败,请配置完整的手动 Anthropic API 密钥回退(memoryProvider: "anthropic" + memoryModel + memoryApiUrl + memoryApiKey)— Claude Pro/Max OAuth 无法在 OpenCode 外重用。
  • 不支持的平台: 不支持 Intel Mac(darwin/x64) — @tursodatabase/database 与固定版本的 onnxruntime-node 发行版(固定 1.31.1)不提供 x64 原生绑定。请使用 Apple Silicon、Linux 或 Windows,或通过 embeddingApiUrl + embeddingApiKey 使用远程嵌入端点。不支持 MLX。