diff --git a/docs/zh-CN/pi.md b/docs/zh-CN/pi.md index adfae0992..71e0fd1b8 100644 --- a/docs/zh-CN/pi.md +++ b/docs/zh-CN/pi.md @@ -1,50 +1,50 @@ --- read_when: - - 理解 OpenClaw 中的 Pi SDK 集成设计 - - 修改 Pi 的智能体会话生命周期、工具或提供商接线方式 -summary: OpenClaw 的内置 Pi 智能体集成架构和会话生命周期 + - 理解 OpenClaw 中 Pi SDK 集成设计 + - 修改 Pi 的智能体会话生命周期、工具能力或提供商接线 +summary: OpenClaw 内置 Pi 智能体集成的架构与会话生命周期 title: Pi 集成架构 x-i18n: - generated_at: "2026-04-20T18:49:33Z" + generated_at: "2026-04-22T02:37:02Z" model: gpt-5.4 provider: openai - source_hash: ece62eb1459e8a861610c8502f2b3bf5172500207df5e78f4abe7a2a416a47fc + source_hash: 0ab2934958cd699b585ce57da5ac3077754d46725e74a8e604afc14d2b4ca022 source_path: pi.md workflow: 15 --- # Pi 集成架构 -本文档介绍了 OpenClaw 如何与 [pi-coding-agent](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent) 及其同级软件包(`pi-ai`、`pi-agent-core`、`pi-tui`)集成,以支撑其 AI 智能体能力。 +本文档介绍 OpenClaw 如何与 [pi-coding-agent](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent) 及其同级包(`pi-ai`、`pi-agent-core`、`pi-tui`)集成,以驱动其 AI 智能体能力。 -## 概览 +## 概述 -OpenClaw 使用 pi SDK,将一个 AI 编码智能体嵌入到其消息 Gateway 网关架构中。OpenClaw 不会将 pi 作为子进程启动,也不使用 RPC 模式,而是通过 `createAgentSession()` 直接导入并实例化 pi 的 `AgentSession`。这种内嵌方式提供了: +OpenClaw 使用 pi SDK,将一个 AI 编码智能体嵌入到其消息 Gateway 网关架构中。OpenClaw 不会将 pi 作为子进程启动,也不会使用 RPC 模式,而是通过 `createAgentSession()` 直接导入并实例化 pi 的 `AgentSession`。这种内嵌方式提供了: - 对会话生命周期和事件处理的完全控制 - 自定义工具注入(消息、沙箱、渠道特定操作) - 按渠道/上下文定制系统提示词 - 支持分支/压缩的会话持久化 -- 带故障转移的多账号凭证配置轮换 +- 支持故障切换的多账户凭证配置轮换 - 与提供商无关的模型切换 -## 软件包依赖 +## 包依赖 ```json { - "@mariozechner/pi-agent-core": "0.64.0", - "@mariozechner/pi-ai": "0.64.0", - "@mariozechner/pi-coding-agent": "0.64.0", - "@mariozechner/pi-tui": "0.64.0" + "@mariozechner/pi-agent-core": "0.68.1", + "@mariozechner/pi-ai": "0.68.1", + "@mariozechner/pi-coding-agent": "0.68.1", + "@mariozechner/pi-tui": "0.68.1" } ``` -| Package | 用途 | -| ----------------- | -------------------------------------------------------------------------------------- | -| `pi-ai` | 核心 LLM 抽象:`Model`、`streamSimple`、消息类型、提供商 API | -| `pi-agent-core` | 智能体循环、工具执行、`AgentMessage` 类型 | +| Package | 用途 | +| ----------------- | -------------------------------------------------------------------- | +| `pi-ai` | 核心 LLM 抽象:`Model`、`streamSimple`、消息类型、提供商 API | +| `pi-agent-core` | 智能体循环、工具执行、`AgentMessage` 类型 | | `pi-coding-agent` | 高层 SDK:`createAgentSession`、`SessionManager`、`AuthStorage`、`ModelRegistry`、内置工具 | -| `pi-tui` | 终端 UI 组件(用于 OpenClaw 的本地 TUI 模式) | +| `pi-tui` | 终端 UI 组件(用于 OpenClaw 的本地 TUI 模式) | ## 文件结构 @@ -59,7 +59,7 @@ src/agents/ │ │ ├── payloads.ts # 从运行结果构建响应负载 │ │ ├── images.ts # Vision 模型图像注入 │ │ └── types.ts # EmbeddedRunAttemptResult -│ ├── abort.ts # Abort 错误检测 +│ ├── abort.ts # 中止错误检测 │ ├── cache-ttl.ts # 用于上下文裁剪的缓存 TTL 跟踪 │ ├── compact.ts # 手动/自动压缩逻辑 │ ├── extensions.ts # 为内嵌运行加载 pi 扩展 @@ -68,13 +68,13 @@ src/agents/ │ ├── history.ts # 历史记录限制(私信 vs 群组) │ ├── lanes.ts # 会话/全局命令通道 │ ├── logger.ts # 子系统日志记录器 -│ ├── model.ts # 通过 ModelRegistry 进行模型解析 -│ ├── runs.ts # 活跃运行跟踪、终止、排队 +│ ├── model.ts # 通过 ModelRegistry 解析模型 +│ ├── runs.ts # 活动运行跟踪、中止、队列 │ ├── sandbox-info.ts # 用于系统提示词的沙箱信息 │ ├── session-manager-cache.ts # SessionManager 实例缓存 │ ├── session-manager-init.ts # 会话文件初始化 │ ├── system-prompt.ts # 系统提示词构建器 -│ ├── tool-split.ts # 将工具拆分为 builtIn 和 custom +│ ├── tool-split.ts # 将工具拆分为 builtIn 与 custom │ ├── types.ts # EmbeddedPiAgentMeta、EmbeddedPiRunResult │ └── utils.ts # ThinkLevel 映射、错误描述 ├── pi-embedded-subscribe.ts # 会话事件订阅/分发 @@ -82,16 +82,16 @@ src/agents/ ├── pi-embedded-subscribe.handlers.ts # 事件处理器工厂 ├── pi-embedded-subscribe.handlers.lifecycle.ts ├── pi-embedded-subscribe.handlers.types.ts -├── pi-embedded-block-chunker.ts # 流式块回复分块 -├── pi-embedded-messaging.ts # 消息工具已发送跟踪 -├── pi-embedded-helpers.ts # 错误分类、轮次校验 +├── pi-embedded-block-chunker.ts # 流式分块回复切块 +├── pi-embedded-messaging.ts # 消息工具发送跟踪 +├── pi-embedded-helpers.ts # 错误分类、轮次验证 ├── pi-embedded-helpers/ # 辅助模块 -├── pi-embedded-utils.ts # 格式化工具函数 +├── pi-embedded-utils.ts # 格式化工具 ├── pi-tools.ts # createOpenClawCodingTools() -├── pi-tools.abort.ts # 工具的 AbortSignal 包装 +├── pi-tools.abort.ts # 用于工具的 AbortSignal 包装 ├── pi-tools.policy.ts # 工具允许列表/拒绝列表策略 -├── pi-tools.read.ts # Read 工具自定义 -├── pi-tools.schema.ts # 工具 schema 标准化 +├── pi-tools.read.ts # Read 工具定制 +├── pi-tools.schema.ts # 工具 schema 规范化 ├── pi-tools.types.ts # AnyAgentTool 类型别名 ├── pi-tool-definition-adapter.ts # AgentTool -> ToolDefinition 适配器 ├── pi-settings.ts # 设置覆盖 @@ -101,9 +101,9 @@ src/agents/ │ ├── context-pruning.ts # 缓存 TTL 上下文裁剪扩展 │ └── context-pruning/ ├── model-auth.ts # 凭证配置解析 -├── auth-profiles.ts # 配置存储、冷却、故障转移 +├── auth-profiles.ts # 配置存储、冷却、故障切换 ├── model-selection.ts # 默认模型解析 -├── models-config.ts # `models.json` 生成 +├── models-config.ts # 生成 models.json ├── model-catalog.ts # 模型目录缓存 ├── context-window-guard.ts # 上下文窗口校验 ├── failover-error.ts # FailoverError 类 @@ -113,9 +113,9 @@ src/agents/ ├── system-prompt-report.ts # 调试报告生成 ├── tool-summaries.ts # 工具描述摘要 ├── tool-policy.ts # 工具策略解析 -├── transcript-policy.ts # 转录校验策略 -├── skills.ts # Skill 快照/提示词构建 -├── skills/ # Skill 子系统 +├── transcript-policy.ts # Transcript 校验策略 +├── skills.ts # Skills 快照/提示词构建 +├── skills/ # Skills 子系统 ├── sandbox.ts # 沙箱上下文解析 ├── sandbox/ # 沙箱子系统 ├── channel-tools.ts # 渠道特定工具注入 @@ -136,7 +136,7 @@ src/agents/ └── ... ``` -渠道特定的消息操作运行时现在位于由插件拥有的扩展目录中,而不是放在 `src/agents/tools` 下,例如: +渠道特定的消息操作运行时现在位于插件自有的扩展目录中,而不再位于 `src/agents/tools` 下,例如: - Discord 插件操作运行时文件 - Slack 插件操作运行时文件 @@ -171,7 +171,7 @@ const result = await runEmbeddedPiAgent({ ### 2. 创建会话 -在 `runEmbeddedAttempt()`(由 `runEmbeddedPiAgent()` 调用)内部,会使用 pi SDK: +在 `runEmbeddedAttempt()`(由 `runEmbeddedPiAgent()` 调用)内部,使用了 pi SDK: ```typescript import { @@ -233,7 +233,7 @@ const subscription = subscribeEmbeddedPiSession({ - `agent_start` / `agent_end` - `compaction_start` / `compaction_end` -### 4. 提示 +### 4. 提示输入 完成设置后,会向会话发送提示: @@ -243,23 +243,23 @@ await session.prompt(effectivePrompt, { images: imageResult.images }); SDK 会处理完整的智能体循环:发送到 LLM、执行工具调用、流式返回响应。 -图像注入仅限当前提示:OpenClaw 会从当前提示中加载图像引用,并通过 `images` 仅传入该轮。它不会重新扫描更早的历史轮次来重新注入图像负载。 +图像注入是提示词局部的:OpenClaw 从当前提示词中加载图像引用,并仅通过 `images` 将其传递给当前轮次。它不会重新扫描更早的历史轮次来重新注入图像负载。 ## 工具架构 ### 工具流水线 1. **基础工具**:pi 的 `codingTools`(read、bash、edit、write) -2. **自定义替换**:OpenClaw 用 `exec`/`process` 替换 bash,并为沙箱定制 read/edit/write -3. **OpenClaw 工具**:消息、浏览器、canvas、会话、cron、Gateway 网关 等 +2. **自定义替换**:OpenClaw 将 bash 替换为 `exec`/`process`,并为沙箱定制 read/edit/write +3. **OpenClaw 工具**:消息、浏览器、画布、会话、cron、Gateway 网关等 4. **渠道工具**:Discord/Telegram/Slack/WhatsApp 特定操作工具 5. **策略过滤**:按配置、提供商、智能体、群组、沙箱策略过滤工具 -6. **Schema 标准化**:为适配 Gemini/OpenAI 的特殊情况清理 schema -7. **AbortSignal 包装**:包装工具以支持 abort signals +6. **Schema 规范化**:为兼容 Gemini/OpenAI 的特殊行为而清理 schema +7. **AbortSignal 包装**:对工具进行包装,以遵守 abort signal ### 工具定义适配器 -pi-agent-core 的 `AgentTool` 与 pi-coding-agent 的 `ToolDefinition` 在 `execute` 签名上不同。`pi-tool-definition-adapter.ts` 中的适配器负责桥接两者: +pi-agent-core 的 `AgentTool` 与 pi-coding-agent 的 `ToolDefinition` 具有不同的 `execute` 签名。`pi-tool-definition-adapter.ts` 中的适配器负责桥接二者: ```typescript export function toToolDefinitions(tools: AnyAgentTool[]): ToolDefinition[] { @@ -269,7 +269,7 @@ export function toToolDefinitions(tools: AnyAgentTool[]): ToolDefinition[] { description: tool.description ?? "", parameters: tool.parameters, execute: async (toolCallId, params, onUpdate, _ctx, signal) => { - // pi-coding-agent 签名与 pi-agent-core 不同 + // pi-coding-agent 的签名与 pi-agent-core 不同 return await tool.execute(toolCallId, params, signal, onUpdate); }, })); @@ -278,24 +278,24 @@ export function toToolDefinitions(tools: AnyAgentTool[]): ToolDefinition[] { ### 工具拆分策略 -`splitSdkTools()` 会通过 `customTools` 传递所有工具: +`splitSdkTools()` 通过 `customTools` 传递全部工具: ```typescript export function splitSdkTools(options: { tools: AnyAgentTool[]; sandboxEnabled: boolean }) { return { - builtInTools: [], // 为空。我们覆盖所有内容 + builtInTools: [], // 为空。我们会覆盖所有内容 customTools: toToolDefinitions(options.tools), }; } ``` -这可确保 OpenClaw 的策略过滤、沙箱集成和扩展工具集在不同提供商之间保持一致。 +这可确保 OpenClaw 的策略过滤、沙箱集成和扩展工具集在各个提供商之间保持一致。 ## 系统提示词构建 -系统提示词在 `buildAgentSystemPrompt()`(`system-prompt.ts`)中构建。它会组装一个完整提示词,其中包含 Tooling、Tool Call Style、安全护栏、OpenClaw CLI 参考、Skills、文档、工作区、沙箱、消息、回复标签、语气、静默回复、心跳、运行时元数据,以及在启用时包含 Memory 和 Reactions,还支持可选的上下文文件和额外系统提示词内容。用于子智能体的最小提示词模式会对各个部分进行裁剪。 +系统提示词在 `buildAgentSystemPrompt()`(`system-prompt.ts`)中构建。它会组装一个完整提示词,其中包含 Tooling、工具调用风格、安全护栏、OpenClaw CLI 参考、Skills、文档、工作区、沙箱、消息、回复标签、语气、静默回复、心跳、运行时元数据,以及在启用时包含的 Memory 和 Reactions,还包括可选的上下文文件和额外系统提示词内容。用于子智能体的最小提示词模式会对这些部分进行裁剪。 -该提示词会在会话创建后通过 `applySystemPromptOverrideToSession()` 应用: +系统提示词会在会话创建后通过 `applySystemPromptOverrideToSession()` 应用: ```typescript const systemPromptOverride = createSystemPromptOverride(appendPrompt); @@ -306,13 +306,13 @@ applySystemPromptOverrideToSession(session, systemPromptOverride); ### 会话文件 -会话文件是带树状结构的 JSONL 文件(通过 id/parentId 链接)。Pi 的 `SessionManager` 负责持久化: +会话以 JSONL 文件存储,并具有树状结构(通过 id/parentId 链接)。pi 的 `SessionManager` 负责持久化: ```typescript const sessionManager = SessionManager.open(params.sessionFile); ``` -OpenClaw 使用 `guardSessionManager()` 对其进行包装,以确保工具结果的安全性。 +OpenClaw 通过 `guardSessionManager()` 对其进行包装,以确保工具结果安全。 ### 会话缓存 @@ -326,11 +326,16 @@ trackSessionManagerAccess(params.sessionFile); ### 历史记录限制 -`limitHistoryTurns()` 会根据渠道类型(私信 或群组)裁剪会话历史。 +`limitHistoryTurns()` 会根据渠道类型(私信 与 群组)裁剪对话历史。 ### 压缩 -当上下文溢出时,会触发自动压缩。常见的溢出特征包括 `request_too_large`、`context length exceeded`、`input exceeds the maximum number of tokens`、`input token count exceeds the maximum number of input tokens`、`input is too long for the model` 以及 `ollama error: context length exceeded`。`compactEmbeddedPiSessionDirect()` 负责手动压缩: +当上下文溢出时会触发自动压缩。常见的溢出特征包括 +`request_too_large`、`context length exceeded`、`input exceeds the +maximum number of tokens`、`input token count exceeds the maximum number of +input tokens`、`input is too long for the model`,以及 `ollama error: context +length exceeded`。`compactEmbeddedPiSessionDirect()` 负责处理手动 +压缩: ```typescript const compactResult = await compactEmbeddedPiSessionDirect({ @@ -342,14 +347,14 @@ const compactResult = await compactEmbeddedPiSessionDirect({ ### 凭证配置 -OpenClaw 维护了一个凭证配置存储,为每个提供商支持多个 API key: +OpenClaw 维护一个凭证配置存储,为每个提供商保存多个 API 密钥: ```typescript const authStore = ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false }); const profileOrder = resolveAuthProfileOrder({ cfg, store: authStore, provider, preferredProfile }); ``` -配置在失败时会轮换,并带有冷却跟踪: +配置会在失败时轮换,并跟踪冷却状态: ```typescript await markAuthProfileFailure({ store, profileId, reason, cfg, agentDir }); @@ -372,9 +377,9 @@ const { model, error, authStorage, modelRegistry } = resolveModel( authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey); ``` -### 故障转移 +### 故障切换 -如果已配置回退模型,`FailoverError` 会触发模型回退: +当配置了回退时,`FailoverError` 会触发模型回退: ```typescript if (fallbackConfigured && isFailoverErrorMessage(errorText)) { @@ -390,7 +395,7 @@ if (fallbackConfigured && isFailoverErrorMessage(errorText)) { ## Pi 扩展 -OpenClaw 会加载自定义 pi 扩展,以实现特定行为: +OpenClaw 会加载自定义 Pi 扩展,以实现专门行为: ### 压缩保护 @@ -421,28 +426,28 @@ if (cfg?.agents?.defaults?.contextPruning?.mode === "cache-ttl") { ## 流式传输与分块回复 -### 块分块 +### 分块切块 -`EmbeddedBlockChunker` 负责将流式文本管理为离散的回复块: +`EmbeddedBlockChunker` 负责将流式文本整理为离散的回复块: ```typescript const blockChunker = blockChunking ? new EmbeddedBlockChunker(blockChunking) : null; ``` -### 思考/最终标签剥离 +### Thinking/Final 标签剥离 -流式输出会经过处理,以去除 ``/`` 块,并提取 `` 内容: +流式输出会经过处理,以剥离 ``/`` 块并提取 `` 内容: ```typescript const stripBlockTags = (text: string, state: { thinking: boolean; final: boolean }) => { - // 去除 ... 内容 + // 剥离 ... 内容 // 如果 enforceFinalTag 为 true,则只返回 ... 内容 }; ``` ### 回复指令 -会解析并提取诸如 `[[media:url]]`、`[[voice]]`、`[[reply:id]]` 之类的回复指令: +会解析并提取 `[[media:url]]`、`[[voice]]`、`[[reply:id]]` 等回复指令: ```typescript const { text: cleanedText, mediaUrls, audioAsVoice, replyToId } = consumeReplyDirectives(chunk); @@ -452,20 +457,20 @@ const { text: cleanedText, mediaUrls, audioAsVoice, replyToId } = consumeReplyDi ### 错误分类 -`pi-embedded-helpers.ts` 会对错误进行分类,以便采取合适的处理方式: +`pi-embedded-helpers.ts` 会对错误进行分类,以便采取适当处理: ```typescript isContextOverflowError(errorText) // 上下文过大 isCompactionFailureError(errorText) // 压缩失败 isAuthAssistantError(lastAssistant) // 认证失败 -isRateLimitAssistantError(...) // 命中速率限制 -isFailoverAssistantError(...) // 应触发故障转移 +isRateLimitAssistantError(...) // 达到速率限制 +isFailoverAssistantError(...) // 应执行故障切换 classifyFailoverReason(errorText) // "auth" | "rate_limit" | "quota" | "timeout" | ... ``` -### 思考级别回退 +### Thinking level 回退 -如果某个思考级别不受支持,则会回退: +如果某个 thinking level 不受支持,则会回退: ```typescript const fallbackThinking = pickFallbackThinkingLevel({ @@ -480,7 +485,7 @@ if (fallbackThinking) { ## 沙箱集成 -当启用沙箱模式时,工具和路径会受到约束: +启用沙箱模式时,工具和路径都会受到约束: ```typescript const sandbox = await resolveSandboxContext({ @@ -490,7 +495,7 @@ const sandbox = await resolveSandboxContext({ }); if (sandboxRoot) { - // 使用沙箱隔离的 read/edit/write 工具 + // 使用经过沙箱隔离的 read/edit/write 工具 // Exec 在容器中运行 // Browser 使用 bridge URL } @@ -500,22 +505,22 @@ if (sandboxRoot) { ### Anthropic -- 清理拒答魔法字符串 -- 校验连续角色的轮次 -- 严格执行上游 Pi 工具参数校验 +- 拒绝魔术字符串清理 +- 连续角色的轮次校验 +- 严格的上游 Pi 工具参数校验 ### Google/Gemini -- 由插件拥有的工具 schema 清理 +- 插件自有的工具 schema 清理 ### OpenAI -- 为 Codex 模型提供 `apply_patch` 工具 -- 处理思考级别降级 +- 面向 Codex 模型的 `apply_patch` 工具 +- thinking level 降级处理 ## TUI 集成 -OpenClaw 还有一个本地 TUI 模式,可直接使用 pi-tui 组件: +OpenClaw 还提供本地 TUI 模式,可直接使用 pi-tui 组件: ```typescript // src/tui/tui.ts @@ -524,27 +529,27 @@ import { ... } from "@mariozechner/pi-tui"; 这提供了与 pi 原生模式类似的交互式终端体验。 -## 与 Pi CLI 的主要区别 +## 与 Pi CLI 的关键差异 -| Aspect | Pi CLI | OpenClaw 内嵌版 | +| 方面 | Pi CLI | OpenClaw 内嵌模式 | | --------------- | ----------------------- | ---------------------------------------------------------------------------------------------- | -| Invocation | `pi` 命令 / RPC | 通过 `createAgentSession()` 使用 SDK | -| Tools | 默认编码工具 | 自定义 OpenClaw 工具套件 | -| System prompt | AGENTS.md + 提示词 | 按渠道/上下文动态生成 | -| Session storage | `~/.pi/agent/sessions/` | `~/.openclaw/agents//sessions/`(或 `$OPENCLAW_STATE_DIR/agents//sessions/`) | -| Auth | 单一凭证 | 支持轮换的多配置 | -| Extensions | 从磁盘加载 | 以编程方式 + 磁盘路径加载 | -| Event handling | TUI 渲染 | 基于回调(`onBlockReply` 等) | +| 调用方式 | `pi` 命令 / RPC | 通过 `createAgentSession()` 使用 SDK | +| 工具 | 默认编码工具 | 自定义 OpenClaw 工具套件 | +| 系统提示词 | AGENTS.md + prompts | 按渠道/上下文动态生成 | +| 会话存储 | `~/.pi/agent/sessions/` | `~/.openclaw/agents//sessions/`(或 `$OPENCLAW_STATE_DIR/agents//sessions/`) | +| 认证 | 单一凭证 | 支持轮换的多配置 | +| 扩展 | 从磁盘加载 | 编程方式 + 磁盘路径 | +| 事件处理 | TUI 渲染 | 基于回调(`onBlockReply` 等) | ## 未来考虑 潜在需要重构的领域: -1. **工具签名对齐**:目前需要在 pi-agent-core 和 pi-coding-agent 签名之间进行适配 -2. **Session manager 包装**:`guardSessionManager` 提高了安全性,但也增加了复杂度 +1. **工具签名对齐**:当前需要在 pi-agent-core 与 pi-coding-agent 签名之间做适配 +2. **Session manager 包装**:`guardSessionManager` 增加了安全性,但也提高了复杂度 3. **扩展加载**:可以更直接地使用 pi 的 `ResourceLoader` -4. **流式处理器复杂度**:`subscribeEmbeddedPiSession` 变得越来越庞大 -5. **提供商特殊情况**:存在许多提供商特定代码路径,而这些可能本应由 pi 来处理 +4. **流式处理器复杂度**:`subscribeEmbeddedPiSession` 已变得较大 +5. **提供商特殊行为**:存在许多提供商特定代码路径,而 pi 未来可能可以统一处理这些问题 ## 测试 @@ -566,4 +571,4 @@ Pi 集成覆盖以下测试套件: - `src/agents/pi-embedded-runner-extraparams.live.test.ts`(启用 `OPENCLAW_LIVE_TEST=1`) -当前运行命令请参见 [Pi 开发工作流](/zh-CN/pi-dev)。 +关于当前运行命令,请参见 [Pi Development Workflow](/zh-CN/pi-dev)。 diff --git a/docs/zh-CN/providers/opencode-go.md b/docs/zh-CN/providers/opencode-go.md index 9d684e0a4..858ec4270 100644 --- a/docs/zh-CN/providers/opencode-go.md +++ b/docs/zh-CN/providers/opencode-go.md @@ -2,13 +2,13 @@ read_when: - 你想要 OpenCode Go 目录 - 你需要 Go 托管模型的运行时模型引用 -summary: 使用共享的 OpenCode 设置配合 OpenCode Go 目录 +summary: 使用共享 OpenCode 设置中的 OpenCode Go 目录目录 title: OpenCode Go x-i18n: - generated_at: "2026-04-12T10:38:50Z" + generated_at: "2026-04-22T02:37:04Z" model: gpt-5.4 provider: openai - source_hash: d1f0f182de81729616ccc19125d93ba0445de2349daf7067b52e8c15b9d3539c + source_hash: bb03bc609f0dfff2981eac13b67cbcae066184f4606ce54ba24ca6a5737fdae8 source_path: providers/opencode-go.md workflow: 15 --- @@ -16,7 +16,7 @@ x-i18n: # OpenCode Go OpenCode Go 是 [OpenCode](/zh-CN/providers/opencode) 中的 Go 目录。 -它使用与 Zen 目录相同的 `OPENCODE_API_KEY`,但保留运行时提供商 id `opencode-go`,这样上游的按模型路由就能保持正确。 +它与 Zen 目录使用相同的 `OPENCODE_API_KEY`,但保留运行时提供商 id `opencode-go`,这样上游的按模型路由才能保持正确。 | 属性 | 值 | | ---------------- | ------------------------------- | @@ -26,11 +26,23 @@ OpenCode Go 是 [OpenCode](/zh-CN/providers/opencode) 中的 Go 目录。 ## 支持的模型 +OpenClaw 从内置的 Pi 模型注册表中获取 Go 目录。运行 +`openclaw models list --provider opencode-go` 查看当前模型列表。 + +根据当前内置的 Pi 目录,该提供商包含: + | 模型引用 | 名称 | -| -------------------------- | ------------ | +| -------------------------- | --------------------- | +| `opencode-go/glm-5` | GLM-5 | +| `opencode-go/glm-5.1` | GLM-5.1 | | `opencode-go/kimi-k2.5` | Kimi K2.5 | -| `opencode-go/glm-5` | GLM 5 | +| `opencode-go/kimi-k2.6` | Kimi K2.6(3 倍限制) | +| `opencode-go/mimo-v2-omni` | MiMo V2 Omni | +| `opencode-go/mimo-v2-pro` | MiMo V2 Pro | | `opencode-go/minimax-m2.5` | MiniMax M2.5 | +| `opencode-go/minimax-m2.7` | MiniMax M2.7 | +| `opencode-go/qwen3.5-plus` | Qwen3.5 Plus | +| `opencode-go/qwen3.6-plus` | Qwen3.6 Plus | ## 入门指南 @@ -84,21 +96,24 @@ OpenCode Go 是 [OpenCode](/zh-CN/providers/opencode) 中的 Go 目录。 - 当模型引用使用 `opencode-go/...` 时,OpenClaw 会自动处理按模型路由。无需额外的提供商配置。 + 当模型引用使用 + `opencode-go/...` 时,OpenClaw 会自动处理按模型路由。不需要额外的提供商配置。 - 运行时引用保持显式:Zen 使用 `opencode/...`,Go 使用 `opencode-go/...`。 - 这样可以在两个目录之间保持上游按模型路由正确无误。 + 运行时引用保持明确:Zen 使用 `opencode/...`,Go 使用 `opencode-go/...`。 + 这样可以在两个目录之间保持上游按模型路由的正确性。 - Zen 和 Go 目录都使用同一个 `OPENCODE_API_KEY`。在设置期间输入该密钥后,会为这两个运行时提供商都存储凭证。 + Zen 目录和 Go 目录使用相同的 `OPENCODE_API_KEY`。在设置期间输入 + 该密钥后,会同时为这两个运行时提供商存储凭证。 -有关共享新手引导概览以及完整的 Zen + Go 目录参考,请参阅 [OpenCode](/zh-CN/providers/opencode)。 +有关共享新手引导概览以及完整的 +Zen + Go 目录参考,请参阅 [OpenCode](/zh-CN/providers/opencode)。 ## 相关内容 @@ -108,6 +123,6 @@ OpenCode Go 是 [OpenCode](/zh-CN/providers/opencode) 中的 Go 目录。 共享新手引导、目录概览和高级说明。 - 选择提供商、模型引用和故障转移行为。 + 选择提供商、模型引用和故障切换行为。