diff options
| author | chenmi <[email protected]> | 2026-02-17 20:06:39 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-17 06:06:39 -0600 |
| commit | 4fd3141ab5d43a55566042982fb4459b5716e140 (patch) | |
| tree | a1faa0f22784999fffcace0a1f8853709a232b0d /packages/web/src/content/docs/zh-cn | |
| parent | 8d0a303af48da5e6c6d5287ef2144bfb49ca13d0 (diff) | |
| download | opencode-4fd3141ab5d43a55566042982fb4459b5716e140.tar.gz opencode-4fd3141ab5d43a55566042982fb4459b5716e140.zip | |
docs: improve zh-cn and zh-tw documentation translations (#13942)
Diffstat (limited to 'packages/web/src/content/docs/zh-cn')
34 files changed, 2358 insertions, 2310 deletions
diff --git a/packages/web/src/content/docs/zh-cn/acp.mdx b/packages/web/src/content/docs/zh-cn/acp.mdx index 47e0f3e05..b07520c5e 100644 --- a/packages/web/src/content/docs/zh-cn/acp.mdx +++ b/packages/web/src/content/docs/zh-cn/acp.mdx @@ -1,31 +1,31 @@ --- title: ACP 支持 -description: 在任何 ACP 兼容编辑器中使用 opencode。 +description: 在任何兼容 ACP 的编辑器中使用 OpenCode。 --- -opencode 支持 [Agent Client Protocol](https://agentclientprotocol.com) (ACP),允许您直接在兼容的编辑器和 IDE 中使用它。 +OpenCode 支持 [Agent Client Protocol](https://agentclientprotocol.com)(ACP),允许你直接在兼容的编辑器和 IDE 中使用它。 :::tip -有关支持 ACP 的编辑器和工具的列表,请查看 [Zed ACP progress report](https://zed.dev/blog/acp-progress-report#available-now)。 +有关支持 ACP 的编辑器和工具列表,请查看 [ACP 进展报告](https://zed.dev/blog/acp-progress-report#available-now)。 ::: -ACP 是一种开放协议,用于标准化代码编辑器和 AI 编码代理之间的通信。 +ACP 是一个开放协议,用于标准化代码编辑器与 AI 编码代理之间的通信。 --- ## 配置 -要通过 ACP 使用 opencode,须编辑器配置为运行 `opencode acp` 命令。 +要通过 ACP 使用 OpenCode,请在编辑器中配置运行 `opencode acp` 命令。 -该命令将 opencode 作为 ACP 兼容的子进程启动,通过 stdio 通过 JSON-RPC 与您的编辑器进行通信。 +该命令会将 OpenCode 作为兼容 ACP 的子进程启动,通过 stdio 上的 JSON-RPC 与编辑器进行通信。 -以下是支持 ACP 的流行编辑器的示例。 +以下是支持 ACP 的常用编辑器的配置示例。 --- ### Zed -添加到您的 [Zed](https://zed.dev) 配置 (`~/.config/zed/settings.json`): +添加到你的 [Zed](https://zed.dev) 配置文件(`~/.config/zed/settings.json`)中: ```json title="~/.config/zed/settings.json" { @@ -38,9 +38,9 @@ ACP 是一种开放协议,用于标准化代码编辑器和 AI 编码代理之 } ``` -要打开它,请使用 **命令面板** 中的 `agent: new thread` 操作。 +打开方式:在**命令面板**中执行 `agent: new thread` 操作。 -您还可以通过编辑 `keymap.json` 来绑定键盘快捷键: +你也可以通过编辑 `keymap.json` 来绑定键盘快捷键: ```json title="keymap.json" [ @@ -67,9 +67,9 @@ ACP 是一种开放协议,用于标准化代码编辑器和 AI 编码代理之 --- -### JetBrains IDE +### JetBrains IDEs -根据 [文档](https://www.jetbrains.com/help/ai-assistant/acp.html) 添加到你的 [JetBrains IDE](https://www.jetbrains.com/) `acp.json`: +根据[文档](https://www.jetbrains.com/help/ai-assistant/acp.html),将以下内容添加到你的 [JetBrains IDE](https://www.jetbrains.com/) 的 acp.json 中: ```json title="acp.json" { @@ -82,13 +82,13 @@ ACP 是一种开放协议,用于标准化代码编辑器和 AI 编码代理之 } ``` -要打开它,请在 AI Chat 代理选择器中使用新的 "opencode" 代理。 +打开方式:在 AI Chat 代理选择器中选择新的 'OpenCode' 代理。 --- ### Avante.nvim -添加到您的 [Avante.nvim](https://github.com/yetone/avante.nvim) 配置: +添加到你的 [Avante.nvim](https://github.com/yetone/avante.nvim) 配置中: ```lua { @@ -121,7 +121,7 @@ ACP 是一种开放协议,用于标准化代码编辑器和 AI 编码代理之 ### CodeCompanion.nvim -相当于 opencode 网关 [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim) 中的 ACP 代理,接下来将以下内容添加到 Neovim 配置中: +要在 [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim) 中将 OpenCode 用作 ACP 代理,请将以下内容添加到你的 Neovim 配置中: ```lua require("codecompanion").setup({ @@ -136,21 +136,21 @@ require("codecompanion").setup({ }) ``` -此配置将 CodeCompanion.nvim 设置为使用 opencode 作为聊天的 ACP 代理。 +此配置将 CodeCompanion 设置为使用 OpenCode 作为聊天的 ACP 代理。 -如果您需要传递环境变量(如 `OPENCODE_API_KEY`),请参阅 CodeCompanion.nvim 文档中的 [Configuration: Adapters](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) 了解完整信息。 +如果需要传递环境变量(如 `OPENCODE_API_KEY`),请参阅 CodeCompanion.nvim 文档中的[配置适配器:环境变量](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key)了解详细信息。 ## 支持 -opencode 通过 ACP 的工作方式与在终端中的工作方式相同。支持所有功能: +OpenCode 通过 ACP 使用时与在终端中使用的效果完全一致。所有功能均受支持: :::note -目前不支持某些内置斜杠命令,例如 `/undo` 和 `/redo`。 +部分内置斜杠命令(如 `/undo` 和 `/redo`)目前暂不支持。 ::: - 内置工具(文件操作、终端命令等) - 自定义工具和斜杠命令 -- 在 opencode 配置中配置的 MCP 服务器 -- `AGENTS.md` 的项目特定规则 -- 自定义程序和 linter +- 在 OpenCode 配置中配置的 MCP 服务器 +- 来自 `AGENTS.md` 的项目级规则 +- 自定义格式化工具和代码检查工具 - 代理和权限系统 diff --git a/packages/web/src/content/docs/zh-cn/agents.mdx b/packages/web/src/content/docs/zh-cn/agents.mdx index a94296f45..2087c6836 100644 --- a/packages/web/src/content/docs/zh-cn/agents.mdx +++ b/packages/web/src/content/docs/zh-cn/agents.mdx @@ -3,46 +3,45 @@ title: 代理 description: 配置和使用专门的代理。 --- -代理是专门的人工智能助手,可以针对特定任务和工作流程进行配置。它们允许您创建具有自定义提示、模型和工具访问权限的专用工具。 +代理是专门的 AI 助手,可以针对特定任务和工作流程进行配置。它们允许您创建具有自定义提示词、模型和工具访问权限的专用工具。 :::tip -使用 Plan 代理来分析代码并审查建议,而无需进行任何代码更改。 +使用 Plan 代理来分析代码和审查建议,而不会进行任何代码更改。 ::: -您可以在会话期间在代理之间切换,或使用 `@` 提及来调用它们。 +您可以在会话期间切换代理,或使用 `@` 提及来调用它们。 --- ## 类型 -OpenCode 有两种类型的代理;主代理和子代理。 +OpenCode 中有两种类型的代理:主代理和子代理。 --- ### 主代理 -主代理 (Primary) 是与您直接交互的主要助手。您可以使用 **Tab** 键或您配置的 `switch_agent` 键绑定循环浏览它们。这些代理处理您的主要对话。工具访问是通过权限配置的 - 例如,“Build”启用了所有工具,而“Plan”则受到限制。 +主代理是您直接交互的主要助手。您可以使用 **Tab** 键或配置的 `switch_agent` 快捷键来循环切换它们。这些代理处理您的主要对话。工具访问通过权限进行配置——例如,Build 启用了所有工具,而 Plan 则受到限制。 :::tip -您可以在会话期间使用 **Tab** 键在主代理之间进行切换。 +您可以在会话期间使用 **Tab** 键在主代理之间切换。 ::: -OpenCode 附带两个内置的主代理:**Build** 和 **Plan**。 -看看下面这些。 +OpenCode 内置了两个主代理:**Build** 和 **Plan**。我们将在下面介绍它们。 --- ### 子代理 -子代理 (Subagents) 是主代理可以调用来执行特定任务的专业助手。您还可以通过在消息中 **@提及** 它们来手动调用它们。 +子代理是主代理可以调用来执行特定任务的专业助手。您也可以通过在消息中 **@ 提及**它们来手动调用。 -OpenCode 附带两个内置子代理:**General** 和 **Explore**。我们将在下面看看这个。 +OpenCode 内置了两个子代理:**General** 和 **Explore**。我们将在下面介绍它们。 --- -## 内置 +## 内置代理 -OpenCode 附带两个内置主代理和两个内置子代理。 +OpenCode 内置了两个主代理和两个子代理。 --- @@ -50,7 +49,7 @@ OpenCode 附带两个内置主代理和两个内置子代理。 _模式_:`primary` -Build 是启用所有工具的 **默认** Primary 代理。这是用于需要完全访问文件操作和系统命令的开发工作的标准代理。 +Build 是启用了所有工具的**默认**主代理。这是用于需要完全访问文件操作和系统命令的开发工作的标准代理。 --- @@ -58,13 +57,13 @@ Build 是启用所有工具的 **默认** Primary 代理。这是用于需要完 _模式_:`primary` -专为规划和分析而设计的受限代理。我们使用权限系统为您提供更多控制并防止意外更改。 +一个专为规划和分析设计的受限代理。我们使用权限系统来为您提供更多控制权,并防止意外更改。 默认情况下,以下所有项均设置为 `ask`: -- `file edits`:所有书写、修复和编辑 +- `file edits`:所有写入、补丁和编辑 - `bash`:所有 bash 命令 -当您希望 LLM 分析代码、建议更改或创建计划而不是对代码库进行任何实际修改时,此代理非常有用。 +当您希望 LLM 分析代码、建议更改或创建计划,而不对代码库进行任何实际修改时,此代理非常有用。 --- @@ -72,7 +71,7 @@ _模式_:`primary` _模式_:`subagent` -用于研究复杂问题和执行多步骤任务的通用代理。它具有完整的工具访问权限(待办事项除外),因此可在需要时修改文件,并并行运行多个工作单元。 +一个用于研究复杂问题和执行多步骤任务的通用代理。拥有完整的工具访问权限(todo 除外),因此可以在需要时修改文件。可用于并行运行多个工作单元。 --- @@ -80,15 +79,15 @@ _模式_:`subagent` _模式_:`subagent` -用于探索代码库的快速只读代理。无法修改文件。当您需要按模式快速查找文件、搜索代码中的关键字或回答有关代码库的问题时,请使用此功能。 +一个用于探索代码库的快速只读代理。无法修改文件。当您需要按模式快速查找文件、搜索代码中的关键字或回答有关代码库的问题时,请使用此代理。 --- -### 使用 Compact +### 使用 Compaction _模式_:`primary` -隐藏的系统代理,将长上下文压缩为更小的抽象。它会在需要时自动运行,并且无法在 UI 中选择。 +隐藏的系统代理,将长上下文压缩为较小的摘要。它会在需要时自动运行,且无法在 UI 中选择。 --- @@ -96,7 +95,7 @@ _模式_:`primary` _模式_:`primary` -生成短会话标题的隐藏系统代理。它会自动运行,并且无法在 UI 中选择。 +隐藏的系统代理,用于生成简短的会话标题。它会自动运行,且无法在 UI 中选择。 --- @@ -104,33 +103,33 @@ _模式_:`primary` _模式_:`primary` -创建会话摘要的系统代理。它会自动运行,并且无法在 UI 中选择。 +隐藏的系统代理,用于创建会话摘要。它会自动运行,且无法在 UI 中选择。 --- ## 用法 -1. 对于主代理,请在会话期间使用 **Tab** 键循环浏览它们。您还可以使用配置的 `switch_agent` 键绑定。 +1. 对于主代理,在会话期间使用 **Tab** 键循环切换。您也可以使用配置的 `switch_agent` 快捷键。 -2. 可以调用子代理: - - **自动**由主代理根据其描述执行专门任务。 - - 通过在消息中 **@提及** 子代理手动进行。例如。 +2. 子代理可以通过以下方式调用: + - 由主代理根据其描述**自动**调用以执行专门任务。 + - 通过在消息中 **@ 提及**子代理来手动调用。例如: ```txt frame="none" @general help me search for this function ``` -3. **会话之间导航**:当子代理创建自己的子会话时,您可以使用以下命令在父会话和所有子会话之间导航: - - **\<Leader>+Right**(或您配置的 `session_child_cycle` 键绑定)向前循环父级 → 子级 1 → 子级 2 → ... → 父级 - - **\<Leader>+Left**(或您配置的 `session_child_cycle_reverse` 键绑定)向后循环父级 ← 子级 1 ← 子级 2 ← ... ← 父级 +3. **会话间导航**:当子代理创建自己的子会话时,您可以使用以下方式在父会话和所有子会话之间导航: + - **\<Leader>+Right**(或配置的 `session_child_cycle` 快捷键)向前循环:父会话 → 子会话1 → 子会话2 → ... → 父会话 + - **\<Leader>+Left**(或配置的 `session_child_cycle_reverse` 快捷键)向后循环:父会话 ← 子会话1 ← 子会话2 ← ... ← 父会话 - 这使您可以在主要对话和专门的子代理工作之间无缝切换。 + 这使您可以在主对话和专门的子代理工作之间无缝切换。 --- ## 配置 -您也可以自定义内置代理或通过配置创建您自己的代理。可以通过两种方式配置代理: +您可以自定义内置代理或通过配置创建自己的代理。代理可以通过两种方式进行配置: --- @@ -179,10 +178,10 @@ _模式_:`primary` ### Markdown -您还可以使用 Markdown 文件定义代理。将它们放入: +您还可以使用 Markdown 文件定义代理。将它们放在: - 全局:`~/.config/opencode/agents/` -- 每个项目:`.opencode/agents/` +- 项目级:`.opencode/agents/` ```markdown title="~/.config/opencode/agents/review.md" --- @@ -206,19 +205,19 @@ You are in code review mode. Focus on: Provide constructive feedback without making direct changes. ``` -Markdown 文件名成为代理名称。例如,`review.md` 创建 `review` 代理。 +Markdown 文件名即为代理名称。例如,`review.md` 会创建一个名为 `review` 的代理。 --- ## 选项 -让我们详细看看这些配置选项。 +让我们详细了解这些配置选项。 --- ### 描述 -使用 `description` 选项提供代理的作用以及使用时的简要描述。 +使用 `description` 选项提供代理的功能及使用场景的简要描述。 ```json title="opencode.json" { @@ -230,15 +229,15 @@ Markdown 文件名成为代理名称。例如,`review.md` 创建 `review` 代� } ``` -这是一个 **必需的** 配置选项。 +这是一个**必需的**配置选项。 --- ### 温度 -使用 `temperature` 配置控制 LLM 响应的随机性和创意。 +使用 `temperature` 配置控制 LLM 响应的随机性和创造力。 -较低的值使响应更加集中和确定,而较高的值则增加创造力和可变性。 +较低的值使响应更加集中和确定,而较高的值则增加创造力和多样性。 ```json title="opencode.json" { @@ -253,11 +252,11 @@ Markdown 文件名成为代理名称。例如,`review.md` 创建 `review` 代� } ``` -温度值范围通常为 0.0 到 1.0: +温度值通常范围为 0.0 到 1.0: -- **0.0-0.2**:响应更集中、确定性更高,适合代码分析和规划 -- **0.3-0.5**:平衡型响应,兼顾稳定性与创造力 -- **0.6-1.0**:响应更有创意和多样性,适合头脑风暴和探索 +- **0.0-0.2**:非常集中和确定性的响应,适合代码分析和规划 +- **0.3-0.5**:平衡的响应,兼顾一定创造力,适合一般开发任务 +- **0.6-1.0**:更有创造力和多样性的响应,适合头脑风暴和探索 ```json title="opencode.json" { @@ -277,15 +276,15 @@ Markdown 文件名成为代理名称。例如,`review.md` 创建 `review` 代� } ``` -如果未指定温度,OpenCode 将使用特定于模型的默认值;大多数模型通常为 0,Qwen 模型为 0.55。 +如果未指定温度,OpenCode 将使用模型特定的默认值;大多数模型通常为 0,Qwen 模型为 0.55。 --- ### 最大步数 -控制代理在被迫仅使用文本响应之前可以执行的最大代理迭代次数。这允许希望控制成本的用户对代理操作设置限制。 +控制代理在被强制以纯文本响应之前可以执行的最大代理迭代次数。这允许希望控制成本的用户对代理操作设置限制。 -如果未设置,代理将继续迭代,直到模型选择停止或用户中断会话。 +如果未设置此选项,代理将持续迭代,直到模型选择停止或用户中断会话。 ```json title="opencode.json" { @@ -299,17 +298,17 @@ Markdown 文件名成为代理名称。例如,`review.md` 创建 `review` 代� } ``` -当达到限制时,代理会收到特殊的系统提示,指示其响应其工作摘要和建议的剩余任务。 +当达到限制时,代理会收到一个特殊的系统提示词,指示其回复工作摘要和建议的剩余任务。 :::caution -旧版 `maxSteps` 字段已废弃。请改用 `steps`。 +旧版 `maxSteps` 字段已弃用。请改用 `steps`。 ::: --- ### 禁用 -设置为 `true` 以取消代理。 +设置为 `true` 以禁用代理。 ```json title="opencode.json" { @@ -323,9 +322,9 @@ Markdown 文件名成为代理名称。例如,`review.md` 创建 `review` 代� --- -### 提示 +### 提示词 -使用 `prompt` 配置为代理指定自定义系统提示文件。提示文件应包含特定于代理目的的说明。 +使用 `prompt` 配置为代理指定自定义系统提示词文件。提示词文件应包含针对代理用途的具体指令。 ```json title="opencode.json" { @@ -337,16 +336,16 @@ Markdown 文件名成为代理名称。例如,`review.md` 创建 `review` 代� } ``` -该路径相对于文件所在位置的配置。因此,这适用于全局 OpenCode 配置和项目特定配置。 +此路径相对于配置文件所在位置。因此它同时适用于全局 OpenCode 配置和项目级配置。 --- ### 模型 -使用 `model` 配置此代理的模型。对于使用针对不同任务优化的不同模型很有帮助。例如,更快的规划模型、更强大的实施模型。 +使用 `model` 配置为代理覆盖模型。适用于针对不同任务使用不同的优化模型。例如,用更快的模型进行规划,用更强大的模型进行实现。 :::tip -如果您不指定模型,主代理将使用 [全局配置的模型](/docs/config#models),而子代理将使用调用子代理的主代理的模型。 +如果您不指定模型,主代理将使用[全局配置的模型](/docs/config#models),而子代理将使用调用它的主代理所使用的模型。 ::: ```json title="opencode.json" @@ -359,13 +358,13 @@ Markdown 文件名成为代理名称。例如,`review.md` 创建 `review` 代� } ``` -OpenCode 配置中的模型 ID 使用格式 `provider/model-id`。例如,如果您使用 [OpenCode Zen](/docs/zen),则您将使用 `opencode/gpt-5.1-codex` 来表示 GPT 5.1 Codex。 +OpenCode 配置中的模型 ID 使用 `provider/model-id` 格式。例如,如果您使用 [OpenCode Zen](/docs/zen),则可以使用 `opencode/gpt-5.1-codex` 来表示 GPT 5.1 Codex。 --- ### 工具 -使用 `tools` 配置控制此代理中可用的工具。您可以通过将特定工具设置为 `true` 或 `false` 来启用或禁用特定工具。 +使用 `tools` 配置控制代理中可用的工具。您可以通过将特定工具设置为 `true` 或 `false` 来启用或禁用它们。 ```json title="opencode.json" {3-6,9-12} { @@ -386,7 +385,7 @@ OpenCode 配置中的模型 ID 使用格式 `provider/model-id`。例如,如� ``` :::note -特定于代理的配置会覆盖全局配置。 +代理级配置会覆盖全局配置。 ::: 您还可以使用通配符同时控制多个工具。例如,要禁用 MCP 服务器中的所有工具: @@ -406,17 +405,17 @@ OpenCode 配置中的模型 ID 使用格式 `provider/model-id`。例如,如� } ``` -[了解有关工具的更多信息](/docs/tools)。 +[了解更多关于工具的信息](/docs/tools)。 --- ### 权限 -您可以配置权限来管理代理可以执行的操作。 目前,`edit`、`bash` 和 `webfetch` 工具的权限可以配置为: +您可以配置权限来管理代理可以执行的操作。目前,`edit`、`bash` 和 `webfetch` 工具的权限可以配置为: -- `"ask"` — 运行工具提示批准之前 -- `"allow"` — 尚未批准所有操作 -- `"deny"` — 取消该工具 +- `"ask"` — 运行工具前提示审批 +- `"allow"` — 允许所有操作,无需审批 +- `"deny"` — 禁用该工具 ```json title="opencode.json" { @@ -427,7 +426,7 @@ OpenCode 配置中的模型 ID 使用格式 `provider/model-id`。例如,如� } ``` -您可以覆盖每个代理的这些权限。 +您可以按代理覆盖这些权限。 ```json title="opencode.json" {3-5,8-10} { @@ -464,7 +463,7 @@ permission: Only analyze code and suggest changes. ``` -您可以设置特定的 bash 命令的权限。 +您可以为特定的 bash 命令设置权限。 ```json title="opencode.json" {7} { @@ -482,7 +481,7 @@ Only analyze code and suggest changes. } ``` -这可以采用全局模式。 +这可以使用 glob 模式。 ```json title="opencode.json" {7} { @@ -500,7 +499,7 @@ Only analyze code and suggest changes. ``` 您还可以使用 `*` 通配符来管理所有命令的权限。 -由于最后一个匹配规则优先,因此将 `*` 通配符放在前面,将特定规则放在后面。 +由于最后匹配的规则优先,请将 `*` 通配符放在前面,将具体规则放在后面。 ```json title="opencode.json" {8} { @@ -518,13 +517,13 @@ Only analyze code and suggest changes. } ``` -[了解有关权限的更多信息](/docs/permissions)。 +[了解更多关于权限的信息](/docs/permissions)。 --- ### 模式 -使用 `mode` 配置控制代理的模式。 `mode` 选项用于确定如何使用代理。 +使用 `mode` 配置控制代理的模式。`mode` 选项用于确定代理的使用方式。 ```json title="opencode.json" { @@ -536,13 +535,13 @@ Only analyze code and suggest changes. } ``` -`mode` 选项可设置为 `primary`、`subagent` 或 `all`。如果未指定 `mode`,则默认为 `all`。 +`mode` 选项可以设置为 `primary`、`subagent` 或 `all`。如果未指定 `mode`,则默认为 `all`。 --- ### 隐藏 -使用 `hidden: true` 从 `@` 自动完成菜单隐藏子代理。对于只能由其他代理通过任务工具以编程方式调用的内部子代理很有帮助。 +使用 `hidden: true` 将子代理从 `@` 自动补全菜单中隐藏。适用于只应由其他代理通过 Task 工具以编程方式调用的内部子代理。 ```json title="opencode.json" { @@ -555,17 +554,17 @@ Only analyze code and suggest changes. } ``` -这仅影响自动完成菜单中的用户可见性。如果权限允许,模型仍然可以通过任务工具调用隐藏代理。 +这仅影响自动补全菜单中的用户可见性。如果权限允许,模型仍然可以通过 Task 工具调用隐藏的代理。 :::note -仅适用于 `mode: subagent` 代理。 +仅适用于 `mode: subagent` 的代理。 ::: --- ### 任务权限 -使用 `permission.task` 控制代理可以通过任务工具调用哪些子代理。使用 glob 模式进行灵活匹配。 +使用 `permission.task` 控制代理可以通过 Task 工具调用哪些子代理。使用 glob 模式进行灵活匹配。 ```json title="opencode.json" { @@ -584,21 +583,21 @@ Only analyze code and suggest changes. } ``` -当设置为 `deny` 时,子代理社区任务工具描述中因此完全删除,模型不会尝试调用它。 +当设置为 `deny` 时,子代理将从 Task 工具描述中完全移除,因此模型不会尝试调用它。 :::tip -规则按顺序评估,**最后匹配的规则触发**。在上面的示例中,`orchestrator-planner` 匹配 `*`(拒绝)和 `orchestrator-*`(允许),但由于 `orchestrator-*` 位于 `*` 之后,因此结果为 `allow`。 +规则按顺序评估,**最后匹配的规则优先**。在上面的示例中,`orchestrator-planner` 同时匹配 `*`(deny)和 `orchestrator-*`(allow),但由于 `orchestrator-*` 在 `*` 之后,所以结果为 `allow`。 ::: :::tip -用户始终可以通过 `@` 自动完成菜单直接调用任何子代理,即使代理的任务权限会拒绝它。 +用户始终可以通过 `@` 自动补全菜单直接调用任何子代理,即使代理的任务权限会拒绝它。 ::: --- ### 颜色 -在 UI 中的界面外观中使用 `color` 选项自定义代理。这会影响代理在界面中的显示方式。 +使用 `color` 选项自定义代理在 UI 中的视觉外观。这会影响代理在界面中的显示方式。 使用有效的十六进制颜色(例如 `#FF5733`)或主题颜色:`primary`、`secondary`、`accent`、`success`、`warning`、`error`、`info`。 @@ -619,7 +618,7 @@ Only analyze code and suggest changes. ### Top P -使用 `top_p` 选项控制响应多样性。控制随机性的温度替代方案。 +使用 `top_p` 选项控制响应多样性。这是控制随机性的温度替代方案。 ```json title="opencode.json" { @@ -635,11 +634,11 @@ Only analyze code and suggest changes. --- -### 其他 +### 其他选项 -您在代理配置中指定的任何其他选项都将作为模型选项 **直接** 传递给提供商。这允许您使用特定于提供商的功能和参数。 +您在代理配置中指定的任何其他选项都将作为模型选项**直接传递**给提供商。这允许您使用提供商特定的功能和参数。 -例如,使用 OpenAI 的推理模型,您可以控制推理工作: +例如,使用 OpenAI 的推理模型时,您可以控制推理力度: ```json title="opencode.json" {6,7} { @@ -654,10 +653,10 @@ Only analyze code and suggest changes. } ``` -这些附加选项是特定于模型和提供商的。检查提供商的文档以获取可用参数。 +这些附加选项是模型和提供商特定的。请查阅您的提供商文档以获取可用参数。 :::tip -运行 `opencode models` 查看可用模型的列表。 +运行 `opencode models` 查看可用模型列表。 ::: --- @@ -672,23 +671,23 @@ opencode agent create 此交互式命令将: -1. 询问代理保存在哪里;全局或特定项目。 +1. 询问代理的保存位置——全局或项目级。 2. 描述代理应该做什么。 -3. 生成适当的系统提示和标识符。 +3. 生成合适的系统提示词和标识符。 4. 让您选择代理可以访问哪些工具。 -5. 最后,使用代理配置创建一个 markdown 文件。 +5. 最后,创建一个包含代理配置的 Markdown 文件。 --- -## 使用案例 +## 使用场景 -以下是不同代理的一些常见用例。 +以下是不同代理的一些常见使用场景。 -- **Build Agent**:启用所有工具的完整开发工作 -- **Plan Agent**:分析规划,不做改动 -- **Review Agent**:具有只读访问权限和文档工具的代码审查 -- **Debug Agent**:专注于启用 bash 和读取工具的调查 -- **Docs Agent**:使用文件操作但不使用系统命令的文档编写 +- **Build 代理**:启用所有工具的完整开发工作 +- **Plan 代理**:分析和规划,不进行任何更改 +- **Review 代理**:具有只读访问权限和文档工具的代码审查 +- **Debug 代理**:专注于问题排查,启用 bash 和读取工具 +- **Docs 代理**:文档编写,具有文件操作但不使用系统命令 --- @@ -697,7 +696,7 @@ opencode agent create 以下是一些您可能会觉得有用的示例代理。 :::tip -您有想要分享的代理吗? [提交 PR](https://github.com/anomalyco/opencode)。 +您有想要分享的代理吗?[提交 PR](https://github.com/anomalyco/opencode)。 ::: --- @@ -724,7 +723,7 @@ Focus on: --- -### 安全审计员 +### 安全审计代理 ```markdown title="~/.config/opencode/agents/security-auditor.md" --- diff --git a/packages/web/src/content/docs/zh-cn/cli.mdx b/packages/web/src/content/docs/zh-cn/cli.mdx index 6d2ea032d..490d59ca0 100644 --- a/packages/web/src/content/docs/zh-cn/cli.mdx +++ b/packages/web/src/content/docs/zh-cn/cli.mdx @@ -1,17 +1,17 @@ --- title: CLI -description: opencode CLI 选项和命令。 +description: OpenCode CLI 选项和命令。 --- import { Tabs, TabItem } from "@astrojs/starlight/components" -默认情况下,opencode CLI 在不带任何参数运行时启动 [TUI](/docs/tui)。 +OpenCode CLI 在不带任何参数运行时,默认启动 [TUI](/docs/tui)。 ```bash opencode ``` -但它也接受本页记录的命令。这允许您以编程方式与 opencode 交互。 +但它也接受本页面中记录的命令,使您可以通过编程方式与 OpenCode 进行交互。 ```bash opencode run "Explain how closures work in JavaScript" @@ -21,7 +21,7 @@ opencode run "Explain how closures work in JavaScript" ### tui -启动 opencode 终端用户界面。 +启动 OpenCode 终端用户界面。 ```bash opencode [project] @@ -32,25 +32,25 @@ opencode [project] | 标志 | 简写 | 描述 | | ------------ | ---- | --------------------------------------------------------- | | `--continue` | `-c` | 继续上一个会话 | -| `--session` | `-s` | 继续的会话 ID | -| `--fork` | | 继续时分叉会话(与 `--continue` 或 `--session` 一起使用) | -| `--prompt` | | 使用的提示 | -| `--model` | `-m` | 使用的模型 (provider/model) | -| `--agent` | | 使用的代理 | +| `--session` | `-s` | 要继续的会话 ID | +| `--fork` | | 继续时分叉会话(与 `--continue` 或 `--session` 配合使用) | +| `--prompt` | | 要使用的提示词 | +| `--model` | `-m` | 要使用的模型,格式为 provider/model | +| `--agent` | | 要使用的代理 | | `--port` | | 监听端口 | -| `--hostname` | | 监听的主机名 | +| `--hostname` | | 监听主机名 | --- ## 命令 -opencode CLI 还具有以下命令。 +OpenCode CLI 还提供以下命令。 --- ### agent -管理 opencode 代理。 +管理 OpenCode 的代理。 ```bash opencode agent [command] @@ -60,13 +60,13 @@ opencode agent [command] ### attach -将终端附加到通过 `serve` 或 `web` 命令启动的已运行 opencode 后端服务器。 +将终端连接到已通过 `serve` 或 `web` 命令启动的 OpenCode 后端服务器。 ```bash opencode attach [url] ``` -这允许将 TUI 与远程 opencode 后端一起使用。例如: +这允许将 TUI 与远程 OpenCode 后端配合使用。例如: ```bash # Start the backend server for web/mobile access @@ -81,19 +81,19 @@ opencode attach http://10.20.30.40:4096 | 标志 | 简写 | 描述 | | ----------- | ---- | ------------------- | | `--dir` | | 启动 TUI 的工作目录 | -| `--session` | `-s` | 继续的会话 ID | +| `--session` | `-s` | 要继续的会话 ID | --- #### create -使用自定义配置创建新代理。 +使用自定义配置创建新的代理。 ```bash opencode agent create ``` -此命令将指导您使用自定义系统提示和工具配置创建新代理。 +此命令将引导您使用自定义系统提示词和工具配置来创建新的代理。 --- @@ -109,7 +109,7 @@ opencode agent list ### auth -用于管理提供商的凭据和登录的命令。 +管理提供商的凭据和登录信息的命令。 ```bash opencode auth [command] @@ -119,25 +119,25 @@ opencode auth [command] #### login -opencode 由 [Models.dev](https://models.dev) 上的提供商列表支持,因此您可以使用 `opencode auth login` 来为您想要使用的任何提供商配置 API 密钥。它存储在 `~/.local/share/opencode/auth.json` 中。 +OpenCode 基于 [Models.dev](https://models.dev) 的提供商列表运行,因此您可以使用 `opencode auth login` 为任何想要使用的提供商配置 API 密钥。密钥存储在 `~/.local/share/opencode/auth.json` 中。 ```bash opencode auth login ``` -当 opencode 启动时,它会从凭据文件加载提供商。以及如果在您的环境或项目中的 `.env` 文件中定义了任何密钥。 +OpenCode 启动时会从凭据文件加载提供商信息,同时也会加载环境变量或项目中 `.env` 文件中定义的密钥。 --- #### list -列出凭据文件中存储的所有经过身份验证的提供商。 +列出凭据文件中存储的所有已认证提供商。 ```bash opencode auth list ``` -或者简短的版本。 +或使用简写版本。 ```bash opencode auth ls @@ -147,7 +147,7 @@ opencode auth ls #### logout -通过从凭据文件中清除提供商,将您从提供商中注销。 +从凭据文件中清除提供商信息以完成登出。 ```bash opencode auth logout @@ -157,7 +157,7 @@ opencode auth logout ### github -管理 GitHub 代理以实现存储库自动化。 +管理用于仓库自动化的 GitHub 代理。 ```bash opencode github [command] @@ -167,36 +167,36 @@ opencode github [command] #### install -在您的存储库中安装 GitHub 代理。 +在您的仓库中安装 GitHub 代理。 ```bash opencode github install ``` -这将设置必要的 GitHub Actions 工作流程并指导您完成配置过程。 [了解更多](/docs/github)。 +此命令会设置必要的 GitHub Actions 工作流并引导您完成配置过程。[了解更多](/docs/github)。 --- #### run -运行 GitHub 代理。这通常用在 GitHub Actions 中。 +运行 GitHub 代理。通常在 GitHub Actions 中使用。 ```bash opencode github run ``` -#### 标志 +##### 标志 | 标志 | 描述 | | --------- | ------------------------------ | | `--event` | 用于运行代理的 GitHub 模拟事件 | -| `--token` | GitHub 个人访问 Token | +| `--token` | GitHub 个人访问令牌 | --- ### mcp -管理模型上下文协议 (MCP) 服务器。 +管理 Model Context Protocol 服务器。 ```bash opencode mcp [command] @@ -212,7 +212,7 @@ opencode mcp [command] opencode mcp add ``` -此命令将指导您添加本地或远程 MCP 服务器。 +此命令将引导您添加本地或远程 MCP 服务器。 --- @@ -224,7 +224,7 @@ opencode mcp add opencode mcp list ``` -或者使用简短版本。 +或使用简写版本。 ```bash opencode mcp ls @@ -234,7 +234,7 @@ opencode mcp ls #### auth -使用启用 OAuth 的 MCP 服务器进行身份验证。 +对支持 OAuth 的 MCP 服务器进行认证。 ```bash opencode mcp auth [name] @@ -242,13 +242,13 @@ opencode mcp auth [name] 如果您不提供服务器名称,系统将提示您从可用的支持 OAuth 的服务器中进行选择。 -您还可以列出支持 OAuth 的服务器及其身份验证状态。 +您还可以列出支持 OAuth 的服务器及其认证状态。 ```bash opencode mcp auth list ``` -或者使用简短版本。 +或使用简写版本。 ```bash opencode mcp auth ls @@ -258,7 +258,7 @@ opencode mcp auth ls #### logout -删除 MCP 服务器的 OAuth 凭据。 +移除 MCP 服务器的 OAuth 凭据。 ```bash opencode mcp logout [name] @@ -284,11 +284,11 @@ opencode mcp debug <name> opencode models [provider] ``` -此命令以 `provider/model` 格式显示您配置的提供商中可用的所有模型。 +此命令以 `provider/model` 的格式显示所有已配置提供商中可用的模型。 -这对于确定 [你的配置](/docs/config/) 中使用的确切模型名称很有帮助。 +这对于确定在[配置文件](/docs/config/)中使用的确切模型名称非常有用。 -您可以选择提供提供商 ID 并按该提供商筛选模型。 +您可以选择传入提供商 ID 来按提供商筛选模型。 ```bash opencode models anthropic @@ -299,9 +299,9 @@ opencode models anthropic | 标志 | 描述 | | ----------- | ---------------------------------------- | | `--refresh` | 从 models.dev 刷新模型缓存 | -| `--verbose` | 使用更详细的模型输出(包括成本等元数据) | +| `--verbose` | 使用更详细的模型输出(包含费用等元数据) | -使用 `--refresh` 标志来更新服务器的模型列表。当新模型已添加到提供商并且您希望在 opencode 中查看它们时,这非常有用。 +使用 `--refresh` 标志可以更新缓存的模型列表。当提供商新增了模型并且您希望在 OpenCode 中看到它们时,此功能非常有用。 ```bash opencode models --refresh @@ -311,19 +311,19 @@ opencode models --refresh ### run -通过直接传递提示以非交互模式运行 opencode。 +以非交互模式运行 OpenCode,直接传入提示词。 ```bash opencode run [message..] ``` -这对于编写脚本、自动化,或者当您想要快速获得答案而不是完整的 TUI 时非常有用。例如。 +这对于脚本编写、自动化或无需启动完整 TUI 即可快速获取答案的场景非常有用。例如: ```bash "opencode run" opencode run Explain the use of context in Go ``` -您还可以附加到正在运行的 `opencode serve` 实例,以避免每次运行时 MCP 服务器冷启动时间: +您还可以连接到正在运行的 `opencode serve` 实例,以避免每次运行时 MCP 服务器的冷启动时间: ```bash # Start a headless server in one terminal @@ -335,47 +335,47 @@ opencode run --attach http://localhost:4096 "Explain async/await in JavaScript" #### 标志 -| 标志 | 简写 | 描述 | -| ------------ | ---- | --------------------------------------------------------------- | -| `--command` | | 要运行的命令,使用消息作为参数 | -| `--continue` | `-c` | 继续上一个会话 | -| `--session` | `-s` | 继续的会话 ID | -| `--fork` | | 继续时分叉会话(与 `--continue` 或 `--session` 一起使用) | -| `--share` | | 分享会话 | -| `--model` | `-m` | 使用的模型 (provider/model) | -| `--agent` | | 使用的代理 | -| `--file` | `-f` | 要附加到消息的文件 | -| `--format` | | 格式:default(格式化)或 json(原始 JSON 事件) | -| `--title` | | 会话标题(如果未提供值,则使用截断的提示) | -| `--attach` | | 连接到正在运行的 opencode 服务器(例如,http://localhost:4096) | -| `--port` | | 本地服务器的端口(默认为随机端口) | +| 标志 | 简写 | 描述 | +| ------------ | ---- | -------------------------------------------------------------- | +| `--command` | | 要运行的命令,使用 message 作为参数 | +| `--continue` | `-c` | 继续上一个会话 | +| `--session` | `-s` | 要继续的会话 ID | +| `--fork` | | 继续时分叉会话(与 `--continue` 或 `--session` 配合使用) | +| `--share` | | 分享会话 | +| `--model` | `-m` | 要使用的模型,格式为 provider/model | +| `--agent` | | 要使用的代理 | +| `--file` | `-f` | 附加到消息的文件 | +| `--format` | | 格式:default(格式化输出)或 json(原始 JSON 事件) | +| `--title` | | 会话标题(未提供值时使用截断的提示词) | +| `--attach` | | 连接到正在运行的 opencode 服务器(例如 http://localhost:4096) | +| `--port` | | 本地服务器端口(默认为随机端口) | --- ### serve -启动无头 opencode 服务器以进行 API 访问。查看 [服务器文档](/docs/server) 以获取完整的 HTTP 接口。 +启动无界面的 OpenCode 服务器以提供 API 访问。查看[服务器文档](/docs/server)了解完整的 HTTP 接口。 ```bash opencode serve ``` -这将启动一个 HTTP 服务器,该服务器提供对 opencode 功能的 API 访问,无需 TUI 界面。设置 `OPENCODE_SERVER_PASSWORD` 以启用 HTTP 基本身份验证(用户名默认为 `opencode`)。 +此命令启动一个 HTTP 服务器,提供对 OpenCode 功能的 API 访问,无需 TUI 界面。设置 `OPENCODE_SERVER_PASSWORD` 可启用 HTTP 基本认证(用户名默认为 `opencode`)。 #### 标志 -| 标志 | 描述 | -| ------------ | ------------------------ | -| `--port` | 监听端口 | -| `--hostname` | 监听的主机名 | -| `--mdns` | 启用 mDNS 发现 | -| `--cors` | 允许 CORS 的其他浏览器源 | +| 标志 | 描述 | +| ------------ | -------------------------- | +| `--port` | 监听端口 | +| `--hostname` | 监听主机名 | +| `--mdns` | 启用 mDNS 发现 | +| `--cors` | 允许 CORS 的额外浏览器来源 | --- ### session -管理 opencode 会话。 +管理 OpenCode 会话。 ```bash opencode session [command] @@ -385,7 +385,7 @@ opencode session [command] #### list -列出所有 opencode 会话。 +列出所有 OpenCode 会话。 ```bash opencode session list @@ -393,16 +393,16 @@ opencode session list ##### 标志 -| 标志 | 简写 | 描述 | -| ------------- | ---- | ------------------------------ | -| `--max-count` | `-n` | 限制为最近的 N 个会话 | -| `--format` | | 输出格式:table 或 json(table) | +| 标志 | 简写 | 描述 | +| ------------- | ---- | ------------------------------------- | +| `--max-count` | `-n` | 限制为最近 N 个会话 | +| `--format` | | 输出格式:table 或 json(默认 table) | --- ### stats -显示 opencode 会话的 Token 使用情况和成本统计信息。 +显示 OpenCode 会话的 Token 用量和费用统计信息。 ```bash opencode stats @@ -410,12 +410,12 @@ opencode stats #### 标志 -| 标志 | 描述 | -| ----------- | -------------------------------------------------------- | -| `--days` | 显示过去 N 天(所有时间)的统计数据 | -| `--tools` | 显示工具数量(全部) | -| `--models` | 显示模型使用情况细分(默认隐藏)。输入一个数字来显示前 N | -| `--project` | 按项目过滤(所有项目,空字符串:当前项目) | +| 标志 | 描述 | +| ----------- | ------------------------------------------------------ | +| `--days` | 显示最近 N 天的统计信息(默认为所有时间) | +| `--tools` | 显示的工具数量(默认为全部) | +| `--models` | 显示模型用量明细(默认隐藏)。传入数字可显示前 N 个 | +| `--project` | 按项目筛选(默认为所有项目,传入空字符串表示当前项目) | --- @@ -433,13 +433,13 @@ opencode export [sessionID] ### import -从 JSON 文件或 opencode 共享 URL 导入会话数据。 +从 JSON 文件或 OpenCode 分享链接导入会话数据。 ```bash opencode import <file> ``` -您可以从本地文件或 opencode 共享 URL 导入。 +您可以从本地文件或 OpenCode 分享链接导入。 ```bash opencode import session.json @@ -450,48 +450,48 @@ opencode import https://opncd.ai/s/abc123 ### web -使用 Web 界面启动无头 opencode 服务器。 +启动带有 Web 界面的无界面 OpenCode 服务器。 ```bash opencode web ``` -这将启动 HTTP 服务器并打开 Web 浏览器以通过 Web 界面访问 opencode。设置 `OPENCODE_SERVER_PASSWORD` 以启用 HTTP 基本身份验证(用户名默认为 `opencode`)。 +此命令启动一个 HTTP 服务器并打开浏览器,通过 Web 界面访问 OpenCode。设置 `OPENCODE_SERVER_PASSWORD` 可启用 HTTP 基本认证(用户名默认为 `opencode`)。 #### 标志 -| 标志 | 描述 | -| ------------ | ------------------------ | -| `--port` | 监听端口 | -| `--hostname` | 监听的主机名 | -| `--mdns` | 启用 mDNS 发现 | -| `--cors` | 允许 CORS 的其他浏览器源 | +| 标志 | 描述 | +| ------------ | -------------------------- | +| `--port` | 监听端口 | +| `--hostname` | 监听主机名 | +| `--mdns` | 启用 mDNS 发现 | +| `--cors` | 允许 CORS 的额外浏览器来源 | --- ### acp -启动 ACP (Agent Client Protocol) 服务器。 +启动 ACP(Agent Client Protocol)服务器。 ```bash opencode acp ``` -此命令启动一个 ACP 服务器,该服务器使用 nd-JSON 通过 stdin/stdout 进行通信。 +此命令启动一个通过 stdin/stdout 使用 nd-JSON 进行通信的 ACP 服务器。 #### 标志 -| 标志 | 描述 | -| ------------ | ------------ | -| `--cwd` | 工作目录 | -| `--port` | 监听端口 | -| `--hostname` | 监听的主机名 | +| 标志 | 描述 | +| ------------ | ---------- | +| `--cwd` | 工作目录 | +| `--port` | 监听端口 | +| `--hostname` | 监听主机名 | --- ### uninstall -卸载 opencode 并删除所有相关文件。 +卸载 OpenCode 并删除所有相关文件。 ```bash opencode uninstall @@ -499,30 +499,30 @@ opencode uninstall #### 标志 -| 标志 | 简写 | 描述 | -| --------------- | ---- | ---------------------------- | -| `--keep-config` | `-c` | 保留配置文件 | -| `--keep-data` | `-d` | 保留会话数据和快照 | -| `--dry-run` | | 显示将删除的内容但不实际删除 | -| `--force` | `-f` | 跳过确认提示 | +| 标志 | 简写 | 描述 | +| --------------- | ---- | ------------------------------ | +| `--keep-config` | `-c` | 保留配置文件 | +| `--keep-data` | `-d` | 保留会话数据和快照 | +| `--dry-run` | | 显示将被删除的内容但不实际删除 | +| `--force` | `-f` | 跳过确认提示 | --- ### upgrade -将 opencode 更新到最新版本或特定版本。 +将 OpenCode 更新到最新版本或指定版本。 ```bash opencode upgrade [target] ``` -升级到最新版本。 +更新到最新版本。 ```bash opencode upgrade ``` -升级到特定版本。 +更新到指定版本。 ```bash opencode upgrade v0.1.48 @@ -532,72 +532,72 @@ opencode upgrade v0.1.48 | 标志 | 简写 | 描述 | | ---------- | ---- | ------------------------------------------ | -| `--method` | `-m` | 使用的安装方法;curl, npm, pnpm, bun, brew | +| `--method` | `-m` | 使用的安装方式:curl、npm、pnpm、bun、brew | --- ## 全局标志 -opencode CLI 接受以下全局标志。 +OpenCode CLI 接受以下全局标志。 -| 标志 | 简写 | 描述 | -| -------------- | ---- | ----------------------------------- | -| `--help` | `-h` | 显示帮助 | -| `--version` | `-v` | 打印版本号 | -| `--print-logs` | | 将日志打印到 stderr | -| `--log-level` | | 日志级别 (DEBUG, INFO, WARN, ERROR) | +| 标志 | 简写 | 描述 | +| -------------- | ---- | ------------------------------------ | +| `--help` | `-h` | 显示帮助信息 | +| `--version` | `-v` | 打印版本号 | +| `--print-logs` | | 将日志输出到 stderr | +| `--log-level` | | 日志级别(DEBUG、INFO、WARN、ERROR) | --- ## 环境变量 -可以使用环境变量配置 opencode。 - -| 变量 | 类型 | 描述 | -| ------------------------------------- | ------- | ----------------------------------------- | -| `OPENCODE_AUTO_SHARE` | boolean | 自动共享会话 | -| `OPENCODE_GIT_BASH_PATH` | string | Windows 上 Git Bash 可执行文件的路径 | -| `OPENCODE_CONFIG` | string | 配置文件路径 | -| `OPENCODE_CONFIG_DIR` | string | 配置目录的路径 | -| `OPENCODE_CONFIG_CONTENT` | string | 内联 json 配置内容 | -| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | 禁用自动更新检查 | -| `OPENCODE_DISABLE_PRUNE` | boolean | 禁用数据的修剪 | -| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | 禁用自动终端标题更新 | -| `OPENCODE_PERMISSION` | string | 内联 json 权限配置 | -| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | 禁用默认插件 | -| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | 禁用自动 LSP 服务器下载 | -| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | 启用实验模型 | -| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | 禁用自动上下文压缩 | -| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | 禁用从 `.claude` 读取(提示+技能) | -| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | 禁用读取 `~/.claude/CLAUDE.md` | -| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | 禁用加载 `.claude/skills` | -| `OPENCODE_DISABLE_MODELS_FETCH` | boolean | 禁用从远程源获取模型 | -| `OPENCODE_FAKE_VCS` | string | 用于测试目的的伪造 VCS | -| `OPENCODE_DISABLE_FILETIME_CHECK` | boolean | 禁用文件时间检查以进行优化 | -| `OPENCODE_CLIENT` | string | 客户端标识符(默认为 `cli`) | -| `OPENCODE_ENABLE_EXA` | boolean | 启用 Exa 网络搜索工具 | -| `OPENCODE_SERVER_PASSWORD` | string | 为 `serve`/`web` 启用基本身份验证 | -| `OPENCODE_SERVER_USERNAME` | string | 覆盖基本身份验证用户名(默认 `opencode`) | -| `OPENCODE_MODELS_URL` | string | 用于获取模型配置的自定义 URL | +OpenCode 可以通过环境变量进行配置。 + +| 变量 | 类型 | 描述 | +| ------------------------------------- | ------- | --------------------------------------- | +| `OPENCODE_AUTO_SHARE` | boolean | 自动分享会话 | +| `OPENCODE_GIT_BASH_PATH` | string | Windows 上 Git Bash 可执行文件的路径 | +| `OPENCODE_CONFIG` | string | 配置文件路径 | +| `OPENCODE_CONFIG_DIR` | string | 配置目录路径 | +| `OPENCODE_CONFIG_CONTENT` | string | 内联 JSON 配置内容 | +| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | 禁用自动更新检查 | +| `OPENCODE_DISABLE_PRUNE` | boolean | 禁用旧数据清理 | +| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | 禁用自动终端标题更新 | +| `OPENCODE_PERMISSION` | string | 内联 JSON 权限配置 | +| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | 禁用默认插件 | +| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | 禁用 LSP 服务器自动下载 | +| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | 启用实验性模型 | +| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | 禁用自动上下文压缩 | +| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | 禁用读取 `.claude`(提示词 + 技能) | +| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | 禁用读取 `~/.claude/CLAUDE.md` | +| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | 禁用加载 `.claude/skills` | +| `OPENCODE_DISABLE_MODELS_FETCH` | boolean | 禁用从远程源获取模型 | +| `OPENCODE_FAKE_VCS` | string | 用于测试目的的模拟 VCS 提供商 | +| `OPENCODE_DISABLE_FILETIME_CHECK` | boolean | 禁用文件时间检查优化 | +| `OPENCODE_CLIENT` | string | 客户端标识符(默认为 `cli`) | +| `OPENCODE_ENABLE_EXA` | boolean | 启用 Exa 网络搜索工具 | +| `OPENCODE_SERVER_PASSWORD` | string | 为 `serve`/`web` 启用基本认证 | +| `OPENCODE_SERVER_USERNAME` | string | 覆盖基本认证用户名(默认为 `opencode`) | +| `OPENCODE_MODELS_URL` | string | 自定义模型配置获取 URL | --- ### 实验性功能 -这些环境变量启用可能会更改或删除的实验性功能。 - -| 变量 | 类型 | 描述 | -| ----------------------------------------------- | ------- | ----------------------------------- | -| `OPENCODE_EXPERIMENTAL` | boolean | 启用所有实验性功能 | -| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | 启用图标发现 | -| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolean | 在 TUI 中禁用选择时复制 | -| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | number | bash 命令的默认超时(以毫秒为单位) | -| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | number | LLM 响应的最大输出 Token | -| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | 为整个目录启用文件观察器 | -| `OPENCODE_EXPERIMENTAL_OXFMT` | boolean | 启用 oxfmt 格式化程序 | -| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolean | 启用实验性 LSP 工具 | -| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | 禁用文件观察器 | -| `OPENCODE_EXPERIMENTAL_EXA` | boolean | 启用实验性 Exa 功能 | -| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolean | 启用实验性 LSP 类型检查 | -| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolean | 启用实验性 Markdown 功能 | -| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | 启用计划模式 | +这些环境变量用于启用可能会更改或移除的实验性功能。 + +| 变量 | 类型 | 描述 | +| ----------------------------------------------- | ------- | ------------------------------- | +| `OPENCODE_EXPERIMENTAL` | boolean | 启用所有实验性功能 | +| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | 启用图标发现 | +| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolean | 禁用 TUI 中的选中即复制 | +| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | number | bash 命令的默认超时时间(毫秒) | +| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | number | LLM 响应的最大输出 Token 数 | +| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | 启用整个目录的文件监听器 | +| `OPENCODE_EXPERIMENTAL_OXFMT` | boolean | 启用 oxfmt 格式化器 | +| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolean | 启用实验性 LSP 工具 | +| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | 禁用文件监听器 | +| `OPENCODE_EXPERIMENTAL_EXA` | boolean | 启用实验性 Exa 功能 | +| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolean | 启用实验性 LSP 类型检查 | +| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolean | 启用实验性 Markdown 功能 | +| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | 启用计划模式 | diff --git a/packages/web/src/content/docs/zh-cn/commands.mdx b/packages/web/src/content/docs/zh-cn/commands.mdx index 548b681b0..751a9ff27 100644 --- a/packages/web/src/content/docs/zh-cn/commands.mdx +++ b/packages/web/src/content/docs/zh-cn/commands.mdx @@ -3,13 +3,13 @@ title: 命令 description: 为重复任务创建自定义命令。 --- -自定义命令允许您指定在 TUI 中执行该命令时要运行的提示。 +自定义命令允许你指定一个提示词,当在 TUI 中执行该命令时会运行这个提示词。 ```bash frame="none" /my-command ``` -除了 `/init`、`/undo`、`/redo`、`/share`、`/help` 等内置命令之外,还有自定义命令。 [了解更多](/docs/tui#commands)。 +自定义命令是 `/init`、`/undo`、`/redo`、`/share`、`/help` 等内置命令之外的补充。[了解更多](/docs/tui#commands)。 --- @@ -30,9 +30,9 @@ Run the full test suite with coverage report and show any failures. Focus on the failing tests and suggest fixes. ``` -frontmatter 定义命令属性。内容成为模板。 +frontmatter 定义命令属性,内容则成为模板。 -通过键入 `/` 后跟命令名称来使用该命令。 +通过输入 `/` 后跟命令名称来使用该命令。 ```bash frame="none" "/test" @@ -42,13 +42,13 @@ frontmatter 定义命令属性。内容成为模板。 ## 配置 -您可以通过 opencode 配置或通过在 `commands/` 目录中创建 markdown 文件来添加自定义命令。 +你可以通过 OpenCode 配置或在 `commands/` 目录中创建 markdown 文件来添加自定义命令。 --- ### JSON -在 opencode [配置](/docs/config) 中使用 `command` 选项: +在 OpenCode [配置](/docs/config)中使用 `command` 选项: ```json title="opencode.jsonc" {4-12} { @@ -67,7 +67,7 @@ frontmatter 定义命令属性。内容成为模板。 } ``` -现在您可以在 TUI 中运行这个命令: +现在你可以在 TUI 中运行这个命令: ```bash frame="none" /test @@ -77,10 +77,10 @@ frontmatter 定义命令属性。内容成为模板。 ### Markdown -您还可以使用 Markdown 文件定义命令。将它们放入: +你还可以使用 markdown 文件定义命令。将它们放在: - 全局:`~/.config/opencode/commands/` -- 每个项目:`.opencode/commands/` +- 项目级:`.opencode/commands/` ```markdown title="~/.config/opencode/commands/test.md" --- @@ -93,8 +93,7 @@ Run the full test suite with coverage report and show any failures. Focus on the failing tests and suggest fixes. ``` -Markdown 文件名成为命令名。例如,`test.md` 让 -你运行: +markdown 文件名即为命令名。例如,`test.md` 允许你运行: ```bash frame="none" /test @@ -102,15 +101,15 @@ Markdown 文件名成为命令名。例如,`test.md` 让 --- -## 提示配置 +## 提示词配置 -自定义命令的提示支持几个特殊的占位符和语法。 +自定义命令的提示词支持多种特殊占位符和语法。 --- ### 参数 -使用 `$ARGUMENTS` 占位符将参数提交给命令。 +使用 `$ARGUMENTS` 占位符向命令传递参数。 ```md title=".opencode/commands/component.md" --- @@ -121,20 +120,20 @@ Create a new React component named $ARGUMENTS with TypeScript support. Include proper typing and basic structure. ``` -使用参数运行命令: +带参数运行命令: ```bash frame="none" /component Button ``` -`$ARGUMENTS` 将替换为 `Button`。 +`$ARGUMENTS` 将被替换为 `Button`。 -您还可以使用位置参数访问各个参数: +你还可以使用位置参数访问各个参数: - `$1` - 第一个参数 - `$2` - 第二个参数 - `$3` - 第三个参数 -- 等等... +- 以此类推... 例如: @@ -153,19 +152,19 @@ with the following content: $3 /create-file config.json src "{ \"key\": \"value\" }" ``` -这取代了: +替换结果为: -- `$1` 与 `config.json` -- `$2` 与 `src` -- `$3` 与 `{ "key": "value" }` +- `$1` 替换为 `config.json` +- `$2` 替换为 `src` +- `$3` 替换为 `{ "key": "value" }` --- ### Shell 输出 -使用 _!`command`_ 将 [bash 命令](/docs/tui#bash-commands) 输出注入到提示符中。 +使用 _!`command`_ 将 [bash 命令](/docs/tui#bash-commands)输出注入到提示词中。 -例如,要创建分析测试覆盖率的自定义命令: +例如,创建一个分析测试覆盖率的自定义命令: ```md title=".opencode/commands/analyze-coverage.md" --- @@ -191,13 +190,13 @@ Recent git commits: Review these changes and suggest any improvements. ``` -命令在项目的根目录中运行,其输出成为提示的一部分。 +命令在项目的根目录中运行,其输出会成为提示词的一部分。 --- ### 文件引用 -使用 `@` 后跟文件名将文件包含在命令中。 +使用 `@` 后跟文件名在命令中引用文件。 ```md title=".opencode/commands/review-component.md" --- @@ -208,19 +207,19 @@ Review the component in @src/components/Button.tsx. Check for performance issues and suggest improvements. ``` -文件内容会自动包含在提示中。 +文件内容会自动包含在提示词中。 --- ## 选项 -让我们详细看看配置选项。 +让我们详细了解各配置选项。 --- -### template +### Template -`template` 选项定义执行命令时将发送到 LLM 的提示。 +`template` 选项定义执行命令时发送给 LLM 的提示词。 ```json title="opencode.json" { @@ -232,11 +231,11 @@ Check for performance issues and suggest improvements. } ``` -这是一个 **必需的** 配置选项。 +这是一个**必需的**配置选项。 --- -### description +### Description 使用 `description` 选项提供命令功能的简要描述。 @@ -250,15 +249,15 @@ Check for performance issues and suggest improvements. } ``` -当您输入命令时,这将在 TUI 中显示为描述。 +当你输入命令时,这将在 TUI 中显示为描述。 --- -### agent +### Agent -使用 `agent` 配置选择指定哪个 [Agent](/docs/agents) 应执行此命令。 -如果是 [Subagents](/docs/agents/#subagents) 该命令将默认触发子代理调用。 -要取消此行为,则将 `subtask` 设置为 `false`。 +使用 `agent` 配置可选地指定由哪个[代理](/docs/agents)执行此命令。 +如果这是一个[子代理](/docs/agents/#subagents),该命令默认会触发子代理调用。 +要禁用此行为,请将 `subtask` 设置为 `false`。 ```json title="opencode.json" { @@ -270,15 +269,15 @@ Check for performance issues and suggest improvements. } ``` -这是一个 **可选** 配置选项。如果未指定,则默认为您当前的代理。 +这是一个**可选的**配置选项。如果未指定,默认使用你当前的代理。 --- -### subtask +### Subtask -使用 `subtask` 布尔值强制命令触发 [Subagents](/docs/agents/#subagents) 调用。 -如果您希望命令不污染您的主要上下文并且将 **强制** 代理充当子代理,那么这非常有用, -即使 `mode` 在 [Agent](/docs/agents) 配置上设置为 `primary`。 +使用 `subtask` 布尔值强制命令触发[子代理](/docs/agents/#subagents)调用。 +如果你希望命令不污染主要上下文,这会很有用,它会**强制**代理作为子代理运行, +即使[代理](/docs/agents)配置中的 `mode` 设置为 `primary`。 ```json title="opencode.json" { @@ -290,11 +289,11 @@ Check for performance issues and suggest improvements. } ``` -这是一个 **可选** 配置选项。 +这是一个**可选的**配置选项。 --- -### model +### Model 使用 `model` 配置覆盖此命令的默认模型。 @@ -308,16 +307,16 @@ Check for performance issues and suggest improvements. } ``` -这是一个 **可选** 配置选项。 +这是一个**可选的**配置选项。 --- -## 内置 +## 内置命令 -opencode 包含 `/init`、`/undo`、`/redo`、`/share`、`/help` 等内置命令;[了解更多](/docs/tui#commands)。 +opencode 包含多个内置命令,如 `/init`、`/undo`、`/redo`、`/share`、`/help`;[了解更多](/docs/tui#commands)。 :::note 自定义命令可以覆盖内置命令。 ::: -如果您定义同名的自定义命令,它将覆盖内置命令。 +如果你定义了同名的自定义命令,它将覆盖内置命令。 diff --git a/packages/web/src/content/docs/zh-cn/config.mdx b/packages/web/src/content/docs/zh-cn/config.mdx index e07e4601f..8ed3c8fbe 100644 --- a/packages/web/src/content/docs/zh-cn/config.mdx +++ b/packages/web/src/content/docs/zh-cn/config.mdx @@ -1,15 +1,15 @@ --- title: 配置 -description: 使用 opencode JSON 配置。 +description: 使用 OpenCode JSON 配置。 --- -您可以使用 JSON 配置文件配置 opencode。 +您可以使用 JSON 配置文件来配置 OpenCode。 --- ## 格式 -opencode 支持 **JSON** 和 **JSONC**(带注释的 JSON)格式。 +OpenCode 支持 **JSON** 和 **JSONC**(带注释的 JSON)格式。 ```jsonc title="opencode.jsonc" { @@ -25,44 +25,44 @@ opencode 支持 **JSON** 和 **JSONC**(带注释的 JSON)格式。 ## 位置 -您可以将配置放置在几个不同的位置,它们有一个不同的优先顺序。 +您可以将配置放置在不同的位置,它们具有不同的优先级顺序。 :::note -配置文件**合并在一起**,而不是替换。 +配置文件是**合并在一起**的,而不是替换。 ::: -配置文件被合并在一起,而不是被替换。以下配置位置的设置被合并。仅当密钥冲突时,后面的配置才会覆盖前面的配置。保留所有配置中的非冲突设置。 +配置文件是合并在一起的,而不是被替换。来自以下配置位置的设置会被合并。后面的配置仅在键冲突时覆盖前面的配置。所有配置中的非冲突设置都会被保留。 -例如,如果您的全局配置设置 `theme: "opencode"` 和 `autoupdate: true`,并且您的项目配置设置 `model: "anthropic/claude-sonnet-4-5"`,则最终配置将包括所有三个设置。 +例如,如果您的全局配置设置了 `theme: "opencode"` 和 `autoupdate: true`,而您的项目配置设置了 `model: "anthropic/claude-sonnet-4-5"`,则最终配置将包含所有三个设置。 --- -### 优先级 +### 优先级顺序 配置源按以下顺序加载(后面的源覆盖前面的源): -1. **Remote config** (来自 `.well-known/opencode`) - 组织默认值 -2. **Global config** (`~/.config/opencode/opencode.json`) - 用户首选项 -3. **Custom config** (`OPENCODE_CONFIG` env var) - 自定义覆盖 -4. **Project config** (项目中的 `opencode.json`) - 项目特定的设置 +1. **远程配置**(来自 `.well-known/opencode`)- 组织默认值 +2. **全局配置**(`~/.config/opencode/opencode.json`)- 用户偏好 +3. **自定义配置**(`OPENCODE_CONFIG` 环境变量)- 自定义覆盖 +4. **项目配置**(项目中的 `opencode.json`)- 项目特定设置 5. **`.opencode` 目录** - 代理、命令、插件 -6. **Inline config** (`OPENCODE_CONFIG_CONTENT` env var) - 运行时覆盖 +6. **内联配置**(`OPENCODE_CONFIG_CONTENT` 环境变量)- 运行时覆盖 这意味着项目配置可以覆盖全局默认值,全局配置可以覆盖远程组织默认值。 :::note -`.opencode` 和 `~/.config/opencode` 目录对子目录使用 **复数名称**:`agents/`、`commands/`、`modes/`、`plugins/`、`skills/`、`tools/` 和 `themes/`。为了向后兼容,还支持单数名称(例如 `agent/`)。 +`.opencode` 和 `~/.config/opencode` 目录的子目录使用**复数名称**:`agents/`、`commands/`、`modes/`、`plugins/`、`skills/`、`tools/` 和 `themes/`。为了向后兼容,也支持单数名称(例如 `agent/`)。 ::: --- ### 远程 -组织可以通过 `.well-known/opencode` 端点提供默认配置。当您向支持的提供商进行身份验证时,会自动获取该信息。 +组织可以通过 `.well-known/opencode` 端点提供默认配置。当您使用支持该功能的提供商进行身份验证时,会自动获取此配置。 -首先加载远程配置,作为基础层。所有其他配置源(全局、项目)都可以覆盖这些默认值。 +远程配置最先加载,作为基础层。所有其他配置源(全局、项目)都可以覆盖这些默认值。 -例如,如果您的组织提供默认禁用的 MCP 服务器: +例如,如果您的组织提供了默认禁用的 MCP 服务器: ```json title="Remote config from .well-known/opencode" { @@ -94,7 +94,7 @@ opencode 支持 **JSON** 和 **JSONC**(带注释的 JSON)格式。 ### 全局 -将全局 opencode 配置放在 `~/.config/opencode/opencode.json` 中。使用全局配置来实现用户范围的首选项,例如主题、提供商或按键绑定。 +将全局 OpenCode 配置放在 `~/.config/opencode/opencode.json` 中。使用全局配置来设置用户级别的偏好,例如主题、提供商或快捷键。 全局配置覆盖远程组织默认值。 @@ -102,15 +102,15 @@ opencode 支持 **JSON** 和 **JSONC**(带注释的 JSON)格式。 ### 项目级 -在项目根目录中添加 `opencode.json`。项目配置在标准配置文件中具有最高优先级 - 它覆盖全局配置和远程配置。 +在项目根目录中添加 `opencode.json`。项目配置在标准配置文件中具有最高优先级——它会覆盖全局配置和远程配置。 :::tip 将项目特定配置放在项目的根目录中。 ::: -当 opencode 启动时,它会在当前目录中查找配置文件或向上遍历到最近的 Git 目录。 +当 OpenCode 启动时,它会在当前目录中查找配置文件,或向上遍历到最近的 Git 目录。 -这也可以安全地签入 Git 并使用与全局模式相同的架构。 +该配置文件也可以安全地提交到 Git 中,并使用与全局配置相同的 Schema。 --- @@ -123,34 +123,34 @@ export OPENCODE_CONFIG=/path/to/my/custom-config.json opencode run "Hello world" ``` -自定义配置按优先顺序在全局配置和项目配置之间加载。 +自定义配置在优先级顺序中位于全局配置和项目配置之间加载。 --- ### 自定义目录 -使用 `OPENCODE_CONFIG_DIR` 环境变量指定自定义配置目录。将在该目录中搜索代理、命令、模式和插件,就像标准 `.opencode` 目录一样,并且应该遵循相同的结构。 +使用 `OPENCODE_CONFIG_DIR` 环境变量指定自定义配置目录。该目录会像标准 `.opencode` 目录一样被搜索代理、命令、模式和插件,并且应遵循相同的结构。 ```bash export OPENCODE_CONFIG_DIR=/path/to/my/config-directory opencode run "Hello world" ``` -自定义目录在全局配置和 `.opencode` 目录加载后,因此 **可以覆盖** 它们的设置。 +自定义目录在全局配置和 `.opencode` 目录之后加载,因此**可以覆盖**它们的设置。 --- -## 模式 +## Schema -配置文件具有在 [**`opencode.ai/config.json`**](https://opencode.ai/config.json) 中定义的架构。 +配置文件具有在 [**`opencode.ai/config.json`**](https://opencode.ai/config.json) 中定义的 Schema。 -您的编辑器应该能够根据架构进行验证和自动完成。 +您的编辑器应该能够基于该 Schema 进行验证和自动补全。 --- ### TUI -您可以通过 `tui` 选项配置特定于 TUI 的设置。 +您可以通过 `tui` 选项配置 TUI 相关设置。 ```json title="opencode.json" { @@ -167,17 +167,17 @@ opencode run "Hello world" 可用选项: -- `scroll_acceleration.enabled` - 启用 macOS 风格的滚动加速。 **优先于 `scroll_speed`。** -- `scroll_speed` - 自定义滚动速度倍增(默认值:`3`,最小值:`1`)。如果 `scroll_acceleration.enabled` 是 `true`,则忽略。 -- `diff_style` - 控制差异渲染。 `"auto"` 适应终端宽度,`"stacked"` 始终显示单列。 +- `scroll_acceleration.enabled` - 启用 macOS 风格的滚动加速。**优先于 `scroll_speed`。** +- `scroll_speed` - 自定义滚动速度倍率(默认值:`3`,最小值:`1`)。如果 `scroll_acceleration.enabled` 为 `true`,则忽略此选项。 +- `diff_style` - 控制差异渲染方式。`"auto"` 根据终端宽度自适应,`"stacked"` 始终显示单列。 -[在此处了解有关使用 TUI 的更多信息](/docs/tui)。 +[在此了解更多关于 TUI 的信息](/docs/tui)。 --- ### 服务器 -您可以通过 `opencode serve` 选项为 `opencode web` 和 `server` 命令配置服务器设置。 +您可以通过 `server` 选项为 `opencode serve` 和 `opencode web` 命令配置服务器设置。 ```json title="opencode.json" { @@ -195,12 +195,12 @@ opencode run "Hello world" 可用选项: - `port` - 监听端口。 -- `hostname` - 监听的主机名。当 `mdns` 启用且未设置主机名时,默认为 `0.0.0.0`。 -- `mdns` - 启用 mDNS 服务发现。这允许网络上的其他设备发现您的 opencode 服务器。 -- `mdnsDomain` - mDNS 服务的自定义域名。默认为 `opencode.local`。对于在同一个网络上运行多个实例很有帮助。 -- `cors` - 从基于浏览器的客户端使用 HTTP 服务器时允许 CORS 的其他来源。值必须是完整来源(协议+主机+可选端口),例如 `https://app.example.com`。 +- `hostname` - 监听主机名。当 `mdns` 启用且未设置主机名时,默认为 `0.0.0.0`。 +- `mdns` - 启用 mDNS 服务发现。这允许网络上的其他设备发现您的 OpenCode 服务器。 +- `mdnsDomain` - mDNS 服务的自定义域名。默认为 `opencode.local`。适用于在同一网络上运行多个实例的场景。 +- `cors` - 从基于浏览器的客户端使用 HTTP 服务器时允许 CORS 的额外来源。值必须是完整的来源(协议 + 主机 + 可选端口),例如 `https://app.example.com`。 -[在此处了解有关服务器的更多信息](/docs/server)。 +[在此了解更多关于服务器的信息](/docs/server)。 --- @@ -218,13 +218,13 @@ opencode run "Hello world" } ``` -[在此处了解有关工具的更多信息](/docs/tools)。 +[在此了解更多关于工具的信息](/docs/tools)。 --- ### 模型 -您可以通过 `provider`、`model` 和 `small_model` 选项来配置要在 opencode 配置中使用的提供商和模型。 +您可以通过 `provider`、`model` 和 `small_model` 选项在 OpenCode 配置中设置要使用的提供商和模型。 ```json title="opencode.json" { @@ -235,7 +235,7 @@ opencode run "Hello world" } ``` -`small_model` 选项为标题生成等轻量级任务配置单独的模型。默认情况下,如果您的提供商可以提供更便宜的模型,opencode 会尝试使用更便宜的模型,否则它会退回到您的主模型。 +`small_model` 选项为标题生成等轻量级任务配置单独的模型。默认情况下,如果您的提供商有更便宜的模型可用,OpenCode 会尝试使用该模型,否则会回退到您的主模型。 提供商选项可以包括 `timeout` 和 `setCacheKey`: @@ -253,16 +253,16 @@ opencode run "Hello world" } ``` -- `timeout` - 请求超时以毫秒为单位(默认值:300000)。设置为 `false` 以禁用。 -- `setCacheKey` - 确保始终为指定的提供商设置缓存键。 +- `timeout` - 请求超时时间,单位为毫秒(默认值:300000)。设置为 `false` 可禁用超时。 +- `setCacheKey` - 确保始终为指定提供商设置缓存键。 -您还可以配置 [本地模型](/docs/models#local)。[了解更多](/docs/models)。 +您还可以配置[本地模型](/docs/models#local)。[了解更多](/docs/models)。 --- -#### 特定于提供商的选项 +#### 提供商特定选项 -有些提供商支持除通用 `timeout` 和 `apiKey` 之外的其他配置选项。 +一些提供商支持除通用 `timeout` 和 `apiKey` 设置之外的额外配置选项。 ##### Amazon Bedrock @@ -283,21 +283,21 @@ Amazon Bedrock 支持 AWS 特定配置: } ``` -- `region` - Bedrock 的 AWS 区域(默认为 `AWS_REGION` env var 或 `us-east-1`) -- `profile` - 来自 `~/.aws/credentials` 的 AWS 命名配置文件(默认为 `AWS_PROFILE` env var) -- `endpoint` - VPC 终端节点的自定义节点 URL。这是使用 AWS 特定术语的通用 `baseURL` 选项的别名。如果两者都指定,`endpoint` 优先。 +- `region` - Bedrock 的 AWS 区域(默认为 `AWS_REGION` 环境变量或 `us-east-1`) +- `profile` - 来自 `~/.aws/credentials` 的 AWS 命名配置文件(默认为 `AWS_PROFILE` 环境变量) +- `endpoint` - VPC 端点的自定义端点 URL。这是通用 `baseURL` 选项使用 AWS 特定术语的别名。如果两者都指定,`endpoint` 优先。 :::note -Bearer Tokens (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 优先于基于配置文件的身份验证。详情请参见 [身份验证优先级](/docs/providers#authentication-precedence)。 +Bearer Token(`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`)优先于基于配置文件的身份验证。详情请参见[身份验证优先级](/docs/providers#authentication-precedence)。 ::: -[了解有关 Amazon Bedrock 配置的更多信息](/docs/providers#amazon-bedrock)。 +[了解更多关于 Amazon Bedrock 配置的信息](/docs/providers#amazon-bedrock)。 --- ### 主题 -您可以通过 opencode 配置中的 `theme` 选项配置要使用的主题。 +您可以通过 OpenCode 配置中的 `theme` 选项设置要使用的主题。 ```json title="opencode.json" { @@ -306,7 +306,7 @@ Bearer Tokens (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 优先于基于配置� } ``` -[在这里了解更多](/docs/themes)。 +[在此了解更多](/docs/themes)。 --- @@ -332,13 +332,13 @@ Bearer Tokens (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 优先于基于配置� } ``` -您还可以使用 `~/.config/opencode/agents/` 或 `.opencode/agents/` 中的 markdown 文件定义代理。 [在这里了解更多](/docs/agents)。 +您还可以使用 `~/.config/opencode/agents/` 或 `.opencode/agents/` 中的 Markdown 文件定义代理。[在此了解更多](/docs/agents)。 --- ### 默认代理 -您可以使用 `default_agent` 选项设置默认代理。当没有明确指定时,这将确定使用哪个代理。 +您可以使用 `default_agent` 选项设置默认代理。当未明确指定代理时,将使用该默认代理。 ```json title="opencode.json" { @@ -347,15 +347,15 @@ Bearer Tokens (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 优先于基于配置� } ``` -默认代理必须是 Primary 代理(不是 Subagent)。这可以是内置代理(如 `"build"` 或 `"plan"`),也可以是您定义的 [Custom Agent](/docs/agents)。如果指定的代理不存在或者是子代理,opencode 将回退到 `"build"` 并发出警告。 +默认代理必须是主代理(不能是子代理)。可以是内置代理(如 `"build"` 或 `"plan"`),也可以是您定义的[自定义代理](/docs/agents)。如果指定的代理不存在或是子代理,OpenCode 将回退到 `"build"` 并发出警告。 -此设置适用于所有界面:TUI、CLI (`opencode run`)、桌面应用程序和 GitHub Action。 +此设置适用于所有界面:TUI、CLI(`opencode run`)、桌面应用和 GitHub Action。 --- ### 分享 -您可以通过 `share` 选项配置 [分享](/docs/share) 功能。 +您可以通过 `share` 选项配置[分享](/docs/share)功能。 ```json title="opencode.json" { @@ -364,13 +364,13 @@ Bearer Tokens (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 优先于基于配置� } ``` -这需要: +该选项接受: -- `"manual"` - 允许通过命令手动共享(默认) -- `"auto"` - 自动分享新对话 -- `"disabled"` - 完全禁用共享 +- `"manual"` - 允许通过命令手动分享(默认) +- `"auto"` - 自动分享新会话 +- `"disabled"` - 完全禁用分享 -默认情况下,共享设置为手动模式,您需要使用 `/share` 命令显式共享对话。 +默认情况下,分享设置为手动模式,您需要使用 `/share` 命令显式分享会话。 --- @@ -396,13 +396,13 @@ Bearer Tokens (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 优先于基于配置� } ``` -您还可以使用 `~/.config/opencode/commands/` 或 `.opencode/commands/` 中的 Markdown 文件定义命令。 [在这里了解更多](/docs/commands)。 +您还可以使用 `~/.config/opencode/commands/` 或 `.opencode/commands/` 中的 Markdown 文件定义命令。[在此了解更多](/docs/commands)。 --- ### 快捷键 -您可以通过 `keybinds` 选项自定义您的按键绑定。 +您可以通过 `keybinds` 选项自定义快捷键。 ```json title="opencode.json" { @@ -411,13 +411,13 @@ Bearer Tokens (`AWS_BEARER_TOKEN_BEDROCK` 或 `/connect`) 优先于基于配置� } ``` -[在这里了解更多](/docs/keybinds)。 +[在此了解更多](/docs/keybinds)。 --- ### 自动更新 -opencode 将在启动时自动下载任何新的更新。您可以使用 `autoupdate` 选项禁用此功能。 +OpenCode 启动时会自动下载新版本。您可以使用 `autoupdate` 选项禁用此功能。 ```json title="opencode.json" { @@ -426,8 +426,8 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -如果您不想更新但希望在新版本可用时收到通知,则需将 `autoupdate` 设置为 `"notify"`。 -请注意,这仅在未使用 Homebrew 等包管理器安装时才有效。 +如果您不想自动更新但希望在新版本可用时收到通知,可将 `autoupdate` 设置为 `"notify"`。 +请注意,此功能仅在未通过 Homebrew 等包管理器安装时有效。 --- @@ -453,15 +453,15 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -[在这里了解有关格式化程序的更多信息](/docs/formatters)。 +[在此了解更多关于格式化程序的信息](/docs/formatters)。 --- ### 权限 -默认情况下,opencode **允许所有操作**,无需明确批准。您可以使用 `permission` 选项更改此设置。 +默认情况下,OpenCode **允许所有操作**,无需明确批准。您可以使用 `permission` 选项更改此行为。 -例如,要确保 `edit` 和 `bash` 工具需要用户批准: +例如,要让 `edit` 和 `bash` 工具需要用户确认: ```json title="opencode.json" { @@ -473,7 +473,7 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -[在此处了解有关权限的更多信息](/docs/permissions)。 +[在此了解更多关于权限的信息](/docs/permissions)。 --- @@ -486,19 +486,21 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup "$schema": "https://opencode.ai/config.json", "compaction": { "auto": true, - "prune": true + "prune": true, + "reserved": 10000 } } ``` - `auto` - 当上下文已满时自动压缩会话(默认值:`true`)。 -- `prune` - 删除旧工具输出以保存 Tokens(默认值:`true`)。 +- `prune` - 删除旧的工具输出以节省 Token(默认值:`true`)。 +- `reserved` - 压缩时的 Token 缓冲区。保留足够的窗口以避免压缩过程中溢出。 --- -### 观察器 +### 文件监视器 -您可以通过 `watcher` 选项配置文件观察器忽略模式。 +您可以通过 `watcher` 选项配置文件监视器的忽略模式。 ```json title="opencode.json" { @@ -509,7 +511,7 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -模式遵循 glob 语法。使用它可以从文件监视中排除嘈杂的目录。 +模式遵循 glob 语法。使用此选项可以从文件监视中排除频繁变动的目录。 --- @@ -524,13 +526,13 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -[在这里了解更多](/docs/mcp-servers)。 +[在此了解更多](/docs/mcp-servers)。 --- ### 插件 -[Plugins](/docs/plugins) 使用自定义工具、挂钩和集成扩展 opencode。 +[插件](/docs/plugins)通过自定义工具、钩子和集成来扩展 OpenCode。 将插件文件放置在 `.opencode/plugins/` 或 `~/.config/opencode/plugins/` 中。您还可以通过 `plugin` 选项从 npm 加载插件。 @@ -541,13 +543,13 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -[在这里了解更多](/docs/plugins)。 +[在此了解更多](/docs/plugins)。 --- ### 指令 -您可以通过 `instructions` 选项配置您正在使用的模型的说明。 +您可以通过 `instructions` 选项为所使用的模型配置指令。 ```json title="opencode.json" { @@ -556,13 +558,13 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -这需要指令文件的路径和 glob 模式数组。 [在此处了解有关规则的更多信息](/docs/rules)。 +该选项接受指令文件路径和 glob 模式的数组。[在此了解更多关于规则的信息](/docs/rules)。 --- ### 禁用提供商 -您可以通过 `disabled_providers` 选项禁用自动加载的提供商。当您想要阻止加载某些提供商(即使其凭据可用)时,这非常有用。 +您可以通过 `disabled_providers` 选项禁用自动加载的提供商。当您希望阻止某些提供商被加载(即使其凭据可用)时,此选项非常有用。 ```json title="opencode.json" { @@ -575,17 +577,17 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup `disabled_providers` 优先于 `enabled_providers`。 ::: -`disabled_providers` 选项接受提供商 ID 数组。当提供商被禁用时: +`disabled_providers` 选项接受提供商 ID 的数组。当某个提供商被禁用时: -- 即使设置了环境变量也不会加载。 -- 即使通过 `/connect` 命令配置 API 密钥,也不会加载它。 -- 提供商的模型不会出现在模型选择列表中。 +- 即使设置了环境变量,也不会被加载。 +- 即使通过 `/connect` 命令配置了 API 密钥,也不会被加载。 +- 该提供商的模型不会出现在模型选择列表中。 --- ### 启用提供商 -您可以通过 `enabled_providers` 选项指定允许的提供商列表。设置后,仅启用指定的提供商,所有其他提供商将被忽略。 +您可以通过 `enabled_providers` 选项指定允许使用的提供商白名单。设置后,仅启用指定的提供商,所有其他提供商将被忽略。 ```json title="opencode.json" { @@ -594,19 +596,19 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -当您想要限制 opencode 仅使用特定的提供商而不是逐一禁用它们时,这非常有用。 +当您希望限制 OpenCode 仅使用特定提供商,而不是逐一禁用其他提供商时,此选项非常有用。 :::note `disabled_providers` 优先于 `enabled_providers`。 ::: -如果提供商同时出现在 `enabled_providers` 和 `disabled_providers` 中,则 `disabled_providers` 优先以保持一致性。 +如果某个提供商同时出现在 `enabled_providers` 和 `disabled_providers` 中,为了向后兼容,`disabled_providers` 优先。 --- ### 实验性功能 -`experimental` 键包含正在积极开发的选项。 +`experimental` 键包含正在积极开发中的选项。 ```json title="opencode.json" { @@ -616,7 +618,7 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup ``` :::caution -实验选项不稳定。它们可能会更改或被删除,恕不另行通知。 +实验性选项不稳定。它们可能会在不另行通知的情况下被更改或移除。 ::: --- @@ -629,7 +631,7 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup ### 环境变量 -使用 `{env:VARIABLE_NAME}` 替换环境变量: +使用 `{env:VARIABLE_NAME}` 来替换环境变量: ```json title="opencode.json" { @@ -646,13 +648,13 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup } ``` -如果未设置环境变量,它将被替换为空字符串。 +如果环境变量未设置,它将被替换为空字符串。 --- ### 文件 -使用 `{file:path/to/file}` 替换文件的内容: +使用 `{file:path/to/file}` 来替换文件内容: ```json title="opencode.json" { @@ -670,11 +672,11 @@ opencode 将在启动时自动下载任何新的更新。您可以使用 `autoup 文件路径可以是: -- 相对于配置文件目录 -- 或者以 `/` 或 `~` 开头的绝对路径 +- 相对于配置文件所在目录的路径 +- 以 `/` 或 `~` 开头的绝对路径 -这些对于: +这些功能适用于: - 将 API 密钥等敏感数据保存在单独的文件中。 -- 包含大型指令文件,而不会弄乱您的配置。 -- 跨多个配置文件共享通用配置片段。 +- 引入大型指令文件而不会使配置变得杂乱。 +- 在多个配置文件之间共享通用配置片段。 diff --git a/packages/web/src/content/docs/zh-cn/custom-tools.mdx b/packages/web/src/content/docs/zh-cn/custom-tools.mdx index 211df7c01..81a90a2bc 100644 --- a/packages/web/src/content/docs/zh-cn/custom-tools.mdx +++ b/packages/web/src/content/docs/zh-cn/custom-tools.mdx @@ -1,30 +1,30 @@ --- title: 自定义工具 -description: 创建 LLM 可以在 opencode 中调用的工具。 +description: 创建 LLM 可在 opencode 中调用的工具。 --- -自定义工具是您创建的函数,LLM 可以在对话期间调用。它们与 opencode 的 [Built-in Tools](/docs/tools) 一起工作,例如 `read`、`write` 和 `bash`。 +自定义工具是你创建的函数,LLM 可以在对话过程中调用它们。它们与 opencode 的[内置工具](/docs/tools)(如 `read`、`write` 和 `bash`)协同工作。 --- ## 创建工具 -工具定义为 **TypeScript** 或 **JavaScript** 文件。但是,工具定义调用可以使用 **任何语言** 编写的脚本 - TypeScript 或 JavaScript 仅用于工具定义本身。 +工具以 **TypeScript** 或 **JavaScript** 文件的形式定义。不过,工具定义可以调用**任何语言**编写的脚本——TypeScript 或 JavaScript 仅用于工具定义本身。 --- ### 位置 -它们可以定义为: +工具可以在以下位置定义: -- 通过将它们放在项目的 `.opencode/tools/` 目录中来本地进行。 -- 或者在全局范围内,将它们放在 `~/.config/opencode/tools/` 中。 +- 本地定义:将工具文件放在项目的 `.opencode/tools/` 目录中。 +- 全局定义:将工具文件放在 `~/.config/opencode/tools/` 中。 --- ### 结构 -创建工具最简单的方法是使用 `tool()` 帮助程序,它提供类型安全和验证。 +创建工具最简单的方式是使用 `tool()` 辅助函数,它提供类型安全和参数校验。 ```ts title=".opencode/tools/database.ts" {1} import { tool } from "@opencode-ai/plugin" @@ -41,13 +41,13 @@ export default tool({ }) ``` -**文件名** 成为 **工具名称**。以上创建了一个 `database` 工具。 +**文件名**即为**工具名称**。上面的示例创建了一个名为 `database` 的工具。 --- -#### 每个文件多个工具 +#### 单文件多工具 -您还可以从单个文件导出多个工具。每个导出都会成为 **一个单独的工具**,名称为 **`<filename>_<exportname>`**: +你也可以从单个文件中导出多个工具。每个导出都会成为**一个独立的工具**,命名格式为 **`<filename>_<exportname>`**: ```ts title=".opencode/tools/math.ts" import { tool } from "@opencode-ai/plugin" @@ -75,13 +75,13 @@ export const multiply = tool({ }) ``` -这将创建两个工具:`math_add` 和 `math_multiply`。 +这会创建两个工具:`math_add` 和 `math_multiply`。 --- ### 参数 -您可以使用 `tool.schema`(即 [Zod](https://zod.dev))来定义参数类型。 +你可以使用 `tool.schema`(即 [Zod](https://zod.dev))来定义参数类型。 ```ts "tool.schema" args: { @@ -89,7 +89,7 @@ args: { } ``` -您还可以直接导入 [Zod](https://zod.dev) 并返回一个普通对象: +你也可以直接导入 [Zod](https://zod.dev) 并返回一个普通对象: ```ts {6} import { z } from "zod" @@ -110,7 +110,7 @@ export default { ### 上下文 -工具接收有关当前会话的上下文: +工具会接收当前会话的上下文信息: ```ts title=".opencode/tools/project.ts" {8} import { tool } from "@opencode-ai/plugin" @@ -126,18 +126,18 @@ export default tool({ }) ``` -使用 `context.directory` 作为会话工作目录。 -使用 `context.worktree` 作为 git 工作树根。 +使用 `context.directory` 获取会话的工作目录。 +使用 `context.worktree` 获取 git worktree 根目录。 --- ## 示例 -### 使用 Python 编写工具 +### 用 Python 编写工具 -您可以使用任何您想要的语言编写工具。下面是一个使用 Python 将两个数字相加的示例。 +你可以使用任何语言编写工具。以下示例展示了如何用 Python 实现两数相加。 -首先,使用创建 Python 脚本的工具: +首先,创建一个 Python 脚本作为工具: ```python title=".opencode/tools/add.py" import sys @@ -147,7 +147,7 @@ b = int(sys.argv[2]) print(a + b) ``` -然后创建调用它的工具定义: +然后创建调用该脚本的工具定义: ```ts title=".opencode/tools/python-add.ts" {10} import { tool } from "@opencode-ai/plugin" @@ -167,4 +167,4 @@ export default tool({ }) ``` -这里我们使用 [`Bun.$`](https://bun.com/docs/runtime/shell) 实用程序来运行 Python 脚本。 +这里我们使用 [`Bun.$`](https://bun.com/docs/runtime/shell) 工具函数来运行 Python 脚本。 diff --git a/packages/web/src/content/docs/zh-cn/ecosystem.mdx b/packages/web/src/content/docs/zh-cn/ecosystem.mdx index 25689beb1..c77cc0542 100644 --- a/packages/web/src/content/docs/zh-cn/ecosystem.mdx +++ b/packages/web/src/content/docs/zh-cn/ecosystem.mdx @@ -1,52 +1,52 @@ --- title: 生态系统 -description: 使用 opencode 构建的项目和集成。 +description: 基于 OpenCode 构建的项目与集成。 --- -基于 opencode 的社区项目集合。 +基于 OpenCode 构建的社区项目合集。 :::note -想要将您的 opencode 相关项目添加到此列表中吗?提交 PR。 +想将您的 OpenCode 相关项目添加到此列表中?欢迎提交 PR。 ::: -您还可以查看 [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) 和 [opencode.cafe](https://opencode.cafe),这是一个聚合生态系统和社区的社区。 +您还可以查看 [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) 和 [opencode.cafe](https://opencode.cafe),这是一个聚合生态系统与社区资源的社区。 --- ## 插件 -| 名称 | 描述 | -| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | -| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | 在隔离的 Daytona 沙箱中自动运行 opencode 会话,并使用 git 同步和实时预览 | -| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | 自动注入 Helicone 会话标头以进行请求包 | -| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | 使用查找工具将 TypeScript/Svelte 类型自动注入到文件读取中 | -| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | 使用您的 ChatGPT Plus 或 Pro 订阅而不是 API 积分 | -| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | 使用您现有的 Gemini 计划而不是 API 密钥 | -| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | 使用 Antigravity 的免费模型代替 API | -| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | 具有浅克隆和自动分配端口的多分支开发容器隔离 | -| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth 插件,支持 Google 搜索和更强大的 API 处理 | -| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | 通过修剪过时的工具输出来优化 token 使用 | -| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | 为具有 Google 接地风格的受支持增加本机网络搜索支持 | -| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | 使 AI 代理能够在 PTY 中运行后台进程,末端发送其交互输入。 | -| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | 非交互式 shell 命令指令 - 防止依赖 TTY 的操作挂起 | -| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | 使用 Wakatime 跟踪 opencode 使用情况 | -| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | 清理 LLM 生成的 markdown 表 | -| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 使用 Morph Fast Apply API 和取消编辑标记将代码编辑速度提高 10 倍 | -| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | 后台代理、预构建的 LSP/AST/MCP 工具、精选代理、兼容 Claude Code | -| [opencode-notificator](https://github.com/panta82/opencode-notificator) | opencode 会话的桌面通知和声音警报 | -| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | 针对权限、完成和错误事件的桌面通知和声音警报 | -| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | 基于 opencode 上下文的 AI 支持的自动 Zellij 会话命名 | -| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | 允许 opencode 代理通过技能发现和注入失败延迟加载提示 | -| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | 使用 Supermemory 跨会话持久内存 | -| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | 具有视觉注释和私人/离线共享的交互式计划审查 | -| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | 将 opencode/命令扩展为具有精细流程控制的强大编排系统 | -| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | 使用带 cron 语法的 launchd (Mac) 或 systemd (Linux) 安排重复作业 | -| [micode](https://github.com/vtemian/micode) | 塑造头脑风暴 → 计划 → 实施具有会议连续性的工作流程 | -| [octto](https://github.com/vtemian/octto) | 用于通过多问题形式进行 AI 头脑风暴的交互式浏览器 UI | -| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | 具有异步委托和上下文持久性的 Claude Code 风格后台代理 | -| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | opencode 的本机操作系统通知 – 了解任务何时完成 | -| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | 一堆多代理编排工具 – 16个,组件一次安装 | -| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | opencode 的零难度 git 工作树 | +| 名称 | 描述 | +| --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | 在隔离的 Daytona 沙箱中自动运行 OpenCode 会话,支持 git 同步和实时预览 | +| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | 自动注入 Helicone 会话头信息,用于请求分组 | +| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | 通过查找工具自动将 TypeScript/Svelte 类型注入到文件读取中 | +| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | 使用您的 ChatGPT Plus/Pro 订阅替代 API 额度 | +| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | 使用您现有的 Gemini 套餐替代 API 计费 | +| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | 使用 Antigravity 的免费模型替代 API 计费 | +| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | 多分支开发容器隔离,支持浅克隆和自动分配端口 | +| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Antigravity OAuth 插件,支持 Google 搜索及更强健的 API 处理 | +| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | 通过修剪过时的工具输出来优化 Token 使用 | +| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | 为受支持的提供商添加原生网页搜索支持,采用 Google grounded 风格 | +| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | 使 AI 代理能够在 PTY 中运行后台进程,并向其发送交互式输入 | +| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | 非交互式 shell 命令指令——防止依赖 TTY 的操作导致挂起 | +| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | 使用 Wakatime 追踪 OpenCode 的使用情况 | +| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | 清理 LLM 生成的 Markdown 表格 | +| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | 通过 Morph Fast Apply API 和惰性编辑标记实现 10 倍更快的代码编辑 | +| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | 后台代理、预构建的 LSP/AST/MCP 工具、精选代理,兼容 Claude Code | +| [opencode-notificator](https://github.com/panta82/opencode-notificator) | OpenCode 会话的桌面通知和声音提醒 | +| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | 针对权限请求、任务完成和错误事件的桌面通知与声音提醒 | +| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | 基于 OpenCode 上下文的 AI 驱动自动 Zellij 会话命名 | +| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | 允许 OpenCode 代理通过技能发现和注入按需延迟加载提示词 | +| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | 使用 Supermemory 实现跨会话的持久记忆 | +| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | 支持可视化标注和私有/离线分享的交互式计划审查 | +| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | 将 OpenCode /commands 扩展为具有精细流程控制的强大编排系统 | +| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | 使用 cron 语法通过 launchd (Mac) 或 systemd (Linux) 调度周期性任务 | +| [micode](https://github.com/vtemian/micode) | 结构化的头脑风暴 → 计划 → 实现工作流,支持会话连续性 | +| [octto](https://github.com/vtemian/octto) | 用于 AI 头脑风暴的交互式浏览器 UI,支持多问题表单 | +| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | Claude Code 风格的后台代理,支持异步委托和上下文持久化 | +| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | OpenCode 的原生操作系统通知——随时了解任务完成情况 | +| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | 捆绑式多代理编排套件——16 个组件,一次安装 | +| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | OpenCode 的零摩擦 git worktree 管理 | --- @@ -54,17 +54,17 @@ description: 使用 opencode 构建的项目和集成。 | 名称 | 描述 | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------- | -| [kimaki](https://github.com/remorses/kimaki) | 用于控制 opencode 会话的 Discord 机器人,基于 SDK 构建 | -| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim 插件,用于编辑器采集提示,基于 API 构建 | -| [portal](https://github.com/hosenur/portal) | 通过 Tailscale/VPN 实现 opencode 的移动优先 Web UI | -| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | 用于构建 opencode 插件的模板 | -| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Neovim opencode 前端 - 基于终端的 AI 编码代理 | -| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK 提供商,用于通过 @opencode-ai/sdk 使用 opencode | -| [OpenChamber](https://github.com/btriapitsyn/openchamber) | opencode 的 Web/桌面应用程序和 VS Code 扩展 | -| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | 在 Obsidian 的 UI 中嵌入 opencode 的 Obsidian 插件 | -| [OpenWork](https://github.com/different-ai/openwork) | Claude Cowork 的替代开源方案,由 opencode 提供支持 | -| [ocx](https://github.com/kdcokenny/ocx) | opencode 扩展管理器具有可移植、隔离的配置文件。 | -| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | opencode 的桌面、Web、移动和远程客户端应用程序 | +| [kimaki](https://github.com/remorses/kimaki) | 用于控制 OpenCode 会话的 Discord 机器人,基于 SDK 构建 | +| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Neovim 插件,提供编辑器感知的提示词,基于 API 构建 | +| [portal](https://github.com/hosenur/portal) | 通过 Tailscale/VPN 使用的移动优先 OpenCode Web UI | +| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | 用于构建 OpenCode 插件的模板 | +| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | OpenCode 的 Neovim 前端——基于终端的 AI 编码代理 | +| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Vercel AI SDK 提供商,用于通过 @opencode-ai/sdk 使用 OpenCode | +| [OpenChamber](https://github.com/btriapitsyn/openchamber) | OpenCode 的 Web / 桌面应用和 VS Code 扩展 | +| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | 将 OpenCode 嵌入 Obsidian UI 的 Obsidian 插件 | +| [OpenWork](https://github.com/different-ai/openwork) | Claude Cowork 的开源替代方案,由 OpenCode 驱动 | +| [ocx](https://github.com/kdcokenny/ocx) | OpenCode 扩展管理器,支持可移植的隔离配置 | +| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | OpenCode 的桌面、Web、移动和远程客户端应用 | --- @@ -72,5 +72,5 @@ description: 使用 opencode 构建的项目和集成。 | 名称 | 描述 | | ----------------------------------------------------------------- | ---------------------------------------- | -| [Agentic](https://github.com/Cluster444/agentic) | 用于格式化开发的 Agentic AI 代理和命令 | -| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | 用于增强工作流程的配置、提示、代理和插件 | +| [Agentic](https://github.com/Cluster444/agentic) | 用于结构化开发的模块化 AI 代理和命令 | +| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | 用于增强工作流的配置、提示词、代理和插件 | diff --git a/packages/web/src/content/docs/zh-cn/enterprise.mdx b/packages/web/src/content/docs/zh-cn/enterprise.mdx index d4ababa2d..83e823e93 100644 --- a/packages/web/src/content/docs/zh-cn/enterprise.mdx +++ b/packages/web/src/content/docs/zh-cn/enterprise.mdx @@ -1,47 +1,47 @@ --- title: 企业版 -description: 在您的组织中安全地使用 opencode。 +description: 在您的组织中安全地使用 OpenCode。 --- import config from "../../../../config.mjs" export const email = `mailto:${config.email}` -opencode 企业版适用于希望确保其代码和数据永远不会离开其基础设施的组织。它可以通过使用与 SSO 和内部 AI 网关集成的集中方式配置来实现此目的。 +OpenCode 企业版面向希望确保代码和数据始终留在自有基础设施内的组织。它通过集中式配置与您的 SSO 和内部 AI 网关集成来实现这一目标。 :::note -opencode 不存储您的任何代码或上下文数据。 +OpenCode 不会存储您的任何代码或上下文数据。 ::: -要开始使用 opencode 企业版: +开始使用 OpenCode 企业版: -1. 与您的团队进行内部试用。 -2. **<a href={email}>联系我们</a>** 讨论定价和实施选项。 +1. 在团队内部进行试用。 +2. **<a href={email}>联系我们</a>**,讨论定价和实施方案。 --- ## 试用 -opencode 是开源的,不存储您的任何代码或上下文数据,因此您的开发人员只需 [开始吧](/docs/) 并进行试用。 +OpenCode 是开源的,不会存储您的任何代码或上下文数据,因此您的开发人员可以直接[开始使用](/docs/)并进行试用。 --- ### 数据处理 -**opencode 不会存储您的代码或上下文数据。** 所有处理都在本地进行或通过直接 API 调用您的 AI 提供商。 +**OpenCode 不会存储您的代码或上下文数据。**所有处理均在本地完成,或通过直接 API 调用发送至您的 AI 提供商。 -这意味着只要您使用您信任的提供商或内部 AI 网关,您就可以安全使用 opencode。 +这意味着,只要您使用的是信任的提供商或内部 AI 网关,就可以安全地使用 OpenCode。 -这里唯一需要注意的是可选的 `/share` 功能。 +唯一需要注意的是可选的 `/share` 功能。 --- #### 分享对话 -如果用户启用 `/share` 功能,对话和关联的数据将被发送到我们用于在 opencode.ai 上托管这些共享页面的服务。 +如果用户启用了 `/share` 功能,对话及其关联数据将被发送到我们用于在 opencode.ai 上托管共享页面的服务。 -数据当前通过我们的 CDN 边缘网络提供服务,并缓存在用户附近的边缘。 +数据目前通过我们 CDN 的边缘网络提供服务,并缓存在靠近用户的边缘节点上。 -我们建议您在试用时禁用此功能。 +我们建议您在试用期间禁用此功能。 ```json title="opencode.json" { @@ -56,110 +56,110 @@ opencode 是开源的,不存储您的任何代码或上下文数据,因此� ### 代码所有权 -**您拥有 opencode 生成的所有代码。** 没有许可限制或所有权主张。 +**您拥有 OpenCode 生成的所有代码。**不存在任何许可限制或所有权声明。 --- ## 定价 -我们对 opencode Enterprise 使用按席位模型。如果您有自己的 LLM 网关,我们不会对使用的 Token 收取费用。有关定价和实施选项的更多详细信息,请 **<a href={email}>联系我们</a>**。 +OpenCode 企业版采用按席位定价模型。如果您拥有自己的 LLM 网关,我们不会对使用的 Token 收取费用。有关定价和实施方案的更多详情,请**<a href={email}>联系我们</a>**。 --- ## 部署 -完成试用并准备好在您的组织中使用 opencode 后,您可以 **<a href={email}>联系我们</a>** 进行讨论定价和实施选项。 +完成试用并准备好在组织中使用 OpenCode 后,您可以**<a href={email}>联系我们</a>**,讨论定价和实施方案。 --- -### 中央配置 +### 集中式配置 -我们可以将 opencode 设置为您的整个组织使用单一的中央配置。 +我们可以为您的整个组织设置 OpenCode 的统一集中式配置。 -这种集中式配置可以与您的 SSO 提供商集成,并确保所有用户仅访问您的内部 AI 网关。 +该集中式配置可与您的 SSO 提供商集成,确保所有用户仅访问您的内部 AI 网关。 --- ### SSO 集成 -通过中央配置,opencode 可以与您组织的 SSO 提供商集成以进行身份验证。 +通过集中式配置,OpenCode 可以与您组织的 SSO 提供商集成进行身份验证。 -这使得 opencode 能够通过现有的身份管理系统获取内部 AI 网关的凭据。 +这使得 OpenCode 能够通过您现有的身份管理系统获取内部 AI 网关的凭据。 --- ### 内部 AI 网关 -通过中央配置,opencode 还可以配置为仅使用您的内部 AI 网关。 +通过集中式配置,OpenCode 还可以被配置为仅使用您的内部 AI 网关。 -您还可以禁用所有其他 AI 提供商,确保所有请求都通过组织批准的基础设施。 +您还可以禁用所有其他 AI 提供商,确保所有请求都经过组织批准的基础设施。 --- ### 自托管 -虽然我们建议禁用共享页面以确保您的数据永远不会离开您的组织,我们还可以帮助您在您的基础设施上自行托管它们。 +虽然我们建议禁用共享页面以确保您的数据始终不会离开组织,但我们也可以帮助您在自己的基础设施上自行托管这些页面。 -目前这已在我们的路线图上。如果您有兴趣,**<a href={email}>让我们知道</a>**。 +此功能目前已列入我们的路线图。如果您感兴趣,请**<a href={email}>告诉我们</a>**。 --- ## 常见问题 <details> -<summary>什么是 opencode 企业版?</summary> +<summary>什么是 OpenCode 企业版?</summary> -opencode 企业版适用于希望确保其代码和数据永远不会离开其基础设施的组织。它可以通过使用与 SSO 和内部 AI 网关集成的集中方式配置来实现此目的。 +OpenCode 企业版面向希望确保代码和数据始终留在自有基础设施内的组织。它通过集中式配置与您的 SSO 和内部 AI 网关集成来实现这一目标。 </details> <details> -<summary>如何开始使用 opencode 企业版?</summary> +<summary>如何开始使用 OpenCode 企业版?</summary> -与您的团队进行内部实验即可。opencode 默认情况下不存储您的代码或上下文数据,可以轻松上手。 +只需在团队内部开始试用即可。OpenCode 默认不存储您的代码或上下文数据,因此可以轻松上手。 -然后 **<a href={email}>联系我们</a>** 讨论定价和实施选项。 +然后**<a href={email}>联系我们</a>**,讨论定价和实施方案。 </details> <details> -<summary>企业定价如何运作?</summary> +<summary>企业版定价如何运作?</summary> -我们提供按席位企业定价。如果您有自己的 LLM 网关,我们不会对使用的 Token 收取费用。如需了解更多详情,请 **<a href={email}>联系我们</a>**,获取根据您组织的需求定制的报价。 +我们提供按席位的企业版定价。如果您拥有自己的 LLM 网关,我们不会对使用的 Token 收取费用。如需了解更多详情,请**<a href={email}>联系我们</a>**,获取根据您组织需求定制的报价。 </details> <details> -<summary>opencode 企业版保证我的数据安全吗?</summary> +<summary>我的数据在 OpenCode 企业版中是否安全?</summary> -是的。opencode 不存储您的代码或上下文数据。所有处理都在本地进行或通过直接 API 调用您的 AI 提供商。通过中央配置和 SSO 集成,您的数据在组织的基础架构中保持安全。 +是的。OpenCode 不会存储您的代码或上下文数据。所有处理均在本地完成,或通过直接 API 调用发送至您的 AI 提供商。通过集中式配置和 SSO 集成,您的数据将安全地保留在组织的基础设施内。 </details> <details> -<summary>我们可以使用自己的私有 npm 注册表吗?</summary> +<summary>我们可以使用自己的私有 NPM 注册表吗?</summary> -opencode 通过 Bun 的本机 `.npmrc` 文件支持来支持私有 npm 注册表。如果您的组织使用私有注册表,例如 JFrog Artifactory、Nexus 或类似的,请确保开发人员在运行 opencode 之前经过身份验证。 +OpenCode 通过 Bun 原生的 `.npmrc` 文件支持来支持私有 npm 注册表。如果您的组织使用私有注册表(例如 JFrog Artifactory、Nexus 或类似产品),请确保开发人员在运行 OpenCode 之前已完成身份验证。 -要使用您的私有注册表设置身份验证: +要设置私有注册表的身份验证: ```bash npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/ ``` -这将创建带有身份验证详细信息的 `~/.npmrc`。 opencode 会自动读取这个。 +这会创建包含身份验证信息的 `~/.npmrc` 文件。OpenCode 会自动识别并使用它。 :::caution -在运行 opencode 之前,您必须登录私有注册表。 +在运行 OpenCode 之前,您必须先登录私有注册表。 ::: -或者,您可以手动配置 `.npmrc` 文件: +或者,您也可以手动配置 `.npmrc` 文件: ```bash title="~/.npmrc" registry=https://your-company.jfrog.io/api/npm/npm-virtual/ //your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN} ``` -开发人员必须在运行 opencode 之前登录私有注册表,以确保可以从您的企业注册表安装软件包。 +开发人员必须在运行 OpenCode 之前登录私有注册表,以确保能够从您的企业注册表安装软件包。 </details> diff --git a/packages/web/src/content/docs/zh-cn/formatters.mdx b/packages/web/src/content/docs/zh-cn/formatters.mdx index 8c4d7ef8f..1f4035fda 100644 --- a/packages/web/src/content/docs/zh-cn/formatters.mdx +++ b/packages/web/src/content/docs/zh-cn/formatters.mdx @@ -1,63 +1,64 @@ --- -title: 格式化程序 -description: opencode 使用特定于语言的格式化程序。 +title: 格式化工具 +description: OpenCode 使用特定语言的格式化工具。 --- -使用特定于语言的格式化程序编写或编辑文件后,opencode 会自动格式化文件。这可以确保生成的代码遵循项目的代码风格。 +OpenCode 会在文件写入或编辑后,自动使用特定语言的格式化工具对其进行格式化。这确保了生成的代码遵循你项目的代码风格。 --- -## 内置 - -opencode 附带了多个适用于流行语言和框架的内置格式化程序。下面是格式化程序、支持的文件扩展名以及所需的命令或配置选项的列表。 - -| 格式化程序 | 扩展名 | 要求 | -| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| gofmt | .go | `gofmt` command available | -| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` command available | -| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and [more](https://prettier.io/docs/en/index.html) | `prettier` dependency in `package.json` | -| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and [more](https://biomejs.dev/) | `biome.json(c)` config file | -| zig | .zig, .zon | `zig` command available | -| clang-format | .c, .cpp, .h, .hpp, .ino, and [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` config file | -| ktlint | .kt, .kts | `ktlint` command available | -| ruff | .py, .pyi | `ruff` command available with config | -| rustfmt | .rs | `rustfmt` command available | -| cargofmt | .rs | `cargo fmt` command available | -| uv | .py, .pyi | `uv` command available | -| rubocop | .rb, .rake, .gemspec, .ru | `rubocop` command available | -| standardrb | .rb, .rake, .gemspec, .ru | `standardrb` command available | -| htmlbeautifier | .erb, .html.erb | `htmlbeautifier` command available | -| air | .R | `air` command available | -| dart | .dart | `dart` command available | -| dfmt | .d | `dfmt` command available | -| ocamlformat | .ml, .mli | `ocamlformat` command available and `.ocamlformat` config file | -| terraform | .tf, .tfvars | `terraform` command available | -| gleam | .gleam | `gleam` command available | -| nixfmt | .nix | `nixfmt` command available | -| shfmt | .sh, .bash | `shfmt` command available | -| pint | .php | `laravel/pint` dependency in `composer.json` | -| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | `oxfmt` dependency in `package.json` and an [experimental env variable flag](/docs/cli/#experimental) | -| ormolu | .hs | `ormolu` command available | - -因此,如果您的项目的 `prettier` 中有 `package.json`,opencode 将自动使用它。 +## 内置格式化工具 + +OpenCode 内置了多种适用于主流语言和框架的格式化工具。下表列出了各格式化工具、支持的文件扩展名以及所需的命令或配置选项。 + +| 格式化工具 | 扩展名 | 要求 | +| -------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| air | .R | `air` 命令可用 | +| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml 及[更多](https://biomejs.dev/) | `biome.json(c)` 配置文件 | +| cargofmt | .rs | `cargo fmt` 命令可用 | +| clang-format | .c, .cpp, .h, .hpp, .ino 及[更多](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` 配置文件 | +| cljfmt | .clj, .cljs, .cljc, .edn | `cljfmt` 命令可用 | +| dart | .dart | `dart` 命令可用 | +| dfmt | .d | `dfmt` 命令可用 | +| gleam | .gleam | `gleam` 命令可用 | +| gofmt | .go | `gofmt` 命令可用 | +| htmlbeautifier | .erb, .html.erb | `htmlbeautifier` 命令可用 | +| ktlint | .kt, .kts | `ktlint` 命令可用 | +| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` 命令可用 | +| nixfmt | .nix | `nixfmt` 命令可用 | +| ocamlformat | .ml, .mli | `ocamlformat` 命令可用且存在 `.ocamlformat` 配置文件 | +| ormolu | .hs | `ormolu` 命令可用 | +| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | `package.json` 中有 `oxfmt` 依赖,且设置了[实验性环境变量标志](/docs/cli/#experimental) | +| pint | .php | `composer.json` 中有 `laravel/pint` 依赖 | +| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml 及[更多](https://prettier.io/docs/en/index.html) | `package.json` 中有 `prettier` 依赖 | +| rubocop | .rb, .rake, .gemspec, .ru | `rubocop` 命令可用 | +| ruff | .py, .pyi | `ruff` 命令可用且有相应配置 | +| rustfmt | .rs | `rustfmt` 命令可用 | +| shfmt | .sh, .bash | `shfmt` 命令可用 | +| standardrb | .rb, .rake, .gemspec, .ru | `standardrb` 命令可用 | +| terraform | .tf, .tfvars | `terraform` 命令可用 | +| uv | .py, .pyi | `uv` 命令可用 | +| zig | .zig, .zon | `zig` 命令可用 | + +因此,如果你的项目 `package.json` 中包含 `prettier`,OpenCode 会自动使用它进行格式化。 --- -## 它是如何工作的 +## 工作原理 -当 opencode 写入或编辑文件时,它: +当 OpenCode 写入或编辑文件时,它会: -1. 根据所有启用的格式化程序检查文件扩展名。 -2. 对文件运行适当的格式化程序命令。 -3. 自动应用格式更改。 +1. 根据所有已启用的格式化工具检查文件扩展名。 +2. 对文件运行相应的格式化命令。 +3. 自动应用格式化更改。 -此过程在后台进行,确保无需任何手动步骤即可维护您的代码样式。 +整个过程在后台完成,无需任何手动操作即可保持代码风格的一致性。 --- ## 配置 -您可以通过 opencode 配置中的 `formatter` 部分自定义格式化程序。 +你可以通过 OpenCode 配置中的 `formatter` 部分自定义格式化工具。 ```json title="opencode.json" { @@ -66,22 +67,22 @@ opencode 附带了多个适用于流行语言和框架的内置格式化程序� } ``` -每个格式化程序配置支持以下内容: +每个格式化工具的配置支持以下属性: -| 属性 | 类型 | 描述 | -| ------------- | -------- | ---------------------------------- | -| `disabled` | boolean | 将其设置为 `true` 以禁用格式化程序 | -| `command` | string[] | 格式化运行的命令 | -| `environment` | object | 运行格式化程序时要设置的环境变量 | -| `extensions` | string[] | 此格式化程序应处理的文件扩展名 | +| 属性 | 类型 | 描述 | +| ------------- | -------- | ------------------------------ | +| `disabled` | boolean | 设为 `true` 可禁用该格式化工具 | +| `command` | string[] | 执行格式化的命令 | +| `environment` | object | 运行格式化工具时设置的环境变量 | +| `extensions` | string[] | 该格式化工具处理的文件扩展名 | -让我们看一些例子。 +下面来看一些示例。 --- -### 禁用格式化程序 +### 禁用格式化工具 -要全局禁用 **所有** 格式化程序,将 `formatter` 设置为 `false`: +要全局禁用**所有**格式化工具,将 `formatter` 设为 `false`: ```json title="opencode.json" {3} { @@ -90,7 +91,7 @@ opencode 附带了多个适用于流行语言和框架的内置格式化程序� } ``` -要禁用 **特定** 格式化程序,将 `disabled` 设置为 `true`: +要禁用**特定**格式化工具,将 `disabled` 设为 `true`: ```json title="opencode.json" {5} { @@ -105,9 +106,9 @@ opencode 附带了多个适用于流行语言和框架的内置格式化程序� --- -### 自定义格式化程序 +### 自定义格式化工具 -您可以覆盖内置格式化程序或通过指定命令、环境变量和文件扩展名添加新格式化程序: +你可以通过指定命令、环境变量和文件扩展名来覆盖内置格式化工具或添加新的格式化工具: ```json title="opencode.json" {4-14} { @@ -128,4 +129,4 @@ opencode 附带了多个适用于流行语言和框架的内置格式化程序� } ``` -命令中的 **`$FILE` 占位符** 将替换为正在格式化的文件的路径。 +命令中的 **`$FILE` 占位符**会被替换为待格式化文件的路径。 diff --git a/packages/web/src/content/docs/zh-cn/github.mdx b/packages/web/src/content/docs/zh-cn/github.mdx index b9b80d0dd..01847f193 100644 --- a/packages/web/src/content/docs/zh-cn/github.mdx +++ b/packages/web/src/content/docs/zh-cn/github.mdx @@ -1,43 +1,43 @@ --- title: GitHub -description: 在 GitHub 问题和拉取请求中使用 opencode。 +description: 在 GitHub Issue 和 Pull Request 中使用 OpenCode。 --- -opencode 与您的 GitHub 工作流程集成。在评论中提及 `/opencode` 或 `/oc`,opencode 将在您的 GitHub Actions 运行器中执行任务。 +OpenCode 可以与你的 GitHub 工作流集成。在评论中提及 `/opencode` 或 `/oc`,OpenCode 就会在你的 GitHub Actions 运行器中执行任务。 --- -## 功能 +## 功能特性 -- **Triage issues**: 要求 opencode 调查问题并向您解释。 -- **Fix and implement**: 要求 opencode 修复问题或实施功能。将在一个新的分支中工作并提交包含所有更改的 PR。 -- **Secure**: opencode 在 GitHub 的运行器中运行。 +- **问题分类**:让 OpenCode 调查某个 Issue 并为你做出解释。 +- **修复与实现**:让 OpenCode 修复 Issue 或实现某个功能。它会在新分支中工作,并提交包含所有变更的 PR。 +- **安全可靠**:OpenCode 在你自己的 GitHub 运行器中运行。 --- ## 安装 -在 GitHub 存储库中的项目中运行以下命令: +在一个位于 GitHub 仓库中的项目里运行以下命令: ```bash opencode github install ``` -这将引导您完成安装 GitHub 应用程序、创建工作流程和设置机密。 +该命令会引导你完成 GitHub App 的安装、工作流的创建以及密钥的配置。 --- ### 手动设置 -或者您可以手动设置。 +你也可以手动进行设置。 -1. **Install the GitHub app** +1. **安装 GitHub App** - 前往 [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent)。确保它已安装在目标存储库上。 + 前往 [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent),确保已在目标仓库中安装该应用。 -2. **Add the workflow** +2. **添加工作流** - 将以下工作流程文件添加到存储库中的 `.github/workflows/opencode.yml` 中。确保在 `model` 中设置适当的 `env` 和所需的 API 密钥。 + 将以下工作流文件添加到仓库的 `.github/workflows/opencode.yml` 中。请确保在 `env` 中设置合适的 `model` 及所需的 API 密钥。 ```yml title=".github/workflows/opencode.yml" {24,26} name: opencode @@ -73,21 +73,21 @@ opencode github install # github_token: xxxx ``` -3. **Store the API keys in secrets** +3. **将 API 密钥存储到 Secrets 中** - 在您的组织或项目的 **Settings** 中,展开左侧的 **Secrets and variables**,然后选择 **Actions**。并添加所需的 API 密钥。 + 在你的组织或项目的 **Settings** 中,展开左侧的 **Secrets and variables**,然后选择 **Actions**,添加所需的 API 密钥。 --- ## 配置 -- `model`:与 opencode 一起使用的模型。采用 `provider/model` 格式。这是 **必需的**。 -- `agent`:要使用的代理。必须是一级代理。如果未找到,则从配置回退到 `default_agent` 或 `"build"`。 -- `share`:是否共享 opencode 会话。对于公共存储库,默认为 **true**。 -- `prompt`:可选的自定义提示以覆盖默认行为。使用它来自定义 opencode 处理请求的方式。 -- `token`:可选的 GitHub 访问 Token,用于执行创建评论、提交更改和打开拉取请求等操作。默认情况下,opencode 使用来自 opencode GitHub 应用程序的安装访问 Token,因此提交、评论和拉取请求显示为来自应用。 +- `model`:OpenCode 使用的模型,格式为 `provider/model`。此项为**必填**。 +- `agent`:要使用的代理,必须是主代理。如果未找到,则回退到配置中的 `default_agent`,若仍未找到则使用 `"build"`。 +- `share`:是否共享 OpenCode 会话。对于公开仓库,默认为 **true**。 +- `prompt`:可选的自定义提示词,用于覆盖默认行为。可通过此项自定义 OpenCode 处理请求的方式。 +- `token`:可选的 GitHub 访问 Token,用于执行创建评论、提交变更和创建 Pull Request 等操作。默认情况下,OpenCode 使用 OpenCode GitHub App 的安装访问 Token,因此提交、评论和 Pull Request 会显示为来自该应用。 - 或者,您可以使用 GitHub Action 运行程序的 [内置 `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token),而无需安装 opencode GitHub 应用程序。只需确保在您的工作流程中所需的权限: + 你也可以使用 GitHub Action 运行器内置的 [`GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token),而无需安装 OpenCode GitHub App。只需确保在工作流中授予所需的权限: ```yaml permissions: @@ -97,26 +97,26 @@ opencode github install issues: write ``` - 您可以在 GitHub Actions 文档中了解有关配置工作流程的更多信息。 + 如果你愿意,也可以使用[个人访问令牌](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT)。 --- ## 支持的事件 -opencode 可以由以下 GitHub 事件触发: +OpenCode 可以由以下 GitHub 事件触发: -| 事件类型 | 触发方式 | 详情 | -| ----------------------------- | ---------------------------- | --------------------------------------------------------------------------------------- | -| `issue_comment` | 对问题或 PR 发表评论 | 在评论中提及 `/opencode` 或 `/oc`。 opencode 读取上下文并可以创建分支、打开 PR 或回复。 | -| `pull_request_review_comment` | 对 PR 中的特定代码行进行评论 | 在检查代码时提及 `/opencode` 或 `/oc`。 opencode 接收文件路径、行号和 diff 上下文。 | -| `issues` | 问题已打开或已编辑 | 创建或修改问题时自动触发 opencode。需要 `prompt` 输入。 | -| `pull_request` | PR 已开启或已更新 | 当 PR 打开、同步或重新打开时自动触发 opencode。对于自动评论很有帮助。 | -| `schedule` | 基于 Cron 的计划 | 按计划运行 opencode。需要 `prompt` 输入。输出进入日志和 PR(没有可评论的问题)。 | -| `workflow_dispatch` | 从 GitHub UI 手动触发 | 通过“操作”选项卡触发 opencode。需要 `prompt` 输入。输出进入日志和 PR。 | +| 事件类型 | 触发方式 | 详情 | +| ----------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------- | +| `issue_comment` | 在 Issue 或 PR 上发表评论 | 在评论中提及 `/opencode` 或 `/oc`。OpenCode 会读取上下文,并可创建分支、提交 PR 或回复。 | +| `pull_request_review_comment` | 在 PR 中对特定代码行发表评论 | 在代码审查时提及 `/opencode` 或 `/oc`。OpenCode 会接收文件路径、行号和 diff 上下文。 | +| `issues` | Issue 被创建或编辑 | 在 Issue 创建或修改时自动触发 OpenCode。需要提供 `prompt` 输入。 | +| `pull_request` | PR 被创建或更新 | 在 PR 被打开、同步或重新打开时自动触发 OpenCode。适用于自动化审查场景。 | +| `schedule` | 基于 Cron 的定时任务 | 按计划运行 OpenCode。需要提供 `prompt` 输入。输出会写入日志和 PR(没有 Issue 可供评论)。 | +| `workflow_dispatch` | 从 GitHub UI 手动触发 | 通过 Actions 选项卡按需触发 OpenCode。需要提供 `prompt` 输入。输出会写入日志和 PR。 | -### 计划示例 +### 定时任务示例 -按计划运行 opencode 以执行自动化任务: +按计划运行 OpenCode 以执行自动化任务: ```yaml title=".github/workflows/opencode-scheduled.yml" name: Scheduled OpenCode Task @@ -150,13 +150,13 @@ jobs: If you find issues worth addressing, open an issue to track them. ``` -对于计划事件,`prompt` 输入是 **必需的**,因为没有注释可以从中提取指令。希望计划工作流在没有用户上下文的情况下运行并进行权限检查,因此如果您 opencode 创建分支或 PR,工作流必须支持 `contents: write` 和 `pull-requests: write`。 +对于定时事件,`prompt` 输入为**必填**,因为没有评论可供提取指令。定时工作流在运行时没有用户上下文来进行权限检查,因此如果你希望 OpenCode 创建分支或 PR,工作流必须授予 `contents: write` 和 `pull-requests: write` 权限。 --- ### Pull Request 示例 -或更新 PR 时自动审核: +在 PR 被创建或更新时自动进行审查: ```yaml title=".github/workflows/opencode-review.yml" name: opencode-review @@ -191,13 +191,13 @@ jobs: - Suggest improvements ``` -对于 `pull_request` 事件,如果未提供 `prompt`,opencode 将默认审核拉取请求。 +对于 `pull_request` 事件,如果未提供 `prompt`,OpenCode 将默认对该 Pull Request 进行审查。 --- ### Issue 分类示例 -自动分类新问题。此示例过滤超过 30 天的账户以减少垃圾邮件: +自动分类新建的 Issue。以下示例会过滤掉注册不满 30 天的账户以减少垃圾信息: ```yaml title=".github/workflows/opencode-triage.yml" name: Issue Triage @@ -246,13 +246,13 @@ jobs: Otherwise, do not comment. ``` -对于 `issues` 事件,`prompt` 输入是 **必需的**,因为没有注释可以从中提取指令。 +对于 `issues` 事件,`prompt` 输入为**必填**,因为没有评论可供提取指令。 --- -## 自定义提示 +## 自定义提示词 -覆盖默认提示,为您的工作流程自定义 opencode 的行为。 +覆盖默认提示词,以便为你的工作流自定义 OpenCode 的行为。 ```yaml title=".github/workflows/opencode.yml" - uses: anomalyco/opencode/github@latest @@ -265,57 +265,57 @@ jobs: - Suggest improvements ``` -这对于执行与您的项目相关的特定审查标准、编码标准或重点领域非常有用。 +这对于在项目中实施特定的审查标准、编码规范或关注重点非常有用。 --- ## 示例 -以下是如何在 GitHub 中使用 opencode 的一些示例。 +以下是在 GitHub 中使用 OpenCode 的一些示例。 -- **Explain an issue** +- **解释 Issue** - 在 GitHub 问题中添加此评论。 + 在 GitHub Issue 中添加以下评论: ``` /opencode explain this issue ``` - opencode 将阅读整个线程,包括所有评论,并回复并提供清晰的解释。 + OpenCode 会阅读整个讨论串(包括所有评论),并回复一份清晰的解释。 -- **Fix an issue** +- **修复 Issue** - 在 GitHub 问题中,说: + 在 GitHub Issue 中输入: ``` /opencode fix this ``` - opencode 将创建一个新分支,实施更改,并使用更改打开 PR。 + OpenCode 会创建一个新分支,实现变更,并提交一个包含所有修改的 PR。 -- **Review PRs and make changes** +- **审查 PR 并进行修改** - 在 GitHub PR 上留下以下评论。 + 在 GitHub PR 上留下以下评论: ``` Delete the attachment from S3 when the note is removed /oc ``` - opencode 将实施请求的更改并提交到同一个 PR。 + OpenCode 会实现所请求的变更并将其提交到同一个 PR 中。 -- **Review specific code lines** +- **审查特定代码行** - 直接在 PR 的“文件”选项卡中的代码行上留下评论。opencode 自动检测文件、行号和差异上下文以提供准确的响应。 + 在 PR 的 "Files" 选项卡中直接对代码行留下评论。OpenCode 会自动检测文件、行号和 diff 上下文,从而提供精准的响应。 ``` [Comment on specific lines in Files tab] /oc add error handling here ``` - 当评论特定行时,opencode 接收: - - 正在审查的确切文件 - - 具体代码行 - - 周围的差异上下文 + 当你对特定代码行发表评论时,OpenCode 会接收到: + - 正在审查的具体文件 + - 特定的代码行 + - 周围的 diff 上下文 - 行号信息 - 这允许更有针对性的请求,而无需手动指定文件路径或行号。 + 这样你就可以提出更有针对性的请求,而无需手动指定文件路径或行号。 diff --git a/packages/web/src/content/docs/zh-cn/gitlab.mdx b/packages/web/src/content/docs/zh-cn/gitlab.mdx index e9c474e62..c1ffa0be6 100644 --- a/packages/web/src/content/docs/zh-cn/gitlab.mdx +++ b/packages/web/src/content/docs/zh-cn/gitlab.mdx @@ -1,34 +1,34 @@ --- title: GitLab -description: 在 GitLab 问题和合并请求中使用 opencode。 +description: 在 GitLab issue 和合并请求中使用 OpenCode。 --- -opencode 通过 GitLab CI/CD 管道或与 GitLab Duo 与您的 GitLab 工作流程集成。 +OpenCode 通过 GitLab CI/CD 流水线或 GitLab Duo 与你的 GitLab 工作流集成。 -在这两种情况下,opencode 都会在您的 GitLab 运行器上运行。 +在这两种情况下,OpenCode 都将在你的 GitLab Runner 上运行。 --- ## GitLab CI -opencode 在常规 GitLab 管道中工作。您可以将其构建为管道 [CI 组件](https://docs.gitlab.com/ee/ci/components/) +OpenCode 可以在常规的 GitLab 流水线中运行。你可以将其作为 [CI 组件](https://docs.gitlab.com/ee/ci/components/) 集成到流水线中。 -在这里,我们使用社区创建的 opencode CI/CD 组件 — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode)。 +这里我们使用的是社区创建的 OpenCode CI/CD 组件 — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode)。 --- -### 功能 +### 功能特性 -- **Use custom configuration per job**: 使用自定义配置目录配置 opencode,例如 `./config/#custom-directory` 以启用或禁用 opencode 调用的功能。 -- **Authentication**: Uses OIDC for secure authentication -- **Flexible**: CI 组件支持多种输入来自定义其行为 +- **按任务自定义配置**:使用自定义配置目录来配置 OpenCode,例如 `./config/#custom-directory`,以便为每次 OpenCode 调用启用或禁用特定功能。 +- **最小化配置**:CI 组件会在后台完成 OpenCode 的设置,你只需创建 OpenCode 配置和初始提示词即可。 +- **灵活可定制**:CI 组件支持多种输入参数来自定义其行为。 --- ### 设置 -1. 将 opencode 身份验证 JSON 作为文件类型 CI 环境变量存储在 **Settings** > **CI/CD** > **Variables** 下。确保将它们标记为“隐藏和隐藏”。 -2. 将以下内容添加到您的 `.gitlab-ci.yml` 文件中。 +1. 将你的 OpenCode 身份验证 JSON 作为文件类型的 CI 环境变量存储在 **Settings** > **CI/CD** > **Variables** 下。请确保将其标记为 "Masked and hidden"。 +2. 将以下内容添加到你的 `.gitlab-ci.yml` 文件中。 ```yaml title=".gitlab-ci.yml" include: @@ -40,40 +40,39 @@ opencode 在常规 GitLab 管道中工作。您可以将其构建为管道 [CI � message: "Your prompt here" ``` -有关此组件的更多输入和示例[查看文档](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode)。 +有关更多输入参数和使用场景,请[查看该组件的文档](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode)。 --- ## GitLab Duo -opencode 与您的 GitLab 工作流程集成。 -在评论中提及 `@opencode`,opencode 将在您的 GitLab CI 管道中执行任务。 +OpenCode 与你的 GitLab 工作流集成。 +在评论中提及 `@opencode`,OpenCode 将在你的 GitLab CI 流水线中执行任务。 --- -### 功能 +### 功能特性 -- **Triage issues**: 要求 opencode 调查问题并向您解释。 -- **Fix and implement**: 要求 opencode 修复问题或实施功能。 - 它将创建一个新分支并提出包含更改的合并请求。 -- **Secure**: opencode 在您的 GitLab 运行器上运行。 +- **问题分类**:让 OpenCode 调查某个 issue 并为你解释。 +- **修复与实现**:让 OpenCode 修复 issue 或实现某个功能。它会创建一个新分支,并提交包含更改的合并请求。 +- **安全可靠**:OpenCode 在你的 GitLab Runner 上运行。 --- ### 设置 -opencode 在您的 GitLab CI/CD 管道中运行,您需要进行以下设置: +OpenCode 在你的 GitLab CI/CD 流水线中运行,以下是设置所需的步骤: :::tip -查看 [**GitLab docs**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) 获取最新说明。 +请查看 [**GitLab 文档**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) 获取最新说明。 ::: -1. 配置您的 GitLab 环境 +1. 配置你的 GitLab 环境 2. 设置 CI/CD -3. 获取 AI 模型提供商 API 密钥 +3. 获取 AI 模型提供商的 API 密钥 4. 创建服务账户 5. 配置 CI/CD 变量 -6. 创建一个流配置文件,这是一个示例: +6. 创建流程配置文件,以下是一个示例: <details> @@ -152,44 +151,44 @@ opencode 在您的 GitLab CI/CD 管道中运行,您需要进行以下设置: </details> -详细说明可以参考 [GitLab CLI agents docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)。 +详细说明请参考 [GitLab CLI agents 文档](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)。 --- ### 示例 -以下是如何在 GitLab 中使用 opencode 的一些示例。 +以下是在 GitLab 中使用 OpenCode 的一些示例。 :::tip -您可以配置使用与 `@opencode` 不同的触发词。 +你可以配置使用不同于 `@opencode` 的触发词。 ::: -- **Explain an issue** +- **解释 issue** - 在 GitLab 问题中添加此评论。 + 在 GitLab issue 中添加以下评论。 ``` @opencode explain this issue ``` - opencode 将阅读该问题并回复并提供清晰的解释。 + OpenCode 会阅读该 issue 并回复清晰的解释。 -- **Fix an issue** +- **修复 issue** - 在 GitLab 问题中,说: + 在 GitLab issue 中输入: ``` @opencode fix this ``` - opencode 将创建一个新分支,实施更改,并打开包含更改的合并请求。 + OpenCode 会创建一个新分支,实现更改,并提交包含更改的合并请求。 -- **Review merge requests** +- **审查合并请求** - 对 GitLab 合并请求留下以下评论。 + 在 GitLab 合并请求中留下以下评论。 ``` @opencode review this merge request ``` - opencode 将审核合并请求并提供反馈。 + OpenCode 会审查合并请求并提供反馈。 diff --git a/packages/web/src/content/docs/zh-cn/ide.mdx b/packages/web/src/content/docs/zh-cn/ide.mdx index fb3a92bec..1a759a8e6 100644 --- a/packages/web/src/content/docs/zh-cn/ide.mdx +++ b/packages/web/src/content/docs/zh-cn/ide.mdx @@ -1,48 +1,48 @@ --- title: IDE -description: VS Code、Cursor 等 IDE 的 opencode 扩展 +description: 适用于 VS Code、Cursor 及其他 IDE 的 OpenCode 扩展 --- -opencode 与 VS Code、Cursor 或任何支持终端的 IDE 集成。只需在终端中运行 `opencode` 即可开始。 +OpenCode 可与 VS Code、Cursor 或任何支持终端的 IDE 集成。只需在终端中运行 `opencode` 即可开始使用。 --- ## 用法 -- **快速启动**:使用 `Cmd+Esc` (Mac) 或 `Ctrl+Esc` (Windows/Linux) 在分割终端视图中打开 opencode,或者聚焦现有终端会话(如果现有终端会话正在运行)。 -- **新会话**:使用 `Cmd+Shift+Esc` (Mac) 或 `Ctrl+Shift+Esc` (Windows/Linux) 启动新的 opencode 终端会话,即使该会话已打开。您还可以单击 UI 中的 opencode 按钮。 -- **上下文获取**:自动与 opencode 共享您当前的选择或选项卡。 -- **文件引用快捷方式**:使用 `Cmd+Option+K` (Mac) 或 `Alt+Ctrl+K` (Linux/Windows) 插入文件引用。例如,`@File#L37-42`。 +- **快速启动**:使用 `Cmd+Esc`(Mac)或 `Ctrl+Esc`(Windows/Linux)在分屏终端视图中打开 OpenCode,如果已有终端会话正在运行,则会自动聚焦到该会话。 +- **新建会话**:使用 `Cmd+Shift+Esc`(Mac)或 `Ctrl+Shift+Esc`(Windows/Linux)启动新的 OpenCode 终端会话,即使已有会话在运行也会新建。你也可以点击界面中的 OpenCode 按钮。 +- **上下文感知**:自动将当前选中内容或标签页共享给 OpenCode。 +- **文件引用快捷键**:使用 `Cmd+Option+K`(Mac)或 `Alt+Ctrl+K`(Linux/Windows)插入文件引用。例如 `@File#L37-42`。 --- ## 安装 -要在 VS Code 和 Cursor、Windsurf、VSCodium 等流行分支上安装 opencode: +在 VS Code 及其常见分支(如 Cursor、Windsurf、VSCodium)上安装 OpenCode: 1. 打开 VS Code 2. 打开集成终端 -3. 运行 `opencode` - 扩展会自动安装 +3. 运行 `opencode`——扩展将自动安装 -另一方面,如果您想在从 TUI 运行 `/editor` 或 `/export` 时使用自己的 IDE,则需要设置 `export EDITOR="code --wait"`。 [了解更多](/docs/tui/#editor-setup)。 +如果你希望在 TUI 中执行 `/editor` 或 `/export` 时使用自己的 IDE,需要设置 `export EDITOR="code --wait"`。[了解更多](/docs/tui/#editor-setup)。 --- ### 手动安装 -在扩展市场中搜索 **opencode**,然后单击 **Install**。 +在扩展商店中搜索 **OpenCode**,然后点击 **Install**。 --- ### 故障排除 -如果扩展无法自动安装: +如果扩展未能自动安装: -- 确定您在集成终端中运行 `opencode`。 -- 确认您的 IDE 和 CLI 已安装: - - 对于 VS Code:`code` 命令 - - 对于 Cursor:`cursor` 命令 - - 对于 Windsurf:`windsurf` 命令 - - 对于 VSCodium:`codium` 命令 - - 如果没有,请运行 `Cmd+Shift+P` (Mac) 或 `Ctrl+Shift+P` (Windows/Linux) 并搜索 “Shell Command: Install 'code' command in PATH”(或适用于您的 IDE 的对应命令) -- 确保 VS Code 能够安装扩展 +- 确保你是在集成终端中运行的 `opencode`。 +- 确认你的 IDE 对应的 CLI 命令已安装: + - VS Code:`code` 命令 + - Cursor:`cursor` 命令 + - Windsurf:`windsurf` 命令 + - VSCodium:`codium` 命令 + - 如果未安装,请按 `Cmd+Shift+P`(Mac)或 `Ctrl+Shift+P`(Windows/Linux),搜索 "Shell Command: Install 'code' command in PATH"(或你的 IDE 对应的命令) +- 确保 VS Code 有权限安装扩展 diff --git a/packages/web/src/content/docs/zh-cn/index.mdx b/packages/web/src/content/docs/zh-cn/index.mdx index 5bff7628a..ed278e239 100644 --- a/packages/web/src/content/docs/zh-cn/index.mdx +++ b/packages/web/src/content/docs/zh-cn/index.mdx @@ -1,43 +1,43 @@ --- -title: 介绍 -description: 开始使用 opencode。 +title: 简介 +description: 开始使用 OpenCode。 --- import { Tabs, TabItem } from "@astrojs/starlight/components" import config from "../../../../config.mjs" export const console = config.console -[**opencode**](/) 是一个开源人工智能编码代理。它可用于基于终端的界面、桌面应用程序或 IDE 扩展。 +[**OpenCode**](/) 是一个开源的 AI 编码代理。它提供终端界面、桌面应用和 IDE 扩展等多种使用方式。 - + 让我们开始吧。 --- -#### 先决条件 +#### 前提条件 -要在终端中使用 opencode,您需要: +要在终端中使用 OpenCode,你需要: -1. 现代终端模拟器,例如: +1. 一款现代终端模拟器,例如: - [WezTerm](https://wezterm.org),跨平台 - [Alacritty](https://alacritty.org),跨平台 - [Ghostty](https://ghostty.org),Linux 和 macOS - [Kitty](https://sw.kovidgoyal.net/kitty/),Linux 和 macOS -2. 你要使用的 LLM 提供商 API 密钥。 +2. 你想使用的 LLM 提供商的 API 密钥。 --- ## 安装 -安装 opencode 最简单的方法是通过安装脚本。 +安装 OpenCode 最简单的方法是通过安装脚本。 ```bash curl -fsSL https://opencode.ai/install | bash ``` -您还可以使用以下命令安装它: +你也可以使用以下方式安装: - **使用 Node.js** @@ -79,9 +79,9 @@ curl -fsSL https://opencode.ai/install | bash brew install anomalyco/tap/opencode ``` - > 我们使用 opencode Tap 来获取最新版本。官方 `brew install opencode` 公式由 Homebrew 团队建议,维护频率较低。 + > 我们推荐使用 OpenCode tap 以获取最新版本。官方的 `brew install opencode` formula 由 Homebrew 团队维护,更新频率较低。 -- **在 Arch Linux 上使用 Paru** +- **在 Arch Linux 上安装** ```bash sudo pacman -S opencode # Arch Linux (Stable) @@ -91,7 +91,7 @@ curl -fsSL https://opencode.ai/install | bash #### Windows :::tip[推荐:使用 WSL] -为了在 Windows 上获得最佳体验,我们建议使用 [Windows Subsystem for Linux (WSL)](/docs/windows-wsl)。它提供了更好的性能并与 opencode 的功能完全兼容。 +为了在 Windows 上获得最佳体验,我们推荐使用 [Windows Subsystem for Linux (WSL)](/docs/windows-wsl)。它提供更好的性能,并完全兼容 OpenCode 的所有功能。 ::: - **使用 Chocolatey** @@ -106,7 +106,7 @@ curl -fsSL https://opencode.ai/install | bash scoop install opencode ``` -- **使用 npm** +- **使用 NPM** ```bash npm install -g opencode-ai @@ -124,18 +124,17 @@ curl -fsSL https://opencode.ai/install | bash docker run -it --rm ghcr.io/anomalyco/opencode ``` -目前正在支持在 Windows 上安装 opencode 时使用 Bun。 +在 Windows 上通过 Bun 安装 OpenCode 的支持目前正在开发中。 -您还可以从 [Releases](https://github.com/anomalyco/opencode/releases) 获取二进制文件。 +你也可以从 [Releases](https://github.com/anomalyco/opencode/releases) 页面直接下载二进制文件。 --- ## 配置 -借助 opencode,你可以通过配置 API 使用任意 LLM 提供商。 +通过 OpenCode,你可以配置 API 密钥来使用任意 LLM 提供商。 -如果你刚开始使用 LLM 提供商,我们建议使用 [OpenCode Zen](/docs/zen)。 -这是经过 opencode 团队测试和验证的精选模型列表。 +如果你刚开始接触 LLM 提供商,我们推荐使用 [OpenCode Zen](/docs/zen)。这是一组经过 OpenCode 团队测试和验证的精选模型。 1. 在 TUI 中运行 `/connect` 命令,选择 opencode,然后前往 [opencode.ai/auth](https://opencode.ai/auth)。 @@ -143,9 +142,9 @@ curl -fsSL https://opencode.ai/install | bash /connect ``` -2. 登录,添加您的账单信息,然后复制您的详细 API 密钥。 +2. 登录并添加账单信息,然后复制你的 API 密钥。 -3. 粘贴您的 API 密钥。 +3. 粘贴你的 API 密钥。 ```txt ┌ API key @@ -154,82 +153,79 @@ curl -fsSL https://opencode.ai/install | bash └ enter ``` -或者,你也可以选择其他提供商之一。[了解更多](/docs/providers#directory)。 +你也可以选择其他提供商。[了解更多](/docs/providers#directory)。 --- ## 初始化 -现在您已经配置了提供商,您可以导航到一个项目 -你想继续工作。 +配置好提供商后,导航到你想要处理的项目目录。 ```bash cd /path/to/project ``` -并运行 opencode。 +然后运行 OpenCode。 ```bash opencode ``` -接下来,通过运行以下命令来初始化项目的 opencode。 +接下来,运行以下命令为项目初始化 OpenCode。 ```bash frame="none" /init ``` -这涉及 opencode 分析您的项目并在以下位置创建 `AGENTS.md` 文件 -项目根。 +OpenCode 会分析你的项目并在项目根目录创建一个 `AGENTS.md` 文件。 :::tip -您应该将项目的 `AGENTS.md` 文件提交到 Git。 +你应该将项目的 `AGENTS.md` 文件提交到 Git。 ::: -这有助于 opencode 理解项目结构和使用的编码模式。 +这有助于 OpenCode 理解项目结构和编码规范。 --- -## 用法 +## 使用 -您现在已准备好使用 opencode 来处理您的项目。请轻松询问任何事物! +现在你已经准备好使用 OpenCode 来处理项目了,尽管提问吧! -如果您不熟悉使用 AI 编码代理,以下是一些可能会有所帮助的示例。 +如果你是第一次使用 AI 编码代理,以下示例可能会对你有所帮助。 --- ### 提问 -您可以要求 opencode 向您解释代码库。 +你可以让 OpenCode 为你讲解代码库。 :::tip -使用 `@` 键模糊搜索工程中的文件。 +使用 `@` 键可以模糊搜索项目中的文件。 ::: ```txt frame="none" "@packages/functions/src/api/index.ts" How is authentication handled in @packages/functions/src/api/index.ts ``` -如果您没有处理代码库的一部分,这会很有帮助。 +当你遇到不熟悉的代码时,这个功能非常有用。 --- ### 添加功能 -您可以要求 opencode 向您的项目添加新功能。但是我们首先建议要求它制定一个计划。 +你可以让 OpenCode 为项目添加新功能。不过我们建议先让它制定一个计划。 -1. **创建计划** +1. **制定计划** - opencode 有一个 _计划模式_,该模式禁止其进行更改和 - 相反,建议 _如何_ 实现该功能。 + OpenCode 有一个*计划模式*,该模式下它不会进行任何修改,而是建议*如何*实现该功能。 - 使用 **Tab** 键切换到它。您会在右下角有一个指示符。 + 使用 **Tab** 键切换到计划模式。你会在右下角看到模式指示器。 ```bash frame="none" title="Switch to Plan mode" <TAB> ``` - 现在让我们描述一下我们想要它做什么。 + 接下来描述你希望它做什么。 ```txt frame="none" When a user deletes a note, we'd like to flag it as deleted in the database. @@ -237,17 +233,15 @@ How is authentication handled in @packages/functions/src/api/index.ts From this screen, the user can undelete a note or permanently delete it. ``` - 您需要为 opencode 提供足够的详细信息才能了解您想要的内容。它有帮助 - 就像与团队中的初级开发人员交谈一样与它交谈。 + 你需要提供足够的细节,让 OpenCode 理解你的需求。可以把它当作团队中的一名初级开发者来沟通。 :::tip - 为 opencode 提供大量上下文和示例,以帮助其理解您的内容 - 想。 + 为 OpenCode 提供充足的上下文和示例,帮助它理解你的需求。 ::: 2. **迭代计划** - 一旦它为您提供了计划,您就可以提供反馈或添加更多详细信息。 + 当它给出计划后,你可以提供反馈或补充更多细节。 ```txt frame="none" We'd like to design this new screen using a design I've used before. @@ -255,22 +249,20 @@ How is authentication handled in @packages/functions/src/api/index.ts ``` :::tip - 将图像拖放到终端中以将其添加到提示中。 + 将图片拖放到终端中即可将其添加到提示词中。 ::: - opencode 可以扫描您提供的任何图像并将其添加到提示中。您可以 - 通过将图像拖放到终端中来完成此操作。 + OpenCode 可以扫描你提供的图片并将其添加到提示词中。只需将图片拖放到终端窗口即可。 3. **构建功能** - 一旦您对计划感到满意,请切换回 _构建模式_ - 再次按 **Tab** 键。 + 当你对计划满意后,再次按 **Tab** 键切换回*构建模式*。 ```bash frame="none" <TAB> ``` - 并要求它做出改变。 + 然后让它开始实施。 ```bash frame="none" Sounds good! Go ahead and make the changes. @@ -278,10 +270,9 @@ How is authentication handled in @packages/functions/src/api/index.ts --- -### 进行更改 +### 直接修改 -对于更直接的更改,您可以要求 opencode 直接构建它 -无需先审查计划。 +对于比较简单的修改,你可以直接让 OpenCode 实施,无需先审查计划。 ```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts" We need to add authentication to the /settings route. Take a look at how this is @@ -289,38 +280,37 @@ handled in the /notes route in @packages/functions/src/notes.ts and implement the same logic in @packages/functions/src/settings.ts ``` -您需要确保提供大量详细信息,以便 opencode 做出正确的决定变化。 +请确保提供足够的细节,以便 OpenCode 做出正确的修改。 --- -### 撤消更改 +### 撤销修改 -假设您要求 opencode 进行一些更改。 +假设你让 OpenCode 做了一些修改。 ```txt frame="none" "@packages/functions/src/api/index.ts" Can you refactor the function in @packages/functions/src/api/index.ts? ``` -但你意识到这不是你想要的。您 **可以撤消** 更改 -使用 `/undo` 命令。 +但你发现结果不是你想要的。你**可以使用** `/undo` 命令来撤销修改。 ```bash frame="none" /undo ``` -opencode 现在将恢复您所做的更改并再次显示您的原始消息。 +OpenCode 会还原所做的修改,并重新显示你之前的消息。 ```txt frame="none" "@packages/functions/src/api/index.ts" Can you refactor the function in @packages/functions/src/api/index.ts? ``` -您可以从这里调整提示并要求 opencode 重试。 +你可以调整提示词,让 OpenCode 重新尝试。 :::tip -您可以多次运行 `/undo` 以撤销多次更改。 +你可以多次运行 `/undo` 来撤销多次修改。 ::: -或者您 **可以使用 `/redo` 命令重做** 更改。 +你也**可以使用** `/redo` 命令来重做修改。 ```bash frame="none" /redo @@ -330,24 +320,24 @@ Can you refactor the function in @packages/functions/src/api/index.ts? ## 分享 -您与 opencode 的对话可以 [与您的团队分享](/docs/share)。 +你与 OpenCode 的对话可以[与团队分享](/docs/share)。 ```bash frame="none" /share ``` -这会创建当前对话的链接并复制到剪贴板。 +这会生成当前对话的链接并复制到剪贴板。 :::note -默认情况下不共享对话。 +对话默认不会被分享。 ::: -这是带有 opencode 的 [示例对话](https://opencode.ai/s/4XP1fce5)。 +这是一个与 OpenCode 的[示例对话](https://opencode.ai/s/4XP1fce5)。 --- -## 定制 +## 个性化 -就是这样!你现在已经是 opencode 高手了。 +以上就是全部内容!你现在已经是 OpenCode 的使用高手了。 -要让您成为自己的,我们建议 [选择一个主题](/docs/themes)、[自定义交互绑定](/docs/keybinds)、[配置代码整理程序](/docs/formatters)、[创建自定义命令](/docs/commands) 或使用 [opencode 配置](/docs/config)。 +要让它更符合你的习惯,我们推荐[选择一个主题](/docs/themes)、[自定义快捷键](/docs/keybinds)、[配置代码格式化工具](/docs/formatters)、[创建自定义命令](/docs/commands),或者探索 [OpenCode 配置](/docs/config)。 diff --git a/packages/web/src/content/docs/zh-cn/keybinds.mdx b/packages/web/src/content/docs/zh-cn/keybinds.mdx index 0ecd7c9bf..bb1d2c21a 100644 --- a/packages/web/src/content/docs/zh-cn/keybinds.mdx +++ b/packages/web/src/content/docs/zh-cn/keybinds.mdx @@ -1,9 +1,9 @@ --- title: 快捷键 -description: 自定义您的按键绑定。 +description: 自定义您的快捷键。 --- -opencode 有一个按键绑定列表,您可以通过 opencode 配置进行自定义。 +OpenCode 提供了一系列快捷键,您可以通过 OpenCode 配置进行自定义。 ```json title="opencode.json" { @@ -105,19 +105,19 @@ opencode 有一个按键绑定列表,您可以通过 opencode 配置进行自� --- -## Leader 键 +## 前导键 -opencode 对大多数按键绑定使用 `leader` 键。这可以避免终端中的冲突。 +OpenCode 的大多数快捷键使用 `leader`(前导键)。这可以避免与终端中的其他快捷键冲突。 -默认情况下,`ctrl+x` 是主键,大多数操作要求您先按主键,再按快捷键。例如,要开始新会话,请先按 `ctrl+x`,然后按 `n`。 +默认情况下,`ctrl+x` 是前导键,大多数操作需要您先按下前导键,然后再按对应的快捷键。例如,要新建一个会话,请先按 `ctrl+x`,然后按 `n`。 -您不需要为键绑定使用主键,但我们建议您这样做。 +您不一定需要使用前导键来设置快捷键,但我们建议您这样做。 --- -## 禁用按键绑定 +## 禁用快捷键 -您可以通过将按键添加到您的配置中并使用值“none”来禁用按键绑定。 +您可以通过在配置中将对应的键值设置为 "none" 来禁用某个快捷键。 ```json title="opencode.json" { @@ -130,41 +130,41 @@ opencode 对大多数按键绑定使用 `leader` 键。这可以避免终端中� --- -## 桌面提示快捷键 - -opencode 桌面应用程序提示输入支持常见的 Readline/Emacs 风格的文本编辑快捷方式。这些是内置的,目前无法通过 `opencode.json` 进行配置。 - -| 快捷键 | 动作 | -| -------- | ------------------------- | -| `ctrl+a` | 移至当前行起点 | -| `ctrl+e` | 移至当前行尾 | -| `ctrl+b` | 将光标向后移动一个字符 | -| `ctrl+f` | 将光标向前移动一个字符 | -| `alt+b` | 将光标向后移动一个单词 | -| `alt+f` | 将光标向前移动一个单词 | -| `ctrl+d` | 删除光标下的字符 | -| `ctrl+k` | 删除到行尾 | -| `ctrl+u` | 删除到行首 | -| `ctrl+w` | 删除前一个单词 | -| `alt+d` | 删除下一个单词 | -| `ctrl+t` | 转置字符 | -| `ctrl+g` | 取消弹出窗口/中止运行响应 | +## 桌面版提示词输入快捷键 + +OpenCode 桌面应用的提示词输入框支持常见的 Readline/Emacs 风格文本编辑快捷键。这些快捷键为内置功能,目前无法通过 `opencode.json` 进行配置。 + +| 快捷键 | 操作 | +| -------- | --------------------------------- | +| `ctrl+a` | 移动到当前行的开头 | +| `ctrl+e` | 移动到当前行的末尾 | +| `ctrl+b` | 光标向后移动一个字符 | +| `ctrl+f` | 光标向前移动一个字符 | +| `alt+b` | 光标向后移动一个单词 | +| `alt+f` | 光标向前移动一个单词 | +| `ctrl+d` | 删除光标所在位置的字符 | +| `ctrl+k` | 删除从光标到行尾的内容 | +| `ctrl+u` | 删除从光标到行首的内容 | +| `ctrl+w` | 删除前一个单词 | +| `alt+d` | 删除后一个单词 | +| `ctrl+t` | 交换光标前后的字符 | +| `ctrl+g` | 取消弹出窗口 / 中止正在运行的响应 | --- ## Shift+Enter -默认情况下,某些终端不发送带有 Enter 的修饰键。您可能需要配置终端发送 `Shift+Enter` 作为转义序列。 +某些终端默认不会发送带修饰键的 Enter 键。您可能需要配置终端将 `Shift+Enter` 作为转义序列发送。 ### Windows Terminal -打开您的 `settings.json`: +打开您的 `settings.json` 文件,路径为: ``` %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json ``` -将其添加到根级 `actions` 数组: +将以下内容添加到根级 `actions` 数组中: ```json "actions": [ @@ -178,7 +178,7 @@ opencode 桌面应用程序提示输入支持常见的 Readline/Emacs 风格的� ] ``` -将其添加到根级 `keybindings` 数组: +将以下内容添加到根级 `keybindings` 数组中: ```json "keybindings": [ @@ -189,4 +189,4 @@ opencode 桌面应用程序提示输入支持常见的 Readline/Emacs 风格的� ] ``` -保存文件并重新启动 Windows Terminal 或打开新选项卡。 +保存文件并重启 Windows Terminal,或打开一个新标签页。 diff --git a/packages/web/src/content/docs/zh-cn/lsp.mdx b/packages/web/src/content/docs/zh-cn/lsp.mdx index cc81810cc..57b812190 100644 --- a/packages/web/src/content/docs/zh-cn/lsp.mdx +++ b/packages/web/src/content/docs/zh-cn/lsp.mdx @@ -1,71 +1,71 @@ --- title: LSP 服务器 -description: opencode 与您的 LSP 服务器集成。 +description: OpenCode 与你的 LSP 服务器集成。 --- -opencode 与您的语言服务器协议 (LSP) 集成,以帮助 LLM 与您的代码库交互。它使用诊断向 LLM 提供反馈。 +OpenCode 与你的语言服务器协议(LSP)集成,帮助 LLM 与你的代码库进行交互。它利用诊断信息向 LLM 提供反馈。 --- -## 内置 - -opencode 附带了多种适用于流行语言的内置 LSP 服务器: - -| LSP 服务器 | 扩展名 | 要求 | -| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------ | -| astro | .astro | Astro 项目自动安装 | -| bash | .sh, .bash, .zsh, .ksh | 自动安装 bash-language-server | -| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | 自动安装 C/C++ 项目 | -| csharp | .cs | `.NET SDK` 已安装 | -| clojure-lsp | .clj, .cljs, .cljc, .edn | `clojure-lsp` 命令可用 | -| dart | .dart | `dart` 命令可用 | -| deno | .ts, .tsx, .js, .jsx, .mjs | `deno` 命令可用(自动检测 deno.json/deno.jsonc) | -| elixir-ls | .ex, .exs | `elixir` 命令可用 | -| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` 项目中的依赖项 | -| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` 已安装 | -| gleam | .gleam | `gleam` 命令可用 | -| gopls | .go | `go` 命令可用 | -| hls | .hs, .lhs | `haskell-language-server-wrapper` 命令可用 | -| jdtls | .java | `Java SDK (version 21+)` 已安装 | -| kotlin-ls | .kt, .kts | Kotlin 项目的自动安装 | -| lua-ls | .lua | 自动安装 Lua 项目 | -| nixd | .nix | `nixd` 命令可用 | -| ocaml-lsp | .ml, .mli | `ocamllsp` 命令可用 | -| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` 项目中的依赖项 | -| php intelephense | .php | PHP 项目的自动安装 | -| prisma | .prisma | `prisma` 命令可用 | -| pyright | .py, .pyi | `pyright` 依赖项已安装 | -| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | `ruby` 和 `gem` 命令可用 | -| rust | .rs | `rust-analyzer` 命令可用 | -| sourcekit-lsp | .swift, .objc, .objcpp | `swift` 已安装(`xcode` 在 macOS 上) | -| svelte | .svelte | Svelte 项目的自动安装 | -| terraform | .tf, .tfvars | 从 GitHub 版本自动安装 | -| tinymist | .typ, .typc | 从 GitHub 版本自动安装 | -| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` 项目中的依赖项 | -| vue | .vue | Vue 项目自动安装 | -| yaml-ls | .yaml, .yml | 自动安装 Red Hat yaml-language-server | -| zls | .zig, .zon | `zig` 命令可用 | - -当检测到上述文件扩展名之一并且满足要求时,LSP 服务器将自动启用。 +## 内置支持 + +OpenCode 内置了多种适用于主流语言的 LSP 服务器: + +| LSP 服务器 | 扩展名 | 要求 | +| ------------------ | ------------------------------------------------------------------- | ----------------------------------------------------- | +| astro | .astro | 为 Astro 项目自动安装 | +| bash | .sh, .bash, .zsh, .ksh | 自动安装 bash-language-server | +| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | 为 C/C++ 项目自动安装 | +| csharp | .cs | 需要已安装 `.NET SDK` | +| clojure-lsp | .clj, .cljs, .cljc, .edn | 需要 `clojure-lsp` 命令可用 | +| dart | .dart | 需要 `dart` 命令可用 | +| deno | .ts, .tsx, .js, .jsx, .mjs | 需要 `deno` 命令可用(自动检测 deno.json/deno.jsonc) | +| elixir-ls | .ex, .exs | 需要 `elixir` 命令可用 | +| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | 项目中需要 `eslint` 依赖 | +| fsharp | .fs, .fsi, .fsx, .fsscript | 需要已安装 `.NET SDK` | +| gleam | .gleam | 需要 `gleam` 命令可用 | +| gopls | .go | 需要 `go` 命令可用 | +| hls | .hs, .lhs | 需要 `haskell-language-server-wrapper` 命令可用 | +| jdtls | .java | 需要已安装 `Java SDK (version 21+)` | +| kotlin-ls | .kt, .kts | 为 Kotlin 项目自动安装 | +| lua-ls | .lua | 为 Lua 项目自动安装 | +| nixd | .nix | 需要 `nixd` 命令可用 | +| ocaml-lsp | .ml, .mli | 需要 `ocamllsp` 命令可用 | +| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | 项目中需要 `oxlint` 依赖 | +| php intelephense | .php | 为 PHP 项目自动安装 | +| prisma | .prisma | 需要 `prisma` 命令可用 | +| pyright | .py, .pyi | 需要已安装 `pyright` 依赖 | +| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | 需要 `ruby` 和 `gem` 命令可用 | +| rust | .rs | 需要 `rust-analyzer` 命令可用 | +| sourcekit-lsp | .swift, .objc, .objcpp | 需要已安装 `swift`(macOS 上为 `xcode`) | +| svelte | .svelte | 为 Svelte 项目自动安装 | +| terraform | .tf, .tfvars | 从 GitHub releases 自动安装 | +| tinymist | .typ, .typc | 从 GitHub releases 自动安装 | +| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | 项目中需要 `typescript` 依赖 | +| vue | .vue | 为 Vue 项目自动安装 | +| yaml-ls | .yaml, .yml | 自动安装 Red Hat yaml-language-server | +| zls | .zig, .zon | 需要 `zig` 命令可用 | + +当检测到上述文件扩展名且满足相应要求时,LSP 服务器会自动启用。 :::note -您可以通过将 `OPENCODE_DISABLE_LSP_DOWNLOAD` 环境变量设置为 `true` 来取消自动 LSP 服务器下载。 +你可以将 `OPENCODE_DISABLE_LSP_DOWNLOAD` 环境变量设置为 `true` 来禁用 LSP 服务器的自动下载。 ::: --- -## 它是如何工作的 +## 工作原理 -当 opencode 打开一个文件时,它: +当 opencode 打开一个文件时,它会: -1. 根据所有启用的 LSP 服务器检查文件扩展名。 -2. 如果尚未运行,则启动相应的 LSP 服务器。 +1. 将文件扩展名与所有已启用的 LSP 服务器进行匹配。 +2. 如果对应的 LSP 服务器尚未运行,则自动启动它。 --- ## 配置 -您可以通过 opencode 配置中的 `lsp` 部分自定义 LSP 服务器。 +你可以通过 opencode 配置文件中的 `lsp` 部分来自定义 LSP 服务器。 ```json title="opencode.json" { @@ -74,23 +74,23 @@ opencode 附带了多种适用于流行语言的内置 LSP 服务器: } ``` -每个 LSP 服务器支持以下功能: +每个 LSP 服务器支持以下配置项: -| 属性 | 类型 | 描述 | -| ---------------- | -------- | ----------------------------------- | -| `disabled` | boolean | 将其设置为 `true` 以禁用 LSP 服务器 | -| `command` | string[] | 启动 LSP 服务器的命令 | -| `extensions` | string[] | 此 LSP 服务器应处理的文件扩展名 | -| `env` | object | 启动服务器时设置的环境变量 | -| `initialization` | object | 发送到 LSP 服务器的初始化选项 | +| 属性 | 类型 | 描述 | +| ---------------- | -------- | --------------------------------- | +| `disabled` | boolean | 设置为 `true` 可禁用该 LSP 服务器 | +| `command` | string[] | 启动 LSP 服务器的命令 | +| `extensions` | string[] | 该 LSP 服务器需要处理的文件扩展名 | +| `env` | object | 启动服务器时设置的环境变量 | +| `initialization` | object | 发送给 LSP 服务器的初始化选项 | -让我们看一些例子。 +下面来看一些示例。 --- ### 环境变量 -启动 LSP 服务器时使用 `env` 参数设置环境变量: +使用 `env` 属性在启动 LSP 服务器时设置环境变量: ```json title="opencode.json" {5-7} { @@ -109,7 +109,7 @@ opencode 附带了多种适用于流行语言的内置 LSP 服务器: ### 初始化选项 -使用 `initialization` 属性将初始化选项传递给 LSP 服务器。这些是在 LSP `initialize` 请求发送期间的服务器特定设置: +使用 `initialization` 属性向 LSP 服务器传递初始化选项。这些是在 LSP `initialize` 请求期间发送的服务器特定设置: ```json title="opencode.json" {5-9} { @@ -127,14 +127,14 @@ opencode 附带了多种适用于流行语言的内置 LSP 服务器: ``` :::note -初始化选项因 LSP 服务器而异。检查 LSP 服务器的文档以获得可用选项。 +初始化选项因 LSP 服务器而异。请查阅你所使用的 LSP 服务器的文档以了解可用选项。 ::: --- ### 禁用 LSP 服务器 -要全局禁用 **所有** LSP 服务,将 `lsp` 设置为 `false`: +要全局禁用**所有** LSP 服务器,将 `lsp` 设置为 `false`: ```json title="opencode.json" {3} { @@ -143,7 +143,7 @@ opencode 附带了多种适用于流行语言的内置 LSP 服务器: } ``` -要禁用 **特定** LSP 服务器,将 `disabled` 设置为 `true`: +要禁用**特定的** LSP 服务器,将 `disabled` 设置为 `true`: ```json title="opencode.json" {5} { @@ -160,7 +160,7 @@ opencode 附带了多种适用于流行语言的内置 LSP 服务器: ### 自定义 LSP 服务器 -您可以通过指定命令和文件扩展名来添加自定义 LSP 服务器: +你可以通过指定命令和文件扩展名来添加自定义 LSP 服务器: ```json title="opencode.json" {4-7} { @@ -176,13 +176,13 @@ opencode 附带了多种适用于流行语言的内置 LSP 服务器: --- -## 其他信息 +## 补充信息 ### PHP Intelephense -PHP Intelephense 通过许可证密钥提供高级功能。您可以通过将(仅)密钥放置在以下位置的文本文件中来提供许可证密钥: +PHP Intelephense 通过许可证密钥提供高级功能。你可以将许可证密钥单独放在以下路径的文本文件中: -- 在 macOS/Linux 上:`$HOME/intelephense/license.txt` -- 在 Windows 上:`%USERPROFILE%/intelephense/license.txt` +- macOS/Linux:`$HOME/intelephense/license.txt` +- Windows:`%USERPROFILE%/intelephense/license.txt` -该文件应仅包含许可证密钥,不包含其他内容。 +该文件应仅包含许可证密钥,不要添加其他任何内容。 diff --git a/packages/web/src/content/docs/zh-cn/mcp-servers.mdx b/packages/web/src/content/docs/zh-cn/mcp-servers.mdx index 6a5fe2075..cac8778d4 100644 --- a/packages/web/src/content/docs/zh-cn/mcp-servers.mdx +++ b/packages/web/src/content/docs/zh-cn/mcp-servers.mdx @@ -1,29 +1,29 @@ --- title: MCP 服务器 -description: 添加本地和远程MCP工具。 +description: 添加本地和远程 MCP 工具。 --- -您可以使用“模型上下文协议”或MCP将外部工具添加到opencode。opencode支持本地和远程服务器。 +你可以通过 _Model Context Protocol_(MCP)为 OpenCode 添加外部工具。OpenCode 同时支持本地和远程服务器。 -添加使用后,MCP工具将自动与内置工具一起供LLM。 +添加后,MCP 工具会自动与内置工具一起提供给 LLM 使用。 --- #### 注意事项 -当您使用 MCP 服务器时,它会添加到上下文中。如果您有很多工具,这会很快增加。因此,我们建议您选择使用哪些 MCP 服务器。 +使用 MCP 服务器时,它会占用上下文空间。如果你启用了大量工具,上下文消耗会迅速增加。因此,我们建议谨慎选择要使用的 MCP 服务器。 :::tip -MCP服务器会添加到您的上下文中,因此您需要小心启用哪些服务器。 +MCP 服务器会占用你的上下文空间,所以请谨慎选择启用哪些服务器。 ::: -某些MCP服务器(例如GitHub MCP服务器)往往会添加大量代币,并且很容易超出上下文限制。 +某些 MCP 服务器(例如 GitHub MCP 服务器)往往会消耗大量 Token,很容易超出上下文限制。 --- ## 启用 -您可以在`mcp`下的[opencode配置](https://opencode.ai/docs/config/)中定义MCP服务器。为每个MCP添加唯一的名称。当提示LLM时,您可以通过名称引用该MCP。 +你可以在 [OpenCode 配置](https://opencode.ai/docs/config/)的 `mcp` 字段下定义 MCP 服务器。为每个 MCP 指定一个唯一的名称,在提示词中可以通过该名称来引用对应的 MCP。 ```jsonc title="opencode.jsonc" {6} { @@ -40,15 +40,15 @@ MCP服务器会添加到您的上下文中,因此您需要小心启用哪些� } ``` -您还可以通过将`enabled`设置为`false`来取消服务器。如果您想暂时取消服务器而不将其从配置中删除,这非常有用。 +你也可以将 `enabled` 设置为 `false` 来禁用某个服务器。当你想临时禁用某个服务器而不将其从配置中移除时,这个选项非常有用。 --- ### 覆盖远程默认值 -组织可以通过其 `.well-known/opencode` 端点提供默认的 MCP 服务器。这些服务器可能默认被禁用,允许用户选择他们需要的服务器。 +组织可以通过其 `.well-known/opencode` 端点提供默认的 MCP 服务器。这些服务器可能默认处于禁用状态,允许用户按需启用。 -要从组织的远程特定启用服务器,请使用配置 `enabled: true` 将其添加到本地配置: +要启用组织远程配置中的某个服务器,请在本地配置中添加该服务器并设置 `enabled: true`: ```json title="opencode.json" { @@ -63,13 +63,13 @@ MCP服务器会添加到您的上下文中,因此您需要小心启用哪些� } ``` -您的本地配置值会覆盖远程默认值。有关更多详细信息,请参阅[配置优先级](/docs/config#precedence-order)。 +本地配置值会覆盖远程默认值。详情请参阅[配置优先级](/docs/config#precedence-order)。 --- ## 本地 -使用`type`将本地MCP服务器添加到MCP对像中的`"local"`。 +通过在 MCP 对象中将 `type` 设置为 `"local"` 来添加本地 MCP 服务器。 ```jsonc title="opencode.jsonc" {15} { @@ -88,9 +88,9 @@ MCP服务器会添加到您的上下文中,因此您需要小心启用哪些� } ``` -该命令是本地MCP服务器的启动方式。您还可以确定环境变量列表。 +`command` 用于指定本地 MCP 服务器的启动命令。你还可以传入一组环境变量。 -例如,以下是添加测试 [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP 服务器的方法。 +例如,以下是添加测试用的 [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP 服务器的方法。 ```jsonc title="opencode.jsonc" { @@ -104,7 +104,7 @@ MCP服务器会添加到您的上下文中,因此您需要小心启用哪些� } ``` -要使用它,我可以将 `use the mcp_everything tool` 添加到我的提示中。 +要使用它,可以在提示词中添加 `use the mcp_everything tool`。 ```txt "mcp_everything" use the mcp_everything tool to add the number 3 and 4 @@ -116,19 +116,19 @@ use the mcp_everything tool to add the number 3 and 4 以下是配置本地 MCP 服务器的所有选项。 -| 选项 | 类型 | 必填 | 描述 | -| ------------- | ------ | ---- | -------------------------------------------------------------- | -| `type` | 字符串 | 是 | MCP 服务器连接类型,必须是`"local"`。 | -| `command` | 数据库 | 是 | 运行 MCP 服务器的命令和参数。 | -| `environment` | 对象 | | 运行服务器时设置的环境变量。 | -| `enabled` | 布尔 | | 在启动时启用或禁用MCP 服务器。 | -| `timeout` | 数量 | | 从MCP服务器获取工具的超时(以毫秒为单位)。默认为5000(5秒)。 | +| 选项 | 类型 | 必填 | 描述 | +| ------------- | ------ | ---- | ----------------------------------------------------------------- | +| `type` | 字符串 | 是 | MCP 服务器连接类型,必须为 `"local"`。 | +| `command` | 数组 | 是 | 运行 MCP 服务器的命令及参数。 | +| `environment` | 对象 | | 运行服务器时设置的环境变量。 | +| `enabled` | 布尔值 | | 启动时启用或禁用该 MCP 服务器。 | +| `timeout` | 数字 | | 从 MCP 服务器获取工具的超时时间(毫秒)。默认为 5000(即 5 秒)。 | --- ## 远程 -通过将`type`设置为ZZPH1Z添加远程MCP服务器。 +通过将 `type` 设置为 `"remote"` 来添加远程 MCP 服务器。 ```json title="opencode.json" { @@ -146,36 +146,36 @@ use the mcp_everything tool to add the number 3 and 4 } ``` -`"remote"` 是远程MCP服务器的URL,使用`url`选项您可以创建标头列表。 +`url` 是远程 MCP 服务器的地址,通过 `headers` 选项可以传入一组请求头。 --- #### 选项 -| 选项 | 类型 | 必填 | 描述 | -| ---------- | ------ | ---- | -------------------------------------------------------------- | -| `headers` | 字符串 | 是 | MCP 服务器连接类型,必须是`type`。 | -| `"remote"` | 字符串 | 是 | 远程 MCP 服务器的 URL。 | -| `url` | 布尔 | | 在启动时启用或禁用MCP 服务器。 | -| `enabled` | 对象 | | 随请求一起发送的标头。 | -| `headers` | 对象 | | OAuth 身份验证。请参阅下面的配置[开放认证](#oauth) 部分。 | -| `oauth` | 数量 | | 从MCP服务器获取工具的超时(以毫秒为单位)。默认为5000(5秒)。 | +| 选项 | 类型 | 必填 | 描述 | +| --------- | ------ | ---- | ----------------------------------------------------------------- | +| `type` | 字符串 | 是 | MCP 服务器连接类型,必须为 `"remote"`。 | +| `url` | 字符串 | 是 | 远程 MCP 服务器的 URL。 | +| `enabled` | 布尔值 | | 启动时启用或禁用该 MCP 服务器。 | +| `headers` | 对象 | | 随请求发送的请求头。 | +| `oauth` | 对象 | | OAuth 身份验证配置。详见下方 [OAuth](#oauth) 部分。 | +| `timeout` | 数字 | | 从 MCP 服务器获取工具的超时时间(毫秒)。默认为 5000(即 5 秒)。 | --- ## OAuth -opencode自动处理远程MCP服务器的OAuth身份验证。当服务器需要身份验证时,opencode将: +OpenCode 会自动处理远程 MCP 服务器的 OAuth 身份验证。当服务器需要身份验证时,OpenCode 将: 1. 检测 401 响应并启动 OAuth 流程 -2. 如果服务器支持,请使用**动态客户端注册 (RFC 7591)** -3. 安全地存储Tokens以供将来的请求 +2. 在服务器支持的情况下使用**动态客户端注册(RFC 7591)** +3. 安全地存储 Token 以供后续请求使用 --- -### 自动 +### 自动认证 -对于大多数支持 OAuth 的 MCP 配置服务器,不需要特殊配置。只需远程服务器: +对于大多数支持 OAuth 的 MCP 服务器,无需特殊配置。只需配置远程服务器即可: ```json title="opencode.json" { @@ -189,13 +189,13 @@ opencode自动处理远程MCP服务器的OAuth身份验证。当服务器需要� } ``` -如果服务器需要身份验证,opencode 将在您第一次尝试使用它时提示您进行身份验证。如果没有,您可以使用 `timeout`[手动触发流量](#authenticating)。 +如果服务器需要身份验证,OpenCode 会在你首次使用时提示你进行认证。你也可以使用 `opencode mcp auth <server-name>` [手动触发认证流程](#authenticating)。 --- ### 预注册 -如果您有来自MCP服务器强大的客户端,则可以配置它们: +如果你已经从 MCP 服务器提供商处获得了客户端凭据,可以直接配置: ```json title="opencode.json" {7-11} { @@ -218,33 +218,33 @@ opencode自动处理远程MCP服务器的OAuth身份验证。当服务器需要� ### 身份验证 -您可以手动触发身份验证或管理凭据。 +你可以手动触发身份验证或管理凭据。 -使用特定MCP服务器进行身份验证: +对特定 MCP 服务器进行身份验证: ```bash opencode mcp auth my-oauth-server ``` -列出所有MCP服务器及其身份验证状态: +列出所有 MCP 服务器及其认证状态: ```bash opencode mcp list ``` -删除存储的凭据: +删除已存储的凭据: ```bash opencode mcp logout my-oauth-server ``` -`opencode mcp auth <server-name>` 命令将打开您的浏览器进行授权。授权后,opencode Tokens安全地存储在 `mcp auth` 中。 +`mcp auth` 命令会打开浏览器进行授权。授权完成后,OpenCode 会将 Token 安全地存储在 `~/.local/share/opencode/mcp-auth.json` 中。 --- #### 禁用 OAuth -如果要禁用服务器的自动OAuth(例如,对于使用API密钥的服务器),则`~/.local/share/opencode/mcp-auth.json`设置为`oauth`: +如果你想为某个服务器禁用自动 OAuth(例如,该服务器使用 API 密钥而非 OAuth),可以将 `oauth` 设置为 `false`: ```json title="opencode.json" {7} { @@ -266,38 +266,38 @@ opencode mcp logout my-oauth-server #### OAuth 选项 -| 选项 | 类型 | 描述 | -| -------------- | --------------- | --------------------------------------------------- | -| `false` | 对象 \| `oauth` | OAuth 配置对象,或 `false` 以取消 OAuth 自动检测。 | -| `clientId` | 字符串 | OAuth 客户端 ID。如果未提供,将尝试动态客户端注册。 | -| `clientSecret` | 字符串 | OAuth客户端密钥(如果需要授权服务器)。 | -| `scope` | 字符串 | 授权期间请求的 OAuth 范围。 | +| 选项 | 类型 | 描述 | +| -------------- | --------------- | ------------------------------------------------------ | +| `oauth` | 对象 \| `false` | OAuth 配置对象,或设为 `false` 以禁用 OAuth 自动检测。 | +| `clientId` | 字符串 | OAuth 客户端 ID。如果未提供,将尝试动态客户端注册。 | +| `clientSecret` | 字符串 | OAuth 客户端密钥(如果授权服务器要求提供)。 | +| `scope` | 字符串 | 授权时请求的 OAuth 作用域。 | #### 调试 -如果远程MCP服务器无法进行身份验证,您可以通过以下方式诊断问题: +如果远程 MCP 服务器身份验证失败,你可以通过以下方式诊断问题: ```bash -# View auth status for all OAuth-capable servers +# 查看所有支持 OAuth 的服务器的认证状态 opencode mcp auth list -# Debug connection and OAuth flow for a specific server +# 调试特定服务器的连接和 OAuth 流程 opencode mcp debug my-oauth-server ``` -`mcp debug`命令显示当前身份验证状态、测试HTTP连接并尝试OAuth发现流程。 +`mcp debug` 命令会显示当前认证状态、测试 HTTP 连接,并尝试执行 OAuth 发现流程。 --- ## 管理 -您的 MCP 可以作为 opencode 中的工具以及内置工具使用。,您可以像任何其他工具一样通过 opencode 配置来管理它们。 +你的 MCP 在 OpenCode 中作为工具使用,与内置工具并列。因此,你可以像管理其他工具一样,通过 OpenCode 配置来管理它们。 --- ### 全局 -这意味著您可以全局启用或禁用它们。 +你可以全局启用或禁用 MCP 工具。 ```json title="opencode.json" {14} { @@ -318,7 +318,7 @@ opencode mcp debug my-oauth-server } ``` -我们还可以使用 glob 模式来取消所有匹配的 MCP。 +也可以使用 glob 模式来禁用所有匹配的 MCP。 ```json title="opencode.json" {14} { @@ -339,16 +339,16 @@ opencode mcp debug my-oauth-server } ``` -这里我们使用 glob 模式 `my-mcp*` 来取消所有 MCP。 +这里使用 glob 模式 `my-mcp*` 来禁用所有 MCP。 --- -### 每个代理人 +### 按代理配置 -如果您有大量 MCP 服务器,您可以选择为每个代理启用它们并全局取消它们。因此: +如果你有大量 MCP 服务器,可以选择全局禁用它们,然后仅在特定代理中启用。具体做法: -1. 全局禁用它作为工具。 -2. 在您的[代理配置](/docs/agents#tools)中,启用MCP作为服务器工具。 +1. 全局禁用该工具。 +2. 在[代理配置](/docs/agents#tools)中,将 MCP 服务器作为工具启用。 ```json title="opencode.json" {11, 14-18} { @@ -375,16 +375,16 @@ opencode mcp debug my-oauth-server --- -#### 全局模式 +#### Glob 模式 -glob 模式使用简单的正则表达式 globbing 模式: +glob 模式使用简单的正则通配符规则: - `*` 匹配零个或多个任意字符(例如,`"my-mcp*"` 匹配 `my-mcp_search`、`my-mcp_list` 等) -- `?` 恰好匹配一个字符 -- 所有其他字符均按字面意思匹配 +- `?` 匹配恰好一个字符 +- 其他字符按字面值匹配 :::note -MCP服务器工具以名称服务器作为出口进行注册,要因此禁用服务器的所有工具,只需使用: +MCP 服务器工具在注册时以服务器名称作为前缀,因此要禁用某个服务器的所有工具,只需使用: ``` "mymcpservername_*": false @@ -396,13 +396,13 @@ MCP服务器工具以名称服务器作为出口进行注册,要因此禁用� ## 示例 -以下是一些常见的 MCP 服务器的示例。如果您想记录其他服务器,您可以提交 PR。 +以下是一些常见 MCP 服务器的配置示例。如果你想记录其他服务器的用法,欢迎提交 PR。 --- -### 哨兵 +### Sentry -添加[哨兵MCP服务器](https://mcp.sentry.dev)以与您的Sentry项目和问题进行交互。 +添加 [Sentry MCP 服务器](https://mcp.sentry.dev) 以与你的 Sentry 项目和问题进行交互。 ```json title="opencode.json" {4-8} { @@ -417,15 +417,15 @@ MCP服务器工具以名称服务器作为出口进行注册,要因此禁用� } ``` -添加配置后,使用Sentry进行身份验证: +添加配置后,使用 Sentry 进行身份验证: ```bash opencode mcp auth sentry ``` -这将打开一个浏览器窗口以完成 OAuth 流程并将 opencode 连接到您的 Sentry 账户。 +这会打开浏览器窗口完成 OAuth 流程,将 OpenCode 连接到你的 Sentry 账户。 -通过身份验证后,您可以在提示中使用Sentry工具来查询问题、项目和错误数据。 +认证完成后,你可以在提示词中使用 Sentry 工具来查询问题、项目和错误数据。 ```txt "use sentry" Show me the latest unresolved issues in my project. use sentry @@ -433,9 +433,9 @@ Show me the latest unresolved issues in my project. use sentry --- -### 背景7 +### Context7 -添加[Context7 MCP 服务器](https://github.com/upstash/context7) 以搜索文档。 +添加 [Context7 MCP 服务器](https://github.com/upstash/context7) 以搜索文档。 ```json title="opencode.json" {4-7} { @@ -449,7 +449,7 @@ Show me the latest unresolved issues in my project. use sentry } ``` -如果您注册了免费帐户,则可以使用 API 轴并获得更高的速率限制。 +如果你注册了免费账户,可以使用 API 密钥来获得更高的速率限制。 ```json title="opencode.json" {7-9} { @@ -466,15 +466,15 @@ Show me the latest unresolved issues in my project. use sentry } ``` -这里我们假设您设置了 `CONTEXT7_API_KEY` 环境变量。 +这里假设你已经设置了 `CONTEXT7_API_KEY` 环境变量。 -将 `use context7` 添加到提示中以使用 Context7 MCP 服务器。 +在提示词中添加 `use context7` 即可使用 Context7 MCP 服务器。 ```txt "use context7" Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7 ``` -或者,您可以将类似的内容添加到您的[代理.md](/docs/rules/)。 +你也可以在 [AGENTS.md](/docs/rules/) 中添加类似的规则。 ```md title="AGENTS.md" When you need to search docs, use `context7` tools. @@ -482,9 +482,9 @@ When you need to search docs, use `context7` tools. --- -### Vercel 的 Grep +### Grep by Vercel -添加 [Vercel 的 Grep](https://grep.app) MCP 服务器正在搜索 GitHub 上的代码片段。 +添加 [Grep by Vercel](https://grep.app) MCP 服务器以搜索 GitHub 上的代码片段。 ```json title="opencode.json" {4-7} { @@ -498,13 +498,13 @@ When you need to search docs, use `context7` tools. } ``` -由于我们将 MCP 服务器命名为 `gh_grep`,因此您可以将 `use the gh_grep tool` 添加到提示中以便代理使用它。 +由于我们将 MCP 服务器命名为 `gh_grep`,你可以在提示词中添加 `use the gh_grep tool` 来让代理使用它。 ```txt "use the gh_grep tool" What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool ``` -或者,您可以将类似的内容添加到您的[代理.md](/docs/rules/)。 +你也可以在 [AGENTS.md](/docs/rules/) 中添加类似的规则。 ```md title="AGENTS.md" If you are unsure how to do something, use `gh_grep` to search code examples from GitHub. diff --git a/packages/web/src/content/docs/zh-cn/models.mdx b/packages/web/src/content/docs/zh-cn/models.mdx index 84d542efd..5399a59ab 100644 --- a/packages/web/src/content/docs/zh-cn/models.mdx +++ b/packages/web/src/content/docs/zh-cn/models.mdx @@ -3,21 +3,21 @@ title: 模型 description: 配置 LLM 提供商和模型。 --- -opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.dev) 支持 **75+ LLM 提供商**,并支持运行本地模型。 +OpenCode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.dev) 支持 **75+ LLM 提供商**,并支持运行本地模型。 --- ## 提供商 -默认会预加载大多数流行的提供商。如果您已通过 `/connect` 命令添加了提供商的凭据,那么它们将在您启动 opencode 时可用。 +大多数热门提供商已默认预加载。如果你通过 `/connect` 命令添加了提供商的凭据,它们将在你启动 OpenCode 时自动可用。 -了解有关[提供商](/docs/providers) 的更多信息。 +了解更多关于[提供商](/docs/providers)的信息。 --- ## 选择模型 -配置完提供商后,您可以通过输入以下内容来选择您想要的模型: +配置好提供商后,你可以通过输入以下命令来选择想要使用的模型: ```bash frame="none" /models @@ -27,15 +27,15 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de ## 推荐模型 -那里有很多模型,每周都会有新模型问世。 +市面上有非常多的模型,每周都有新模型发布。 :::tip -考虑使用我们推荐的模型之一。 +建议使用我们推荐的模型。 ::: -然而,既擅长生成代码又擅长工具调用的只有少数。 +然而,真正擅长代码生成和工具调用的模型只有少数几个。 -以下是与 opencode 配合良好的几个模型,排名不分前面。(这不是好看的列表,也不一定是最新的): +以下是与 OpenCode 配合良好的几个模型,排名不分先后(此列表并非详尽无遗,也不一定是最新的): - GPT 5.2 - GPT 5.1 Codex @@ -46,10 +46,9 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de --- -## 设置默认值 +## 设置默认模型 -要将其中之一设置为默认模型,您可以在您的 -打开代码配置。 +要将某个模型设为默认模型,可以在 OpenCode 配置中设置 `model` 字段。 ```json title="opencode.json" {3} { @@ -58,15 +57,15 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de } ``` -这里完整的ID是`provider_id/model_id`。例如,如果您使用[OpenCode Zen](/docs/zen),则您将使用`opencode/gpt-5.1-codex`来表示GPT 5.1 Codex。 +这里完整的 ID 格式为 `provider_id/model_id`。例如,如果你使用 [OpenCode Zen](/docs/zen),则 GPT 5.1 Codex 对应的值为 `opencode/gpt-5.1-codex`。 -如果您配置了[定制生产](/docs/providers#custom),则`provider_id` 是配置中`provider` 部分的按键,`model_id` 是`provider.models` 中的按键。 +如果你配置了[自定义提供商](/docs/providers#custom),`provider_id` 是配置中 `provider` 部分的键名,`model_id` 是 `provider.models` 中的键名。 --- ## 配置模型 -您可以通过 config.json 全局配置模型的选项。 +你可以通过配置文件全局配置模型的选项。 ```jsonc title="opencode.jsonc" {7-12,19-24} { @@ -100,12 +99,12 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de } ``` -在这里,我们为两个内置模型配置全局设置:`gpt-5`(通过 `openai` 提供商访问)和 `claude-sonnet-4-20250514`(通过 `anthropic` 提供商访问)。 -内置结构和模型名称可以在[Models.dev](https://models.dev) 上找到。 +这里我们为两个内置模型配置了全局设置:通过 `openai` 提供商访问的 `gpt-5`,以及通过 `anthropic` 提供商访问的 `claude-sonnet-4-20250514`。 +内置的提供商和模型名称可以在 [Models.dev](https://models.dev) 上查阅。 -您还可以为您正在使用的任何代理配置这些选项。代理配置会覆盖此处的所有全局选项。 [了解更多](/docs/agents/#additional)。 +你还可以为使用中的任何代理配置这些选项。代理配置会覆盖此处的全局选项。[了解更多](/docs/agents/#additional)。 -你还可以定义扩展内置 variants 的自定义 variants。variants 允许你为同一模型配置不同设置,而无需创建重复条目: +你也可以定义扩展内置变体的自定义变体。变体允许你为同一个模型配置不同的设置,而无需创建重复的条目: ```jsonc title="opencode.jsonc" {6-21} { @@ -137,40 +136,40 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de ## 变体 -许多模型支持具有不同配置的多种变体。opencode附带了流行建设的内置默认变体。 +许多模型支持具有不同配置的多种变体。OpenCode 为热门提供商内置了默认变体。 ### 内置变体 -opencode 附带了许多重大的默认变体: +OpenCode 为许多提供商提供了默认变体: **Anthropic**: -- `high` - 高思维预算(默认) -- `max` - 最大预算规划 +- `high` - 高思考预算(默认) +- `max` - 最大思考预算 **OpenAI**: 因模型而异,但大致如下: -- `none` - 没有推理 -- `minimal` - 最少的推理工作 -- `low` - 推理工作量低 -- `medium` - 中等推理努力 -- `high` - 高推理能力 -- `xhigh` - 极高的推理能力 +- `none` - 无推理 +- `minimal` - 极少推理 +- `low` - 低推理 +- `medium` - 中等推理 +- `high` - 高推理 +- `xhigh` - 超高推理 **Google**: -- `low` - 降低工作量/Tokens预算 -- `high` - 更高的努力/Tokens预算 +- `low` - 较低推理/Token 预算 +- `high` - 较高推理/Token 预算 :::tip -该列表并不全面。许多其他提供商也有内置的默认值。 +此列表并不全面,许多其他提供商也有内置的默认变体。 ::: ### 自定义变体 -您可以覆盖现有变体或添加您自己的变体: +你可以覆盖现有变体或添加自己的变体: ```jsonc title="opencode.jsonc" {7-18} { @@ -197,17 +196,17 @@ opencode 附带了许多重大的默认变体: ### 切换变体 -使用按键绑定`variant_cycle`在变体之间快速切换。 [了解更多](/docs/keybinds)。 +使用快捷键 `variant_cycle` 可以快速在变体之间切换。[了解更多](/docs/keybinds)。 --- ## 加载模型 -当opencode启动时,它会按以下优先顺序检查模型: +OpenCode 启动时,会按以下优先顺序加载模型: -1. `--model` 或 `-m` 配置命令行标志。格式与文件中的相同:`provider_id/model_id`。 +1. `--model` 或 `-m` 命令行标志。格式与配置文件中相同:`provider_id/model_id`。 -2. opencode 配置中的模型列表。 +2. OpenCode 配置中的 model 字段。 ```json title="opencode.json" { @@ -216,8 +215,8 @@ opencode 附带了许多重大的默认变体: } ``` - 这里的格式是`provider/model`。 + 格式为 `provider/model`。 -3. 最后使用的模型。 +3. 上次使用的模型。 -4. 第一个模型使用内部优先级。 +4. 按内部优先级排列的第一个可用模型。 diff --git a/packages/web/src/content/docs/zh-cn/modes.mdx b/packages/web/src/content/docs/zh-cn/modes.mdx index 79c437884..474126c94 100644 --- a/packages/web/src/content/docs/zh-cn/modes.mdx +++ b/packages/web/src/content/docs/zh-cn/modes.mdx @@ -1,58 +1,56 @@ --- title: 模式 -description: 不同的模式适用于不同的用例。 +description: 不同模式适用于不同的使用场景。 --- :::caution -现在通过opencode配置中的`agent`选项配置模式。这 -`mode` 选项现已废弃。 [了解更多](/docs/agents)。 +模式现在通过 opencode 配置中的 `agent` 选项进行配置。`mode` 选项已废弃。[了解更多](/docs/agents)。 ::: -opencode 中的模式允许自定义不同的示例行为、工具和提示。 +opencode 中的模式允许你为不同的使用场景自定义行为、工具和提示词。 -它具有两种内置模式:**构建**和**计划**。您可以定制 -这些或通过 opencode 配置配置您自己的。 +opencode 自带两种内置模式:**build** 和 **plan**。你可以自定义这些模式,也可以通过 opencode 配置创建自己的模式。 -您可以在会话期间在模式之间切换或在配置文件中配置它们。 +你可以在会话中切换模式,也可以在配置文件中进行配置。 --- -## 内置 +## 内置模式 -opencode 有两种内置模式。 +opencode 自带两种内置模式。 --- -### 构建 +### Build -构建是启用所有工具的**默认**模式。这是开发工作的标准模式,您需要完全访问文件操作和系统命令。 +Build 是启用了所有工具的**默认**模式。这是进行开发工作的标准模式,你可以完全访问文件操作和系统命令。 --- -### 计划 +### Plan -专为规划和分析而设计的受限模式。在计划模式下,默认情况下禁用以下工具: +Plan 是一种为规划和分析设计的受限模式。在 plan 模式下,以下工具默认被禁用: - `write` - 无法创建新文件 -- `edit` - 无法修改现有文件,位于 `.opencode/plans/*.md` 的用于详细说明计划本身的文件另外 +- `edit` - 无法修改现有文件,但位于 `.opencode/plans/*.md` 的文件除外,用于详细说明计划本身 - `patch` - 无法应用补丁 - `bash` - 无法执行 shell 命令 -当您希望人工智能分析代码、建议更改或创建计划而不对代码库进行任何实际修改时,此模式非常有用。 +当你希望 AI 分析代码、提出修改建议或制定计划,而不对代码库进行任何实际更改时,此模式非常有用。 --- ## 切换 -您可以在会话期间使用 _Tab_ 键在模式之间切换。或者您配置的 `switch_mode` 键绑定。 +你可以在会话中使用 _Tab_ 键切换模式,或者使用你配置的 `switch_mode` 快捷键。 -另请参见:[格式化程序](/docs/formatters)相关代码配置的信息。 +另请参阅:[格式化工具](/docs/formatters)了解代码格式化配置的相关信息。 --- ## 配置 -您可以自定义内置模式或通过配置创建自己的模式。可以通过两种方式配置模式: +你可以自定义内置模式或通过配置创建自己的模式。模式可以通过两种方式进行配置: ### JSON 配置 @@ -85,9 +83,9 @@ opencode 有两种内置模式。 ### Markdown 配置 -您还可以使用 Markdown 文件定义模式。将它们放入: +你还可以使用 Markdown 文件定义模式。将文件放置在以下位置: -- 全球:`~/.config/opencode/modes/` +- 全局:`~/.config/opencode/modes/` - 项目:`.opencode/modes/` ```markdown title="~/.config/opencode/modes/review.md" @@ -110,15 +108,15 @@ You are in code review mode. Focus on: Provide constructive feedback without making direct changes. ``` -Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模式)。 +Markdown 文件名即为模式名称(例如,`review.md` 创建一个名为 `review` 的模式)。 -让我们详细看看这些配置选项。 +下面让我们详细了解这些配置选项。 --- ### 模型 -使用`model`配置覆盖此模式的默认模型。对于使用针对不同任务优化的不同模型很有帮助。例如,更快的规划模型、更强大的实施模型。 +使用 `model` 配置可以覆盖该模式的默认模型。这对于针对不同任务使用不同模型非常有用。例如,规划时使用更快的模型,实现时使用更强大的模型。 ```json title="opencode.json" { @@ -134,7 +132,7 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模� ### 温度 -使用`temperature`配置控制AI响应的随机性和创造。较低的值使响应更加集中和确定,而较高的值则增加创造力和可变性。 +使用 `temperature` 配置控制 AI 响应的随机性和创造性。较低的值使响应更加集中和确定性,较高的值则增加创造性和多样性。 ```json title="opencode.json" { @@ -149,11 +147,11 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模� } ``` -温度值范围通常为 0.0 到 1.0: +温度值的范围通常为 0.0 到 1.0: -- **0.0-0.2**:响应更集中、确定性更高,适合代码分析和规划 -- **0.3-0.5**:平衡型响应,兼顾稳定性与创造力 -- **0.6-1.0**:响应更有创意和多样性,适合头脑风暴和探索 +- **0.0-0.2**:非常集中且确定性高的响应,适合代码分析和规划 +- **0.3-0.5**:兼顾稳定性与创造力的平衡型响应,适合一般开发任务 +- **0.6-1.0**:更具创造性和多样性的响应,适合头脑风暴和探索性工作 ```json title="opencode.json" { @@ -173,13 +171,13 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模� } ``` -如果未指定温度,opencode将使用特定于模型的默认值(大多数模型通常为0,Qwen模型为0.55)。 +如果未指定温度,opencode 将使用模型特定的默认值(大多数模型通常为 0,Qwen 模型为 0.55)。 --- ### 提示词 -使用 `prompt` 配置为模式指定自定义系统提示文件。提示文件应包含特定于该模式用途的指令。 +使用 `prompt` 配置为模式指定自定义系统提示词文件。提示词文件应包含针对该模式用途的具体指令。 ```json title="opencode.json" { @@ -191,14 +189,13 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模� } ``` -该路径是相对于配置文件所在位置的。所以这适用于 -全局opencode配置和项目特定配置。 +此路径相对于配置文件所在位置。因此,全局 opencode 配置和项目特定配置均可使用。 --- ### 工具 -使用 `tools` 配置控制模式下可用的工具。您可以通过将特定工具设置为 `true` 或 `false` 来启用或禁用特定工具。 +使用 `tools` 配置控制该模式下可用的工具。你可以将特定工具设置为 `true` 或 `false` 来启用或禁用它们。 ```json { @@ -223,27 +220,27 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模� #### 可用工具 -这里是所有可以通过模式配置控制的工具。 +以下是所有可通过模式配置控制的工具。 | 工具 | 描述 | | ----------- | ---------------- | -| `bash` | 执行shell命令 | +| `bash` | 执行 shell 命令 | | `edit` | 修改现有文件 | | `write` | 创建新文件 | | `read` | 读取文件内容 | | `grep` | 搜索文件内容 | | `glob` | 按模式查找文件 | -| `list` | 上市目录内容 | +| `list` | 列出目录内容 | | `patch` | 对文件应用补丁 | | `todowrite` | 管理待办事项列表 | -| `todoread` | 阅读待办事项列表 | +| `todoread` | 读取待办事项列表 | | `webfetch` | 获取网页内容 | --- ## 自定义模式 -您可以通过将自定义模式添加到配置来创建自己的自定义模式。以下是使用这两种方法的示例: +你可以通过在配置中添加自定义模式来创建自己的模式。以下是两种方式的示例: ### 使用 JSON 配置 @@ -268,7 +265,7 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模� ### 使用 Markdown 文件 -在`.opencode/modes/`中为项目特定模式创建模式文件,在`~/.config/opencode/modes/`中为全局模式创建模式文件: +在 `.opencode/modes/` 中创建项目特定的模式文件,或在 `~/.config/opencode/modes/` 中创建全局模式文件: ```markdown title=".opencode/modes/debug.md" --- @@ -318,14 +315,14 @@ Priorities: --- -### 使用案例 +### 使用场景 -以下是不同模式的一些常见用例。 +以下是不同模式的一些常见使用场景。 -- **构建模式**:启用所有工具的完整开发工作 -- **计划模式**:分析和计划,无需更改 -- **审阅模式**:使用只读访问权限和文档工具进行代码审阅 -- **调试模式**:专注于启用bash和读取工具的调查 -- **文档模式**:使用文件操作但不使用系统命令的文档编写 +- **Build 模式**:启用所有工具的完整开发工作 +- **Plan 模式**:分析和规划,不做任何更改 +- **Review 模式**:使用只读访问权限加文档工具进行代码审查 +- **Debug 模式**:启用 bash 和读取工具,专注于问题排查 +- **Docs 模式**:支持文件操作但不支持系统命令的文档编写 -您可能还会发现不同的模型适用于不同的用例。 +你可能还会发现不同的模型适用于不同的使用场景。 diff --git a/packages/web/src/content/docs/zh-cn/network.mdx b/packages/web/src/content/docs/zh-cn/network.mdx index 2ba6b2f48..8289777a1 100644 --- a/packages/web/src/content/docs/zh-cn/network.mdx +++ b/packages/web/src/content/docs/zh-cn/network.mdx @@ -3,13 +3,13 @@ title: 网络 description: 配置代理和自定义证书。 --- -opencode支持企业网络环境的标准代理环境变量和自定义证书。 +OpenCode 支持标准代理环境变量和自定义证书,适用于企业网络环境。 --- ## 代理 -opencode 遵循标准代理环境变量。 +OpenCode 遵循标准代理环境变量。 ```bash # HTTPS proxy (recommended) @@ -23,35 +23,35 @@ export NO_PROXY=localhost,127.0.0.1 ``` :::caution -TUI 与本地 HTTP 服务器通信。您必须绕过此连接的代理以防止路由循环。 +TUI 与本地 HTTP 服务器进行通信。你必须为此连接绕过代理,以防止路由循环。 ::: -您可以使用[CLI 标志](/docs/cli#run)配置服务器的端口和主机名。 +你可以使用 [CLI 标志](/docs/cli#run)来配置服务器的端口和主机名。 --- -### 认证 +### 身份验证 -如果您的代理需要基本身份验证,请在 URL 中包含凭据。 +如果你的代理需要基本身份验证,请在 URL 中包含凭据。 ```bash export HTTPS_PROXY=http://username:[email protected]:8080 ``` :::caution -避免对密码进行硬编码。使用环境变量或安全凭证存储。 +避免将密码硬编码在代码中。请使用环境变量或安全的凭据存储方式。 ::: -对于需要高级身份验证(例如 NTLM 或 Kerberos)的代理,请考虑使用支持您的身份验证方法的 LLM 网关。 +对于需要高级身份验证(如 NTLM 或 Kerberos)的代理,建议使用支持相应身份验证方式的 LLM 网关。 --- ## 自定义证书 -如果您的企业使用自定义 CA 进行 HTTPS 连接,请配置 opencode 以信任它们。 +如果你的企业使用自定义 CA 进行 HTTPS 连接,请配置 OpenCode 以信任这些证书。 ```bash export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem ``` -这适用于代理连接和直接 API 访问。 +此配置同时适用于代理连接和直接 API 访问。 diff --git a/packages/web/src/content/docs/zh-cn/permissions.mdx b/packages/web/src/content/docs/zh-cn/permissions.mdx index 87bcb62ed..0f608976a 100644 --- a/packages/web/src/content/docs/zh-cn/permissions.mdx +++ b/packages/web/src/content/docs/zh-cn/permissions.mdx @@ -1,27 +1,27 @@ --- title: 权限 -description: 控制哪些操作需要批准才能运行。 +description: 控制哪些操作需要审批才能运行。 --- -opencode 使用`permission` 配置来决定给定的操作是否应自动运行、提示您或被阻止。 +OpenCode 使用 `permission` 配置来决定某个操作是否应自动运行、提示你审批,还是被阻止。 -从 `v1.1.1` 开始,旧版配置 `tools` 布尔已被废弃,并已合并到 `permission` 中。仍支持旧版的 `tools` 配置以实现平滑兼容。 +从 `v1.1.1` 开始,旧版 `tools` 布尔配置已被弃用,并已合并到 `permission` 中。旧版 `tools` 配置仍然支持,以保持向后兼容。 --- -## 动作 +## 操作 -每个权限规则解析为以下之一: +每条权限规则解析为以下之一: -- `"allow"` — 尚未批准运行 -- `"ask"` — 提示批准 +- `"allow"` — 无需审批直接运行 +- `"ask"` — 提示审批 - `"deny"` — 阻止该操作 --- ## 配置 -您可以全局设置权限(使用`*`),并覆盖特定工具。 +你可以全局设置权限(使用 `*`),并覆盖特定工具的权限。 ```json title="opencode.json" { @@ -34,7 +34,7 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行� } ``` -您还可以一次设置所有权限: +你还可以一次性设置所有权限: ```json title="opencode.json" { @@ -45,9 +45,9 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行� --- -## 粒度规则(对象语法) +## 细粒度规则(对象语法) -对于大多数权限,您可以使用对象根据工具输入应用不同的操作。 +对于大多数权限,你可以使用对象来根据工具输入应用不同的操作。 ```json title="opencode.json" { @@ -68,19 +68,19 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行� } ``` -规则通过模式匹配进行评估,**最后匹配的规则获胜**。常见的模式是将包罗万象的 `"*"` 规则放在前面,然后再放置更具体的规则。 +规则通过模式匹配进行评估,**最后匹配的规则优先**。常见做法是将通配的 `"*"` 规则放在最前面,更具体的规则放在后面。 ### 通配符 权限模式使用简单的通配符匹配: - `*` 匹配零个或多个任意字符 -- `?` 恰好匹配一个字符 -- 所有其他字符均按字面意思匹配 +- `?` 精确匹配一个字符 +- 所有其他字符按字面值匹配 -### 主目录扩展 +### 主目录展开 -您可以在模式目录中使用 `~` 或 `$HOME` 来引用您的主目录。这对于 [`外部目录`](#external_directory) 规则特别有用。 +你可以在模式开头使用 `~` 或 `$HOME` 来引用你的主目录。这对于 [`external_directory`](#外部目录) 规则特别有用。 - `~/projects/*` -> `/Users/username/projects/*` - `$HOME/projects/*` -> `/Users/username/projects/*` @@ -88,11 +88,11 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行� ### 外部目录 -使用 `external_directory` 允许工具调用启动 opencode 的工作目录之外的路径。这适用于任何采用路径作为输入的工具(例如 `read`、`edit`、`list`、`glob`、`grep` 和许多Z`bash` 命令)。 +使用 `external_directory` 允许工具调用访问 OpenCode 启动时工作目录之外的路径。这适用于任何接受路径作为输入的工具(例如 `read`、`edit`、`list`、`glob`、`grep` 以及许多 `bash` 命令)。 -主扩展(如`~/...`)仅影响模式的编写方式。它不会使外部路径成为当前工作空间的一部分,因此仍然必须通过 `external_directory` 允许工作目录之外的路径。 +主目录展开(如 `~/...`)仅影响模式的书写方式。它不会将外部路径纳入当前工作空间,因此工作目录之外的路径仍然必须通过 `external_directory` 来允许。 -例如,这允许访问`~/projects/personal/`下的所有内容: +例如,以下配置允许访问 `~/projects/personal/` 下的所有内容: ```json title="opencode.json" { @@ -105,7 +105,7 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行� } ``` -这里允许的任何目录都会继承与当前工作空间默认相同的值。自[`read`默认为`allow`](#defaults)起,也允许读取`external_directory`下面的边界,除非被覆盖。当工具应在这些路径中时添加显式规则,例如在保留读取的同时阻止编辑: +此处允许的任何目录都会继承与当前工作空间相同的默认值。由于 [`read` 默认为 `allow`](#默认值),`external_directory` 下的条目也允许读取,除非另行覆盖。当需要在这些路径中限制某个工具时,请添加显式规则,例如在保留读取的同时阻止编辑: ```json title="opencode.json" { @@ -121,38 +121,38 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行� } ``` -将列表重点放在受信任的路径上,并根据其他工具的需要分层额外的允许或拒绝规则(例如`bash`)。 +请将列表限定在受信任的路径上,并根据需要为其他工具(例如 `bash`)叠加额外的允许或拒绝规则。 --- ## 可用权限 -opencode权限由工具名称和一些安全防护措施决定: +OpenCode 的权限以工具名称为键,外加几个安全防护项: -- `read` — 读取文件(与文件路径匹配) -- `edit` — 所有文件修改(头部`edit`、`write`、`patch`、`multiedit`) -- `glob` — 文件通配符(匹配通配符模式) +- `read` — 读取文件(匹配文件路径) +- `edit` — 所有文件修改(涵盖 `edit`、`write`、`patch`、`multiedit`) +- `glob` — 文件通配(匹配通配模式) - `grep` — 内容搜索(匹配正则表达式模式) -- `list` — 列出目录中的文件(与目录路径匹配) -- `bash` — 运行 shell 命令(匹配 `git status --porcelain` 等解析命令) -- `task` — 启动子代理(与子代理类型匹配) -- `skill` — 加载技能(与技能名称匹配) -- `lsp` — 运行 LSP 查询(当前非粒度) +- `list` — 列出目录中的文件(匹配目录路径) +- `bash` — 运行 shell 命令(匹配解析后的命令,如 `git status --porcelain`) +- `task` — 启动子代理(匹配子代理类型) +- `skill` — 加载技能(匹配技能名称) +- `lsp` — 运行 LSP 查询(当前不支持细粒度配置) - `todoread`、`todowrite` — 读取/更新待办事项列表 -- `webfetch` — 获取 URL(与 URL 匹配) -- `websearch`、`codesearch` — 网页/代码搜索(与查询匹配) -- `external_directory` — 当工具访问项目工作目录外部的路径时触发 -- `doom_loop` — 当相同的工具调用相同的输入重复 3 次时触发 +- `webfetch` — 获取 URL(匹配 URL) +- `websearch`、`codesearch` — 网页/代码搜索(匹配查询内容) +- `external_directory` — 当工具访问项目工作目录之外的路径时触发 +- `doom_loop` — 当同一工具调用以相同输入重复 3 次时触发 --- ## 默认值 -如果您未指定任何内容,opencode将从宽松的默认值开始: +如果你未指定任何配置,OpenCode 将使用宽松的默认值: -- 大部分权限默认为`"allow"`。 -- `doom_loop`和`external_directory`默认为`"ask"`。 -- `read` 是 `"allow"`,但 `.env` 文件默认被拒绝: +- 大多数权限默认为 `"allow"`。 +- `doom_loop` 和 `external_directory` 默认为 `"ask"`。 +- `read` 为 `"allow"`,但 `.env` 文件默认被拒绝: ```json title="opencode.json" { @@ -169,24 +169,24 @@ opencode权限由工具名称和一些安全防护措施决定: --- -## “询问”的作用是什么 +## "Ask"的作用 -当 opencode 提示批准时,UI 会提供三种结果: +当 OpenCode 提示审批时,界面提供三种选择: -- `once` — 仅批准此请求 -- `always` — 批准与建议模式匹配的未来请求(对于当前 opencode 会话的其余部分) +- `once` — 仅批准本次请求 +- `always` — 批准与建议模式匹配的后续请求(在当前 OpenCode 会话的剩余时间内有效) - `reject` — 拒绝请求 -`always` 将批准的模式集由该工具提供(例如,bash 批准通常将安全端口(如 `git status*`)列入白名单)。 +`always` 所批准的模式集合由工具提供(例如,bash 审批通常会将安全的命令前缀如 `git status*` 加入白名单)。 --- ## 代理 -您可以覆盖每个代理的权限。代理权限与全局配置合并,代理规则优先。 [了解更多](/docs/agents#permissions)关于代理权限。 +你可以为每个代理单独覆盖权限。代理权限会与全局配置合并,且代理规则优先。[了解更多](/docs/agents#permissions)关于代理权限的内容。 :::note -有关更详细的模式匹配示例,请参见上面的 [粒度规则(对象语法)](#granular-rules-object-syntax) 部分。 +有关更详细的模式匹配示例,请参阅上方的[细粒度规则(对象语法)](#细粒度规则对象语法)部分。 ::: ```json title="opencode.json" @@ -217,7 +217,7 @@ opencode权限由工具名称和一些安全防护措施决定: } ``` -您还可以在 Markdown 中配置代理权限: +你还可以在 Markdown 中配置代理权限: ```markdown title="~/.config/opencode/agents/review.md" --- @@ -233,5 +233,5 @@ Only analyze code and suggest changes. ``` :::tip -对参数的命令使用模式匹配。 `"grep *"` 允许 `grep pattern file.txt`,而 `"grep"` 单独会阻止它。像 `git status` 这样的命令适用于默认行为,但在传递参数时需要显式许可(如 `"git status *"`)。 +对带参数的命令使用模式匹配。`"grep *"` 允许执行 `grep pattern file.txt`,而单独的 `"grep"` 则会阻止它。像 `git status` 这样的命令适用于默认行为,但在传递参数时需要显式权限(如 `"git status *"`)。 ::: diff --git a/packages/web/src/content/docs/zh-cn/plugins.mdx b/packages/web/src/content/docs/zh-cn/plugins.mdx index 69810e67c..0df6d1ee6 100644 --- a/packages/web/src/content/docs/zh-cn/plugins.mdx +++ b/packages/web/src/content/docs/zh-cn/plugins.mdx @@ -1,21 +1,21 @@ --- title: 插件 -description: 编写您自己的插件来扩展 opencode。 +description: 编写自己的插件来扩展 OpenCode。 --- -插件允许您通过挂钩各种事件和自定义行为来扩展 opencode。您可以创建插件来添加新功能、与外部服务集成或修改 opencode 的默认行为。 +插件允许你通过挂钩各种事件和自定义行为来扩展 OpenCode。你可以创建插件来添加新功能、集成外部服务,或修改 OpenCode 的默认行为。 -例如,查看社区创建的[插件](/docs/ecosystem#plugins)。 +如需了解示例,请查看社区创建的[插件](/docs/ecosystem#plugins)。 --- ## 使用插件 -有两种加载插件的方法。 +有两种方式加载插件。 --- -### 从本地文件 +### 从本地文件加载 将 JavaScript 或 TypeScript 文件放置在插件目录中。 @@ -26,7 +26,7 @@ description: 编写您自己的插件来扩展 opencode。 --- -### 来自 npm +### 从 npm 加载 在配置文件中指定 npm 包。 @@ -37,43 +37,42 @@ description: 编写您自己的插件来扩展 opencode。 } ``` -支持常规和范围的 npm 包。 +支持常规和带作用域的 npm 包。 浏览[生态系统](/docs/ecosystem#plugins)中的可用插件。 --- -### 插件是如何安装的 +### 插件的安装方式 -**npm 插件** 在启动时使用 Bun 自动安装。包及其依赖项缓存在 `~/.cache/opencode/node_modules/` 中。 +**npm 插件**在启动时使用 Bun 自动安装。包及其依赖项会缓存在 `~/.cache/opencode/node_modules/` 中。 -**本地插件**直接从插件目录加载。要使用外部包,您必须在配置目录中创建`package.json`(请参阅[依赖关系](#dependencies)),或将插件发布到npm和[将其添加到您的配置中](/docs/config#plugins)。 +**本地插件**直接从插件目录加载。如果需要使用外部包,你必须在配置目录中创建 `package.json`(参见[依赖项](#dependencies)),或者将插件发布到 npm 并[将其添加到配置中](/docs/config#plugins)。 --- ### 加载顺序 -插件从所有源加载,所有挂钩按顺序运行。加载顺序为: +插件从所有来源加载,所有钩子按顺序执行。加载顺序为: 1. 全局配置 (`~/.config/opencode/opencode.json`) -2. 项目配置(`opencode.json`) -3. 插件全局目录 (`~/.config/opencode/plugins/`) -4. 项目插件目录(`.opencode/plugins/`) +2. 项目配置 (`opencode.json`) +3. 全局插件目录 (`~/.config/opencode/plugins/`) +4. 项目插件目录 (`.opencode/plugins/`) -具有相同的名称和版本,但是重复的 npm 包将被加载一次。,本地插件和名称相似的 npm 插件都是分开加载的。 +名称和版本相同的重复 npm 包只会加载一次。但本地插件和名称相似的 npm 插件会分别独立加载。 --- -## 创建一个插件 +## 创建插件 -插件是一个 **JavaScript/TypeScript 模块多个**,它导出一个或插件 -功能。每个函数接收一个上下文对象并返回一个钩子对象。 +插件是一个 **JavaScript/TypeScript 模块**,它导出一个或多个插件函数。每个函数接收一个上下文对象,并返回一个钩子对象。 --- -### 依赖关系 +### 依赖项 -本地插件和自定义工具可以使用外部 npm 包。将 `package.json` 添加到您的配置目录,其中包含您需要的依赖项。 +本地插件和自定义工具可以使用外部 npm 包。在配置目录中添加一个 `package.json`,列出所需的依赖项。 ```json title=".opencode/package.json" { @@ -83,7 +82,7 @@ description: 编写您自己的插件来扩展 opencode。 } ``` -opencode 在启动时运行 `bun install` 来安装这些。然后你的插件和工具就可以导入它们了。 +OpenCode 会在启动时运行 `bun install` 来安装这些依赖项。之后你的插件和工具就可以导入它们了。 ```ts title=".opencode/plugins/my-plugin.ts" import { escape } from "shescape" @@ -113,19 +112,19 @@ export const MyPlugin = async ({ project, client, $, directory, worktree }) => { } ``` -插件函数接收: +插件函数接收以下参数: - `project`:当前项目信息。 - `directory`:当前工作目录。 - `worktree`:git 工作树路径。 -- `client`:用于与AI交互的opencodeSDK客户端。 -- `$`:Bun的[外壳API](https://bun.com/docs/runtime/shell)用于执行命令。 +- `client`:用于与 AI 交互的 OpenCode SDK 客户端。 +- `$`:Bun 的 [Shell API](https://bun.com/docs/runtime/shell),用于执行命令。 --- ### TypeScript 支持 -对于 TypeScript 插件,您可以从插件包中导入类型: +对于 TypeScript 插件,你可以从插件包中导入类型: ```ts title="my-plugin.ts" {1} import type { Plugin } from "@opencode-ai/plugin" @@ -141,7 +140,7 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree ### 事件 -插件可以订阅事件,如下面的示例部分所示。以下是可用的不同事件的列表。 +插件可以订阅事件,如下方示例部分所示。以下是所有可用事件的列表。 #### 命令事件 @@ -211,13 +210,13 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree ## 示例 -以下是一些可用于扩展 opencode 的插件示例。 +以下是一些可用于扩展 OpenCode 的插件示例。 --- ### 发送通知 -当某些事件发生时发送通知: +在特定事件发生时发送通知: ```js title=".opencode/plugins/notification.js" export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => { @@ -232,17 +231,17 @@ export const NotificationPlugin = async ({ project, client, $, directory, worktr } ``` -我们在 macOS 上使用 `osascript` AppleScript。这里我们用它运行来发送通知。 +这里使用 `osascript` 在 macOS 上运行 AppleScript 来发送通知。 :::note -如果您使用 opencode 桌面应用程序,它可以在响应准备就绪或会话错误时自动发送系统通知。 +如果你使用 OpenCode 桌面应用,它可以在响应就绪或会话出错时自动发送系统通知。 ::: --- ### .env 保护 -阻止opencode读取`.env`文件: +阻止 OpenCode 读取 `.env` 文件: ```javascript title=".opencode/plugins/env-protection.js" export const EnvProtection = async ({ project, client, $, directory, worktree }) => { @@ -260,7 +259,7 @@ export const EnvProtection = async ({ project, client, $, directory, worktree }) ### 注入环境变量 -将环境变量注入所有shell执行(AI工具和用户终端): +将环境变量注入所有 Shell 执行(AI 工具和用户终端): ```javascript title=".opencode/plugins/inject-env.js" export const InjectEnvPlugin = async () => { @@ -277,7 +276,7 @@ export const InjectEnvPlugin = async () => { ### 自定义工具 -插件还可以向 opencode 添加自定义工具: +插件还可以为 OpenCode 添加自定义工具: ```ts title=".opencode/plugins/custom-tools.ts" import { type Plugin, tool } from "@opencode-ai/plugin" @@ -300,19 +299,19 @@ export const CustomToolsPlugin: Plugin = async (ctx) => { } ``` -`tool` 帮助器创建一个可以调用的自定义工具的opencode。它采用 Zod 模式函数并返回一个工具定义: +`tool` 辅助函数用于创建 OpenCode 可调用的自定义工具。它接受一个 Zod schema 函数,并返回一个工具定义,包含: -- `description`:该工具的作用 -- `args`:Zod 模式的工具参数 -- `execute`:调用工具时运行的函数 +- `description`:工具的功能描述 +- `args`:工具参数的 Zod schema +- `execute`:工具被调用时执行的函数 -您的自定义工具将可与内置工具一起用于opencode。 +你的自定义工具将与内置工具一起在 OpenCode 中可用。 --- -### 日志 +### 日志记录 -使用 `client.app.log()` 而不是 `console.log` 进行成型日志记录: +使用 `client.app.log()` 代替 `console.log` 进行结构化日志记录: ```ts title=".opencode/plugins/my-plugin.ts" export const MyPlugin = async ({ client }) => { @@ -327,13 +326,13 @@ export const MyPlugin = async ({ client }) => { } ``` -级别:`debug`、`info`、`warn`、`error`。详情请参见【SDK文档](https://opencode.ai/docs/sdk)。 +日志级别:`debug`、`info`、`warn`、`error`。详情请参阅 [SDK 文档](https://opencode.ai/docs/sdk)。 --- ### 压缩钩子 -自定义压缩会话时包含的上下文: +自定义会话压缩时包含的上下文: ```ts title=".opencode/plugins/compaction.ts" import type { Plugin } from "@opencode-ai/plugin" @@ -355,9 +354,9 @@ Include any state that should persist across compaction: } ``` -`experimental.session.compacting`钩子在LLM生成驱动机之前触发。使用它来填充默认压缩提示会丢失的特定于域的上下文。 +`experimental.session.compacting` 钩子在 LLM 生成续接摘要之前触发。使用它来注入默认压缩提示词可能遗漏的领域特定上下文。 -您还可以通过设置`output.prompt`来完全替换压缩提示: +你还可以通过设置 `output.prompt` 来完全替换压缩提示词: ```ts title=".opencode/plugins/custom-compaction.ts" import type { Plugin } from "@opencode-ai/plugin" @@ -382,4 +381,4 @@ Format as a structured prompt that a new agent can use to resume work. } ``` -当设置`output.prompt`时,它会取代完全默认的压缩提示。在这种情况下,`output.context` 内存将被忽略。 +当设置了 `output.prompt` 时,它会完全替换默认的压缩提示词。在这种情况下,`output.context` 数组将被忽略。 diff --git a/packages/web/src/content/docs/zh-cn/providers.mdx b/packages/web/src/content/docs/zh-cn/providers.mdx index 5b064e4ac..ccc2bf7d4 100644 --- a/packages/web/src/content/docs/zh-cn/providers.mdx +++ b/packages/web/src/content/docs/zh-cn/providers.mdx @@ -1,36 +1,36 @@ --- title: 提供商 -description: 在 opencode 中使用任意 LLM 提供商。 +description: 在 OpenCode 中使用任意 LLM 提供商。 --- import config from "../../../../config.mjs" export const console = config.console -opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.dev),支持 **75+ LLM 提供商**,也支持运行本地模型。 +OpenCode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.dev),支持 **75+ LLM 提供商**,同时也支持运行本地模型。 要添加提供商,你需要: 1. 使用 `/connect` 命令添加提供商的 API 密钥。 -2. 在 opencode 配置中设置该提供商。 +2. 在 OpenCode 配置中设置该提供商。 --- ### 凭据 -当你使用 `/connect` 命令添加提供商 API 后,凭据会存储在 -`~/.local/share/opencode/auth.json`。 +使用 `/connect` 命令添加提供商的 API 密钥后,凭据会存储在 +`~/.local/share/opencode/auth.json` 中。 --- ### 配置 -你可以使用 opencode 配置中的 `provider` 部分自定义提供商配置。 +你可以通过 OpenCode 配置中的 `provider` 部分来自定义提供商。 --- -#### 基本网址 +#### 自定义 Base URL -您可以通过设置 `baseURL` 选项来自定义任何提供商的基本 URL。这在使用代理服务或自定义端点时非常有用。 +你可以通过设置 `baseURL` 选项来自定义任何提供商的 Base URL。这在使用代理服务或自定义端点时非常有用。 ```json title="opencode.json" {6} { @@ -49,22 +49,21 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de ## OpenCode Zen -OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 -经测试和验证可与opencode良好配合。 [了解更多](/docs/zen)。 +OpenCode Zen 是由 OpenCode 团队提供的模型列表,这些模型已经过测试和验证,能够与 OpenCode 良好配合使用。[了解更多](/docs/zen)。 :::tip -如果您是新手,我们建议您从 OpenCode Zen 开始。 +如果你是新用户,我们建议从 OpenCode Zen 开始。 ::: -1. Run the `/connect` command in the TUI, select opencode, and head to [opencode.ai/auth](https://opencode.ai/auth). +1. 在 TUI 中执行 `/connect` 命令,选择 opencode,然后前往 [opencode.ai/auth](https://opencode.ai/auth)。 ```txt /connect ``` -2. 登录,添加您的账单详细信息,然后复制您的 API 密钥。 +2. 登录后添加账单信息,然后复制你的 API 密钥。 -3. 贴上您的 API 密钥。 +3. 粘贴你的 API 密钥。 ```txt ┌ API key @@ -73,38 +72,37 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 └ enter ``` -4. 在 TUI 中执行 `/models` 以查看我们推荐的模型列表。 +4. 在 TUI 中执行 `/models` 查看我们推荐的模型列表。 ```txt /models ``` -它的工作方式与 opencode 中的任何其他提供的程序相同,并且完全可以选择使用。 +它的使用方式与 OpenCode 中的其他提供商完全相同,且完全可选。 --- ## 目录 -让我们详细了解一些提供商。如果您想将提供商添加到 -列表,请随时开启PR。 +下面我们来详细了解一些提供商。如果你想将某个提供商添加到列表中,欢迎提交 PR。 :::note -没看到你要的提供商?欢迎提交 PR。 +没有看到你想要的提供商?欢迎提交 PR。 ::: --- ### 302.AI -1. Head over to the [302.AI console](https://302.ai/), create an account, and generate an API key. +1. 前往 [302.AI 控制台](https://302.ai/),创建账户并生成 API 密钥。 -2. 执行`/connect`命令并搜索**302.AI**。 +2. 执行 `/connect` 命令并搜索 **302.AI**。 ```txt /connect ``` -3. 输入您的 302.AI API 密钥。 +3. 输入你的 302.AI API 密钥。 ```txt ┌ API key @@ -113,7 +111,7 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 └ enter ``` -4. 执行`/models`命令选择模型。 +4. 执行 `/models` 命令选择模型。 ```txt /models @@ -123,20 +121,19 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 ### Amazon Bedrock -相当于 Amazon Bedrock 与 opencode 结合使用: +要在 OpenCode 中使用 Amazon Bedrock: -1. 前往 Amazon Bedrock 控制台中的 **模型目录** 并请求 - 访问您想要的模型。 +1. 前往 Amazon Bedrock 控制台中的**模型目录**,申请访问你想要使用的模型。 - :::提示 - 您需要能够在 Amazon Bedrock 中访问所需的模型。 + :::tip + 你需要先在 Amazon Bedrock 中获得对目标模型的访问权限。 ::: -2. **使用以下方法之一配置身份验证**: +2. 使用以下方法之一**配置身份验证**: - #### 环境变量(快速启动) + #### 环境变量(快速上手) - 执行 opencode 时设置以下环境变量之一: + 运行 opencode 时设置以下环境变量之一: ```bash # Option 1: Using AWS access keys @@ -149,7 +146,7 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 AWS_BEARER_TOKEN_BEDROCK=XXX opencode ``` - 或者将它们添加到您的 bash 配置文件中: + 或者将它们添加到你的 bash 配置文件中: ```bash title="~/.bash_profile" export AWS_PROFILE=my-dev-profile @@ -158,7 +155,7 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 #### 配置文件(推荐) - For project-specific or persistent configuration, use `opencode.json`: + 如需项目级别或持久化的配置,请使用 `opencode.json`: ```json title="opencode.json" { @@ -176,16 +173,16 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 **可用选项:** - `region` - AWS 区域(例如 `us-east-1`、`eu-west-1`) - - `profile` - 来自 `~/.aws/credentials` 的 AWS 命名配置档案 - - `endpoint` - VPC 节点节点的自定义节点 URL(通用 `baseURL` 选项的别名) + - `profile` - `~/.aws/credentials` 中的 AWS 命名配置文件 + - `endpoint` - VPC 端点的自定义端点 URL(通用 `baseURL` 选项的别名) - :::提示 - 配置文件选项优先于环境变量。 + :::tip + 配置文件中的选项优先级高于环境变量。 ::: - #### 高阶:VPC 端点 + #### 进阶:VPC 端点 - 如果您使用 Bedrock 的 VPC 终端节点: + 如果你使用 Bedrock 的 VPC 端点: ```json title="opencode.json" { @@ -202,34 +199,34 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 } ``` - :::笔记 - `endpoint` 选项是通用 `baseURL` 选项的别名,使用 AWS 术语特定。如果同时指定了 `endpoint` 和 `baseURL`,则 `endpoint` 优先。 + :::note + `endpoint` 选项是通用 `baseURL` 选项的别名,使用了 AWS 特有的术语。如果同时指定了 `endpoint` 和 `baseURL`,则 `endpoint` 优先。 ::: #### 认证方式 - - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**:创建IAM用户并在AWS控制台中生成访问金币。 - - **`AWS_PROFILE`**:使用 `~/.aws/credentials` 中的命名配置文件。首先配置 `aws configure --profile my-profile` 或 `aws sso login` + - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**:在 AWS 控制台中创建 IAM 用户并生成访问密钥 + - **`AWS_PROFILE`**:使用 `~/.aws/credentials` 中的命名配置文件。需要先通过 `aws configure --profile my-profile` 或 `aws sso login` 进行配置 - **`AWS_BEARER_TOKEN_BEDROCK`**:从 Amazon Bedrock 控制台生成长期 API 密钥 - - **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**:适用于 EKS IRSA(服务账户的 IAM 角色)或具有 OIDC 联合的其他 Kubernetes 环境。使用服务账户注释时,这些环境变量由 Kubernetes 自动注入。 + - **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**:适用于 EKS IRSA(服务账户的 IAM 角色)或其他支持 OIDC 联合的 Kubernetes 环境。使用服务账户注解时,Kubernetes 会自动注入这些环境变量。 - #### 认证优先顺序 + #### 认证优先级 - Amazon Bedrock 使用以下身份验证优先顺序: - 1. **不记名Tokens** - `AWS_BEARER_TOKEN_BEDROCK`环境变化数据或来自`/connect`Tokens的Tokens - 2. **AWS 凭证链** - 配置档案、访问密钥、共享凭证、IAM 角色、Web 身份Tokens (EKS IRSA)、实例项后设置资料 + Amazon Bedrock 使用以下认证优先级: + 1. **Bearer Token** - `AWS_BEARER_TOKEN_BEDROCK` 环境变量或通过 `/connect` 命令获取的 Token + 2. **AWS 凭证链** - 配置文件、访问密钥、共享凭证、IAM 角色、Web Identity Token(EKS IRSA)、实例元数据 - :::笔记 - 设置不记名Tokens(使用 `/connect` 或 `AWS_BEARER_TOKEN_BEDROCK`)时,其优先于所有 AWS 凭证方法(包括配置的配置文件)。 + :::note + 当设置了 Bearer Token(通过 `/connect` 或 `AWS_BEARER_TOKEN_BEDROCK`)时,它的优先级高于所有 AWS 凭证方式,包括已配置的配置文件。 ::: -3. 执行`/models`命令选择所需的模型。 +3. 执行 `/models` 命令选择你想要的模型。 ```txt /models ``` :::note -对于自定义推理配置文件,请在按键中使用模型并提供商名称,并将 `id` 属性设置为 arn。这确保了正确的缓存: +对于自定义推理配置文件,请在 key 中使用模型名称和提供商名称,并将 `id` 属性设置为 ARN。这可以确保正确的缓存行为: ```json title="opencode.json" { @@ -253,14 +250,13 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 ### Anthropic -1. 注册后,执行`/connect`命令并选择Anthropic。 +1. 注册完成后,执行 `/connect` 命令并选择 Anthropic。 ```txt /connect ``` -2. 您可以在此处选择 **Claude Pro/Max** 选项,就会打开您的浏览器 - 并要求您进行身份验证。 +2. 你可以选择 **Claude Pro/Max** 选项,浏览器会自动打开并要求你进行身份验证。 ```txt ┌ Select auth method @@ -271,38 +267,38 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 └ ``` -3. 现在,当您使用 `/models` 命令时,所有人类模型都应该可用。 +3. 现在使用 `/models` 命令即可看到所有 Anthropic 模型。 ```txt /models ``` :::info -Using your Claude Pro/Max subscription in opencode is not officially supported by [Anthropic](https://anthropic.com). +在 OpenCode 中使用 Claude Pro/Max 订阅不是 [Anthropic](https://anthropic.com) 官方支持的用法。 ::: -##### 使用 API 键 +##### 使用 API 密钥 -如果您没有 Pro/Max 订阅,您还可以选择 **创建 API 密钥**。它还会开启您的浏览器并要求您登录 Anthropic 并为您提供一个可以粘贴到终端中的代码。 +如果你没有 Pro/Max 订阅,也可以选择 **Create an API Key**。浏览器会自动打开并要求你登录 Anthropic,然后会提供一个代码供你粘贴到终端中。 -或者,如果您已安装 API 密钥,则可以选择 **手动输入 API 密钥** 将其贴到终端中。 +如果你已经有 API 密钥,可以选择 **Manually enter API Key** 并将其粘贴到终端中。 --- ### Azure OpenAI :::note -如果遇到“抱歉,但我无法协助该请求”错误,请尝试将 Azure 资源中的内容筛选器从 **DefaultV2** 更改为 **Default**。 +如果遇到 "I'm sorry, but I cannot assist with that request" 错误,请尝试将 Azure 资源中的内容过滤器从 **DefaultV2** 更改为 **Default**。 ::: -1. Head over to the [Azure portal](https://portal.azure.com/) and create an **Azure OpenAI** resource. You'll need: - - **资源名称**:这将成为您的 API 端点 (`https://RESOURCE_NAME.openai.azure.com/`) 的一部分 - - **API 密钥**:来自您资源的 `KEY 1` 或 `KEY 2` +1. 前往 [Azure 门户](https://portal.azure.com/)并创建 **Azure OpenAI** 资源。你需要: + - **资源名称**:这会成为你的 API 端点的一部分(`https://RESOURCE_NAME.openai.azure.com/`) + - **API 密钥**:资源中的 `KEY 1` 或 `KEY 2` -2. Go to [Azure AI Foundry](https://ai.azure.com/) and deploy a model. +2. 前往 [Azure AI Foundry](https://ai.azure.com/) 并部署一个模型。 - :::笔记 - 部署名称必须与模型名称匹配,opencode才能正常工作。 + :::note + 部署名称必须与模型名称一致,OpenCode 才能正常工作。 ::: 3. 执行 `/connect` 命令并搜索 **Azure**。 @@ -311,7 +307,7 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b /connect ``` -4. 输入您的 API 密钥。 +4. 输入你的 API 密钥。 ```txt ┌ API key @@ -320,19 +316,19 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b └ enter ``` -5. 将您的资源名称设置为环境变量: +5. 将资源名称设置为环境变量: ```bash AZURE_RESOURCE_NAME=XXX opencode ``` - 或者将其添加内容添加到您的 bash 配置文件中: + 或者添加到你的 bash 配置文件中: ```bash title="~/.bash_profile" export AZURE_RESOURCE_NAME=XXX ``` -6. 执行 `/models` 命令以选择您部署的模型。 +6. 执行 `/models` 命令选择你已部署的模型。 ```txt /models @@ -340,25 +336,25 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b --- -### Azure 认知服务 +### Azure Cognitive Services -1. Head over to the [Azure portal](https://portal.azure.com/) and create an **Azure OpenAI** resource. You'll need: - - **资源名称**:这将成为您的 API 端点 (`https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/`) 的一部分 - - **API 密钥**:来自您资源的 `KEY 1` 或 `KEY 2` +1. 前往 [Azure 门户](https://portal.azure.com/)并创建 **Azure OpenAI** 资源。你需要: + - **资源名称**:这会成为你的 API 端点的一部分(`https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/`) + - **API 密钥**:资源中的 `KEY 1` 或 `KEY 2` -2. Go to [Azure AI Foundry](https://ai.azure.com/) and deploy a model. +2. 前往 [Azure AI Foundry](https://ai.azure.com/) 并部署一个模型。 - :::笔记 - 部署名称必须与模型名称匹配,opencode才能正常工作。 + :::note + 部署名称必须与模型名称一致,OpenCode 才能正常工作。 ::: -3. 执行 `/connect` 命令并搜索 **Azure 认知服务**。 +3. 执行 `/connect` 命令并搜索 **Azure Cognitive Services**。 ```txt /connect ``` -4. 输入您的 API 密钥。 +4. 输入你的 API 密钥。 ```txt ┌ API key @@ -367,19 +363,19 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b └ enter ``` -5. 将您的资源名称设置为环境变量: +5. 将资源名称设置为环境变量: ```bash AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX opencode ``` - 或者将其添加内容添加到您的 bash 配置文件中: + 或者添加到你的 bash 配置文件中: ```bash title="~/.bash_profile" export AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX ``` -6. 执行 `/models` 命令以选择您部署的模型。 +6. 执行 `/models` 命令选择你已部署的模型。 ```txt /models @@ -389,7 +385,7 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b ### Baseten -1. Head over to the [Baseten](https://app.baseten.co/), create an account, and generate an API key. +1. 前往 [Baseten](https://app.baseten.co/),创建账户并生成 API 密钥。 2. 执行 `/connect` 命令并搜索 **Baseten**。 @@ -397,7 +393,7 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b /connect ``` -3. 输入您的 Baseten API 密钥。 +3. 输入你的 Baseten API 密钥。 ```txt ┌ API key @@ -406,7 +402,7 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b └ enter ``` -4. 执行`/models`命令选择模型。 +4. 执行 `/models` 命令选择模型。 ```txt /models @@ -416,7 +412,7 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b ### Cerebras -1. Head over to the [Cerebras console](https://inference.cerebras.ai/), create an account, and generate an API key. +1. 前往 [Cerebras 控制台](https://inference.cerebras.ai/),创建账户并生成 API 密钥。 2. 执行 `/connect` 命令并搜索 **Cerebras**。 @@ -424,7 +420,7 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b /connect ``` -3. 输入您的 Cerebras API 密钥。 +3. 输入你的 Cerebras API 密钥。 ```txt ┌ API key @@ -433,7 +429,7 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b └ enter ``` -4. 执行`/models`命令选择*Qwen 3 Coder 480B*等模型。 +4. 执行 `/models` 命令选择模型,例如 _Qwen 3 Coder 480B_。 ```txt /models @@ -443,11 +439,11 @@ Using your Claude Pro/Max subscription in opencode is not officially supported b ### Cloudflare AI Gateway -Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, and more through a unified endpoint. With [Unified Billing](https://developers.cloudflare.com/ai-gateway/features/unified-billing/) you don't need separate API keys for each provider. +Cloudflare AI Gateway 允许你通过统一端点访问来自 OpenAI、Anthropic、Workers AI 等提供商的模型。通过 [Unified Billing](https://developers.cloudflare.com/ai-gateway/features/unified-billing/),你无需为每个提供商单独准备 API 密钥。 -1. Head over to the [Cloudflare dashboard](https://dash.cloudflare.com/), navigate to **AI** > **AI Gateway**, and create a new gateway. +1. 前往 [Cloudflare 仪表盘](https://dash.cloudflare.com/),导航到 **AI** > **AI Gateway**,创建一个新的网关。 -2. 将您的账户ID和闸道器ID设定为环境变量。 +2. 将你的 Account ID 和 Gateway ID 设置为环境变量。 ```bash title="~/.bash_profile" export CLOUDFLARE_ACCOUNT_ID=your-32-character-account-id @@ -460,7 +456,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, /connect ``` -4. 输入您的 Cloudflare API Tokens。 +4. 输入你的 Cloudflare API Token。 ```txt ┌ API key @@ -475,13 +471,13 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, export CLOUDFLARE_API_TOKEN=your-api-token ``` -5. 执行`/models`命令选择模型。 +5. 执行 `/models` 命令选择模型。 ```txt /models ``` - 您还可以使用opencode配置添加模型。 + 你也可以通过 OpenCode 配置添加模型。 ```json title="opencode.json" { @@ -501,7 +497,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, ### Cortecs -1. Head over to the [Cortecs console](https://cortecs.ai/), create an account, and generate an API key. +1. 前往 [Cortecs 控制台](https://cortecs.ai/),创建账户并生成 API 密钥。 2. 执行 `/connect` 命令并搜索 **Cortecs**。 @@ -509,7 +505,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, /connect ``` -3. 输入您的 Cortecs API 密钥。 +3. 输入你的 Cortecs API 密钥。 ```txt ┌ API key @@ -518,7 +514,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, └ enter ``` -4. 执行 `/models` 命令以选择类似 _Kimi K2 Instruct_ 的模型。 +4. 执行 `/models` 命令选择模型,例如 _Kimi K2 Instruct_。 ```txt /models @@ -528,7 +524,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, ### DeepSeek -1. Head over to the [DeepSeek console](https://platform.deepseek.com/), create an account, and click **Create new API key**. +1. 前往 [DeepSeek 控制台](https://platform.deepseek.com/),创建账户并点击 **Create new API key**。 2. 执行 `/connect` 命令并搜索 **DeepSeek**。 @@ -536,7 +532,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, /connect ``` -3. 输入您的 DeepSeek API 密钥。 +3. 输入你的 DeepSeek API 密钥。 ```txt ┌ API key @@ -545,7 +541,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, └ enter ``` -4. 执行`/models`命令以选择DeepSeek模型,例如*DeepSeek Reasoner*。 +4. 执行 `/models` 命令选择 DeepSeek 模型,例如 _DeepSeek Reasoner_。 ```txt /models @@ -555,7 +551,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, ### Deep Infra -1. Head over to the [Deep Infra dashboard](https://deepinfra.com/dash), create an account, and generate an API key. +1. 前往 [Deep Infra 仪表盘](https://deepinfra.com/dash),创建账户并生成 API 密钥。 2. 执行 `/connect` 命令并搜索 **Deep Infra**。 @@ -563,7 +559,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, /connect ``` -3. 输入您的深层基础设施 API 密钥。 +3. 输入你的 Deep Infra API 密钥。 ```txt ┌ API key @@ -572,7 +568,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, └ enter ``` -4. 执行`/models`命令选择模型。 +4. 执行 `/models` 命令选择模型。 ```txt /models @@ -582,15 +578,15 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, ### Firmware -1. Head over to the [Firmware dashboard](https://app.firmware.ai/signup), create an account, and generate an API key. +1. 前往 [Firmware 仪表盘](https://app.firmware.ai/signup),创建账户并生成 API 密钥。 -2. 执行`/connect`命令并搜索**韧体**。 +2. 执行 `/connect` 命令并搜索 **Firmware**。 ```txt /connect ``` -3. 输入您的韧体API 密钥。 +3. 输入你的 Firmware API 密钥。 ```txt ┌ API key @@ -599,7 +595,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, └ enter ``` -4. 执行`/models`命令选择模型。 +4. 执行 `/models` 命令选择模型。 ```txt /models @@ -609,7 +605,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, ### Fireworks AI -1. Head over to the [Fireworks AI console](https://app.fireworks.ai/), create an account, and click **Create API Key**. +1. 前往 [Fireworks AI 控制台](https://app.fireworks.ai/),创建账户并点击 **Create API Key**。 2. 执行 `/connect` 命令并搜索 **Fireworks AI**。 @@ -617,7 +613,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, /connect ``` -3. 输入您的 Fireworks AI API 密钥。 +3. 输入你的 Fireworks AI API 密钥。 ```txt ┌ API key @@ -626,7 +622,7 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, └ enter ``` -4. 执行 `/models` 命令以选择类似 _Kimi K2 Instruct_ 的模型。 +4. 执行 `/models` 命令选择模型,例如 _Kimi K2 Instruct_。 ```txt /models @@ -636,15 +632,15 @@ Cloudflare AI Gateway lets you access models from OpenAI, Anthropic, Workers AI, ### GitLab Duo -GitLab Duo 通过 GitLab 的人工代理提供具有本机工具呼叫功能的人工智慧代理聊天。 +GitLab Duo 通过 GitLab 的 Anthropic 代理提供具有原生工具调用能力的 AI 驱动的代理聊天。 -1. 执行`/connect`命令并选择GitLab。 +1. 执行 `/connect` 命令并选择 GitLab。 ```txt /connect ``` -2. 选择您的身份验证方法: +2. 选择你的身份验证方式: ```txt ┌ Select auth method @@ -654,16 +650,16 @@ GitLab Duo 通过 GitLab 的人工代理提供具有本机工具呼叫功能的� └ ``` - #### 使用OAuth(推荐) + #### 使用 OAuth(推荐) - 选择**OAuth**,您的浏览器将开启并进行授权。 + 选择 **OAuth**,浏览器会自动打开进行授权。 - #### 使用个人访问Tokens - 1. Go to [GitLab User Settings > Access Tokens](https://gitlab.com/-/user_settings/personal_access_tokens) - 2. 单击**添加新Tokens** - 3. Name: `OpenCode`, Scopes: `api` - 4. 复制Tokens(以 `glpat-` 发起人) - 5. 在终端中输入 + #### 使用个人访问令牌 + 1. 前往 [GitLab 用户设置 > Access Tokens](https://gitlab.com/-/user_settings/personal_access_tokens) + 2. 点击 **Add new token** + 3. 名称填写 `OpenCode`,范围选择 `api` + 4. 复制令牌(以 `glpat-` 开头) + 5. 在终端中输入该令牌 3. 执行 `/models` 命令查看可用模型。 @@ -671,23 +667,19 @@ GitLab Duo 通过 GitLab 的人工代理提供具有本机工具呼叫功能的� /models ``` - 提供基于 Claude 的模型: - - **duo-chat-haiku-4-5**(默认)- 快速任务的快速响应 - - **duo-chat-sonnet-4-5** - 大多数工作流程的平衡失败 - - **duo-chat-opus-4-5** - 最有能力进行复杂分析 + 提供三个基于 Claude 的模型: + - **duo-chat-haiku-4-5**(默认)- 快速响应,适合简单任务 + - **duo-chat-sonnet-4-5** - 性能均衡,适合大多数工作流 + - **duo-chat-opus-4-5** - 最强大,适合复杂分析 :::note -如果您不愿意,也可以指定“GITLAB_TOKEN”环境变量 -将Tokens存储在opencode身份验证存储中。 +你也可以通过指定 `GITLAB_TOKEN` 环境变量来避免将令牌存储在 OpenCode 的认证存储中。 ::: ##### 自托管 GitLab -:::note[合规笔记] -opencode 使用一个小模型来执行一些 AI 任务,例如生成会话标题。 -情况下,其配置为使用 gpt-5-nano,由 Zen 托管。默认 opencode -只需使用您自己的 GitLab 托管示例项,即可将以下内容添加到您的 -`opencode.json` file. It is also recommended to disable session sharing. +:::note[合规说明] +OpenCode 会使用一个小模型来执行部分 AI 任务,例如生成会话标题。默认情况下使用由 Zen 托管的 gpt-5-nano。如果你需要让 OpenCode 仅使用你自己的 GitLab 托管实例,请在 `opencode.json` 文件中添加以下内容。同时建议禁用会话共享。 ```json { @@ -699,20 +691,20 @@ opencode 使用一个小模型来执行一些 AI 任务,例如生成会话标� ::: -对于自托管 GitLab 示例项目: +对于自托管 GitLab 实例: ```bash export GITLAB_INSTANCE_URL=https://gitlab.company.com export GITLAB_TOKEN=glpat-... ``` -如果您的示例项执行自定义AI闸道器: +如果你的实例运行了自定义 AI Gateway: ```bash GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com ``` -或者添加到您的 bash 配置文件中: +或者添加到你的 bash 配置文件中: ```bash title="~/.bash_profile" export GITLAB_INSTANCE_URL=https://gitlab.company.com @@ -721,35 +713,33 @@ export GITLAB_TOKEN=glpat-... ``` :::note -您的 GitLab 管理员必须启用以下功能: +你的 GitLab 管理员必须启用以下功能: -1. [Duo Agent Platform](https://docs.gitlab.com/user/gitlab_duo/turn_on_off/) for the user, group, or instance -2. 功能标志(通过Rails控制台): +1. 为用户、群组或实例启用 [Duo Agent Platform](https://docs.gitlab.com/user/gitlab_duo/turn_on_off/) +2. 功能标志(通过 Rails 控制台): - `agent_platform_claude_code` - `third_party_agents_enabled` ::: -##### 用于自托管项目的 OAuth +##### 自托管实例的 OAuth -为了使 Oauth 适用于您的自托管项目,您需要建立 -一个新的应用程序(设置→应用程序) -回调 URL `http://127.0.0.1:8080/callback` 和以下范围: +要在自托管实例上使用 OAuth,你需要创建一个新应用(设置 → 应用),回调 URL 设置为 `http://127.0.0.1:8080/callback`,并选择以下范围: -- api(您代表访问API) -- read_user(读取您的个人信息) -- read_repository(允许对存储库进行只读访问) +- api(代表你访问 API) +- read_user(读取你的个人信息) +- read_repository(允许对仓库进行只读访问) -然后将应用程序ID公开为环境变量: +然后将应用 ID 导出为环境变量: ```bash export GITLAB_OAUTH_CLIENT_ID=your_application_id_here ``` -More documentation on [opencode-gitlab-auth](https://www.npmjs.com/package/@gitlab/opencode-gitlab-auth) homepage. +更多文档请参阅 [opencode-gitlab-auth](https://www.npmjs.com/package/@gitlab/opencode-gitlab-auth) 主页。 ##### 配置 -Customize through `opencode.json`: +通过 `opencode.json` 进行自定义配置: ```json title="opencode.json" { @@ -770,7 +760,7 @@ Customize through `opencode.json`: ##### GitLab API 工具(可选,但强烈推荐) -要访问GitLab工具(合并请求、问题、管道、CI/CD等): +要访问 GitLab 工具(合并请求、Issue、流水线、CI/CD 等): ```json title="opencode.json" { @@ -779,19 +769,16 @@ Customize through `opencode.json`: } ``` -该外挂提供全面的GitLab存储库管理功能,包括MR审查、问题跟踪、管道监控等。 +该插件提供全面的 GitLab 仓库管理功能,包括 MR 审查、Issue 跟踪、流水线监控等。 --- ### GitHub Copilot -相当于您的 GitHub Copilot 订阅与 opencode 一起使用: +要在 OpenCode 中使用你的 GitHub Copilot 订阅: :::note -某些模型可能需要 [Pro+ -订阅](https://github.com/features/copilot/plans)使用。 - -Some models need to be manually enabled in your [GitHub Copilot settings](https://docs.github.com/en/copilot/how-tos/use-ai-models/configure-access-to-ai-models#setup-for-individual-use). +部分模型可能需要 [Pro+ 订阅](https://github.com/features/copilot/plans)才能使用。 ::: 1. 执行 `/connect` 命令并搜索 GitHub Copilot。 @@ -800,7 +787,7 @@ Some models need to be manually enabled in your [GitHub Copilot settings](https: /connect ``` -2. Navigate to [github.com/login/device](https://github.com/login/device) and enter the code. +2. 前往 [github.com/login/device](https://github.com/login/device) 并输入验证码。 ```txt ┌ Login with GitHub Copilot @@ -812,7 +799,7 @@ Some models need to be manually enabled in your [GitHub Copilot settings](https: └ Waiting for authorization... ``` -3. 现在执行 `/models` 命令来选择您想要的模型。 +3. 现在执行 `/models` 命令选择你想要的模型。 ```txt /models @@ -822,29 +809,28 @@ Some models need to be manually enabled in your [GitHub Copilot settings](https: ### Google Vertex AI -Google Vertex AI 与 opencode 结合使用: +要在 OpenCode 中使用 Google Vertex AI: -1. 前往 Google Cloud Console 中的 **模型花园** 并检查 - 您所在地区提供的模型。 +1. 前往 Google Cloud Console 中的**模型花园**,查看你所在区域可用的模型。 - :::笔记 - 您需要有一个启用了 Vertex AI API 的 Google Cloud 专案。 + :::note + 你需要一个启用了 Vertex AI API 的 Google Cloud 项目。 ::: 2. 设置所需的环境变量: - - `GOOGLE_CLOUD_PROJECT`:您的Google云专案ID - - `VERTEX_LOCATION`(可选):Vertex AI的区域(默认为`global`) - - 身份验证(选择一项): - - `GOOGLE_APPLICATION_CREDENTIALS`:服务帐户 JSON 密钥文件的路径 + - `GOOGLE_CLOUD_PROJECT`:你的 Google Cloud 项目 ID + - `VERTEX_LOCATION`(可选):Vertex AI 的区域(默认为 `global`) + - 身份验证(选择其一): + - `GOOGLE_APPLICATION_CREDENTIALS`:服务账户 JSON 密钥文件的路径 - 使用 gcloud CLI 进行身份验证:`gcloud auth application-default login` - 在执行 opencode 时设置它们。 + 在运行 opencode 时设置: ```bash GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json GOOGLE_CLOUD_PROJECT=your-project-id opencode ``` - 或者将它们添加到您的 bash 配置文件中。 + 或者添加到你的 bash 配置文件中: ```bash title="~/.bash_profile" export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json @@ -853,10 +839,10 @@ Google Vertex AI 与 opencode 结合使用: ``` :::tip -The `global` region improves availability and reduces errors at no extra cost. Use regional endpoints (e.g., `us-central1`) for data residency requirements. [Learn more](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#regional_and_global_endpoints) +`global` 区域可以提高可用性并减少错误,且不会产生额外费用。如果有数据驻留需求,请使用区域端点(例如 `us-central1`)。[了解更多](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#regional_and_global_endpoints) ::: -3. 执行`/models`命令选择所需的模型。 +3. 执行 `/models` 命令选择你想要的模型。 ```txt /models @@ -866,7 +852,7 @@ The `global` region improves availability and reduces errors at no extra cost. U ### Groq -1. Head over to the [Groq console](https://console.groq.com/), click **Create API Key**, and copy the key. +1. 前往 [Groq 控制台](https://console.groq.com/),点击 **Create API Key** 并复制密钥。 2. 执行 `/connect` 命令并搜索 Groq。 @@ -874,7 +860,7 @@ The `global` region improves availability and reduces errors at no extra cost. U /connect ``` -3. 输入结构的API 密钥。 +3. 输入该提供商的 API 密钥。 ```txt ┌ API key @@ -883,7 +869,7 @@ The `global` region improves availability and reduces errors at no extra cost. U └ enter ``` -4. 执行`/models`命令来选择您想要的。 +4. 执行 `/models` 命令选择你想要的模型。 ```txt /models @@ -893,17 +879,17 @@ The `global` region improves availability and reduces errors at no extra cost. U ### Hugging Face -[Hugging Face Inference Providers](https://huggingface.co/docs/inference-providers) provides access to open models supported by 17+ providers. +[Hugging Face Inference Providers](https://huggingface.co/docs/inference-providers) 提供对由 17+ 提供商支持的开放模型的访问。 -1. Head over to [Hugging Face settings](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained) to create a token with permission to make calls to Inference Providers. +1. 前往 [Hugging Face 设置](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained),创建一个具有调用 Inference Providers 权限的令牌。 -2. 执行 `/connect` 命令并搜索 **拥抱脸**。 +2. 执行 `/connect` 命令并搜索 **Hugging Face**。 ```txt /connect ``` -3. 输入您的 Hugging Face API 密钥。 +3. 输入你的 Hugging Face 令牌。 ```txt ┌ API key @@ -912,7 +898,7 @@ The `global` region improves availability and reduces errors at no extra cost. U └ enter ``` -4. 执行`/models`命令选择*Kimi-K2-Instruct* 或 _GLM-4.6_ 等模型。 +4. 执行 `/models` 命令选择模型,例如 _Kimi-K2-Instruct_ 或 _GLM-4.6_。 ```txt /models @@ -922,9 +908,9 @@ The `global` region improves availability and reduces errors at no extra cost. U ### Helicone -[Helicone](https://helicone.ai) is an LLM observability platform that provides logging, monitoring, and analytics for your AI applications. The Helicone AI Gateway routes your requests to the appropriate provider automatically based on the model. +[Helicone](https://helicone.ai) 是一个 LLM 可观测性平台,为你的 AI 应用提供日志记录、监控和分析功能。Helicone AI Gateway 会根据模型自动将请求路由到对应的提供商。 -1. Head over to [Helicone](https://helicone.ai), create an account, and generate an API key from your dashboard. +1. 前往 [Helicone](https://helicone.ai),创建账户并在仪表盘中生成 API 密钥。 2. 执行 `/connect` 命令并搜索 **Helicone**。 @@ -932,7 +918,7 @@ The `global` region improves availability and reduces errors at no extra cost. U /connect ``` -3. 输入您的 Helicone API 密钥。 +3. 输入你的 Helicone API 密钥。 ```txt ┌ API key @@ -941,19 +927,19 @@ The `global` region improves availability and reduces errors at no extra cost. U └ enter ``` -4. 执行`/models`命令选择模型。 +4. 执行 `/models` 命令选择模型。 ```txt /models ``` -For more providers and advanced features like caching and rate limiting, check the [Helicone documentation](https://docs.helicone.ai). +如需了解更多提供商以及缓存、速率限制等高级功能,请查阅 [Helicone 文档](https://docs.helicone.ai)。 #### 可选配置 -如果您发现Helicone的某些功能或模型未通过opencode自动配置,您始终可以自行配置。 +如果 Helicone 的某些功能或模型未通过 OpenCode 自动配置,你随时可以手动配置。 -Here's [Helicone's Model Directory](https://helicone.ai/models), you'll need this to grab the IDs of the models you want to add. +[Helicone 模型目录](https://helicone.ai/models)中可以找到你需要添加的模型 ID。 ```jsonc title="~/.config/opencode/opencode.jsonc" { @@ -979,9 +965,9 @@ Here's [Helicone's Model Directory](https://helicone.ai/models), you'll need thi } ``` -#### 自定义标头 +#### 自定义请求头 -Helicone 支持快速获取、用户跟踪和会话管理等功能的自定义标头。使用 `options.headers` 将它们添加到您提供的方案配置中: +Helicone 支持用于缓存、用户跟踪和会话管理等功能的自定义请求头。使用 `options.headers` 将它们添加到提供商配置中: ```jsonc title="~/.config/opencode/opencode.jsonc" { @@ -1004,13 +990,13 @@ Helicone 支持快速获取、用户跟踪和会话管理等功能的自定义� ##### 会话跟踪 -Helicone's [Sessions](https://docs.helicone.ai/features/sessions) feature lets you group related LLM requests together. Use the [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) plugin to automatically log each opencode conversation as a session in Helicone. +Helicone 的 [Sessions](https://docs.helicone.ai/features/sessions) 功能允许你将相关的 LLM 请求归为一组。使用 [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) 插件可以自动将每个 OpenCode 对话记录为 Helicone 中的一个会话。 ```bash npm install -g opencode-helicone-session ``` -将其添加到您的配置中。 +将其添加到配置中。 ```json title="opencode.json" { @@ -1018,24 +1004,24 @@ npm install -g opencode-helicone-session } ``` -该外挂将 `Helicone-Session-Id` 和 `Helicone-Session-Name` 标头注入您的请求中。在 Helicone 的会话页面中,您将看到每个 opencode 对话都是单独的会话。 +该插件会在你的请求中注入 `Helicone-Session-Id` 和 `Helicone-Session-Name` 请求头。在 Helicone 的 Sessions 页面中,你可以看到每个 OpenCode 对话都作为独立的会话列出。 -##### 常见螺旋接头 +##### 常用 Helicone 请求头 -| 标题 | 描述 | -| -------------------------- | ----------------------------------------------------- | -| `Helicone-Cache-Enabled` | Enable response caching (`true`/`false`) | -| `Helicone-User-Id` | 点击用户跟踪指标 | -| `Helicone-Property-[Name]` | 添加自定义属性(例如`Helicone-Property-Environment`) | -| `Helicone-Prompt-Id` | 将请求与提示版本相关联 | +| 请求头 | 描述 | +| -------------------------- | ------------------------------------------------------ | +| `Helicone-Cache-Enabled` | 启用响应缓存(`true`/`false`) | +| `Helicone-User-Id` | 按用户跟踪指标 | +| `Helicone-Property-[Name]` | 添加自定义属性(例如 `Helicone-Property-Environment`) | +| `Helicone-Prompt-Id` | 将请求与提示词版本关联 | -See the [Helicone Header Directory](https://docs.helicone.ai/helicone-headers/header-directory) for all available headers. +有关所有可用请求头,请参阅 [Helicone Header Directory](https://docs.helicone.ai/helicone-headers/header-directory)。 --- ### llama.cpp -You can configure opencode to use local models through [llama.cpp's](https://github.com/ggml-org/llama.cpp) llama-server utility +你可以通过 [llama.cpp](https://github.com/ggml-org/llama.cpp) 的 llama-server 工具配置 OpenCode 使用本地模型。 ```json title="opencode.json" "llama.cpp" {5, 6, 8, 10-15} { @@ -1061,29 +1047,29 @@ You can configure opencode to use local models through [llama.cpp's](https://git } ``` -在这个例子中: +在这个示例中: -- `llama.cpp` 是自定义创建 ID。这可以是您想要的任何字符串。 -- `npm` specifies the package to use for this provider. Here, `@ai-sdk/openai-compatible` is used for any OpenAI-compatible API. -- `name` 是 UI 中提供商的显示名称。 -- `options.baseURL` 是本地服务器器的端点。 -- `models` 是模型 ID 以及配置的对应映射。模型名称将显示在模型选择列表中。 +- `llama.cpp` 是自定义的提供商 ID,可以是任意字符串。 +- `npm` 指定该提供商使用的包。这里使用 `@ai-sdk/openai-compatible` 来兼容任何 OpenAI 兼容的 API。 +- `name` 是该提供商在 UI 中显示的名称。 +- `options.baseURL` 是本地服务器的端点地址。 +- `models` 是模型 ID 到其配置的映射。模型名称会显示在模型选择列表中。 --- ### IO.NET -IO.NET提供了17种针对各种例子进行优化的模型: +IO.NET 提供 17 个针对不同用例优化的模型: -1. Head over to the [IO.NET console](https://ai.io.net/), create an account, and generate an API key. +1. 前往 [IO.NET 控制台](https://ai.io.net/),创建账户并生成 API 密钥。 -2. 执行`/connect`命令并搜索**IO.NET**。 +2. 执行 `/connect` 命令并搜索 **IO.NET**。 ```txt /connect ``` -3. 输入您的 IO.NET API 密钥。 +3. 输入你的 IO.NET API 密钥。 ```txt ┌ API key @@ -1092,7 +1078,7 @@ IO.NET提供了17种针对各种例子进行优化的模型: └ enter ``` -4. 执行`/models`命令选择模型。 +4. 执行 `/models` 命令选择模型。 ```txt /models @@ -1102,7 +1088,7 @@ IO.NET提供了17种针对各种例子进行优化的模型: ### LM Studio -您可以通过使用本地模型来使用 LM Studio 配置opencode。 +你可以通过 LM Studio 配置 OpenCode 使用本地模型。 ```json title="opencode.json" "lmstudio" {5, 6, 8, 10-14} { @@ -1124,21 +1110,21 @@ IO.NET提供了17种针对各种例子进行优化的模型: } ``` -在这个例子中: +在这个示例中: -- `lmstudio` 是自定义创建 ID。这可以是您想要的任何字符串。 -- `npm` specifies the package to use for this provider. Here, `@ai-sdk/openai-compatible` is used for any OpenAI-compatible API. -- `name` 是 UI 中提供商的显示名称。 -- `options.baseURL` 是本地服务器器的端点。 -- `models` 是模型 ID 以及配置的对应映射。模型名称将显示在模型选择列表中。 +- `lmstudio` 是自定义的提供商 ID,可以是任意字符串。 +- `npm` 指定该提供商使用的包。这里使用 `@ai-sdk/openai-compatible` 来兼容任何 OpenAI 兼容的 API。 +- `name` 是该提供商在 UI 中显示的名称。 +- `options.baseURL` 是本地服务器的端点地址。 +- `models` 是模型 ID 到其配置的映射。模型名称会显示在模型选择列表中。 --- ### Moonshot AI -要使用 Moonshot AI 中的 Kimi K2: +要使用 Moonshot AI 的 Kimi K2: -1. Head over to the [Moonshot AI console](https://platform.moonshot.ai/console), create an account, and click **Create API key**. +1. 前往 [Moonshot AI 控制台](https://platform.moonshot.ai/console),创建账户并点击 **Create API key**。 2. 执行 `/connect` 命令并搜索 **Moonshot AI**。 @@ -1146,7 +1132,7 @@ IO.NET提供了17种针对各种例子进行优化的模型: /connect ``` -3. 输入您的 Moonshot API 密钥。 +3. 输入你的 Moonshot API 密钥。 ```txt ┌ API key @@ -1155,7 +1141,7 @@ IO.NET提供了17种针对各种例子进行优化的模型: └ enter ``` -4. 执行`/models`命令以选择*Kimi K2*。 +4. 执行 `/models` 命令选择 _Kimi K2_。 ```txt /models @@ -1165,7 +1151,7 @@ IO.NET提供了17种针对各种例子进行优化的模型: ### MiniMax -1. Head over to the [MiniMax API Console](https://platform.minimax.io/login), create an account, and generate an API key. +1. 前往 [MiniMax API 控制台](https://platform.minimax.io/login),创建账户并生成 API 密钥。 2. 执行 `/connect` 命令并搜索 **MiniMax**。 @@ -1173,7 +1159,7 @@ IO.NET提供了17种针对各种例子进行优化的模型: /connect ``` -3. 输入您的 MiniMax API 密钥。 +3. 输入你的 MiniMax API 密钥。 ```txt ┌ API key @@ -1182,7 +1168,7 @@ IO.NET提供了17种针对各种例子进行优化的模型: └ enter ``` -4. 执行`/models`命令选择*M2.1*等模型。 +4. 执行 `/models` 命令选择模型,例如 _M2.1_。 ```txt /models @@ -1192,15 +1178,15 @@ IO.NET提供了17种针对各种例子进行优化的模型: ### Nebius Token Factory -1. Head over to the [Nebius Token Factory console](https://tokenfactory.nebius.com/), create an account, and click **Add Key**. +1. 前往 [Nebius Token Factory 控制台](https://tokenfactory.nebius.com/),创建账户并点击 **Add Key**。 -2. 执行`/connect`命令并搜索**NebiusTokens工厂**。 +2. 执行 `/connect` 命令并搜索 **Nebius Token Factory**。 ```txt /connect ``` -3. 输入您的 Nebius Tokens工厂 API 密钥。 +3. 输入你的 Nebius Token Factory API 密钥。 ```txt ┌ API key @@ -1209,7 +1195,7 @@ IO.NET提供了17种针对各种例子进行优化的模型: └ enter ``` -4. 执行 `/models` 命令以选择类似 _Kimi K2 Instruct_ 的模型。 +4. 执行 `/models` 命令选择模型,例如 _Kimi K2 Instruct_。 ```txt /models @@ -1219,10 +1205,10 @@ IO.NET提供了17种针对各种例子进行优化的模型: ### Ollama -您可以使用 Ollama 配置 opencode 本地模型。 +你可以通过 Ollama 配置 OpenCode 使用本地模型。 :::tip -Ollama can automatically configure itself for opencode. See the [Ollama integration docs](https://docs.ollama.com/integrations/opencode) for details. +Ollama 可以自动为 OpenCode 进行配置。详见 [Ollama 集成文档](https://docs.ollama.com/integrations/opencode)。 ::: ```json title="opencode.json" "ollama" {5, 6, 8, 10-14} @@ -1245,29 +1231,29 @@ Ollama can automatically configure itself for opencode. See the [Ollama integrat } ``` -在这个例子中: +在这个示例中: -- `ollama` 是自定义创建 ID。这可以是您想要的任何字符串。 -- `npm` specifies the package to use for this provider. Here, `@ai-sdk/openai-compatible` is used for any OpenAI-compatible API. -- `name` 是 UI 中提供商的显示名称。 -- `options.baseURL` 是本地服务器器的端点。 -- `models` 是模型 ID 以及配置的对应映射。模型名称将显示在模型选择列表中。 +- `ollama` 是自定义的提供商 ID,可以是任意字符串。 +- `npm` 指定该提供商使用的包。这里使用 `@ai-sdk/openai-compatible` 来兼容任何 OpenAI 兼容的 API。 +- `name` 是该提供商在 UI 中显示的名称。 +- `options.baseURL` 是本地服务器的端点地址。 +- `models` 是模型 ID 到其配置的映射。模型名称会显示在模型选择列表中。 :::tip -如果工具暂停,请尝试增加 Ollama 中的 `num_ctx`。从 16k - 32k 左右开始。 +如果工具调用不工作,请尝试增大 Ollama 中的 `num_ctx` 值。建议从 16k - 32k 左右开始。 ::: --- ### Ollama Cloud -相当于 Ollama Cloud 与 opencode 一起使用: +要在 OpenCode 中使用 Ollama Cloud: -1. 前往 [https://ollama.com/](https://ollama.com/) 并登录或建立账户。 +1. 前往 [https://ollama.com/](https://ollama.com/) 登录或创建账户。 -2. 导航至**设置** > **API 密钥**,然后单击**添加API 密钥**以生成新的API 密钥。 +2. 导航到 **Settings** > **Keys**,点击 **Add API Key** 生成新的 API 密钥。 -3. 复制 API 密钥以在 opencode 中使用。 +3. 复制 API 密钥以便在 OpenCode 中使用。 4. 执行 `/connect` 命令并搜索 **Ollama Cloud**。 @@ -1275,7 +1261,7 @@ Ollama can automatically configure itself for opencode. See the [Ollama integrat /connect ``` -5. 输入您的 Ollama Cloud API 密钥。 +5. 输入你的 Ollama Cloud API 密钥。 ```txt ┌ API key @@ -1284,13 +1270,13 @@ Ollama can automatically configure itself for opencode. See the [Ollama integrat └ enter ``` -6. **重要**:在opencode中使用云模型之前,必须将模型信息拉取到本地: +6. **重要**:在 OpenCode 中使用云端模型之前,必须先将模型信息拉取到本地: ```bash ollama pull gpt-oss:20b-cloud ``` -7. 执行 `/models` 命令以选择您的 Ollama Cloud 模型。 +7. 执行 `/models` 命令选择你的 Ollama Cloud 模型。 ```txt /models @@ -1300,16 +1286,15 @@ Ollama can automatically configure itself for opencode. See the [Ollama integrat ### OpenAI -We recommend signing up for [ChatGPT Plus or Pro](https://chatgpt.com/pricing). +我们建议注册 [ChatGPT Plus 或 Pro](https://chatgpt.com/pricing)。 -1. 注册后,执行`/connect`命令并选择OpenAI。 +1. 注册完成后,执行 `/connect` 命令并选择 OpenAI。 ```txt /connect ``` -2. 您可以选择 **ChatGPT Plus 或 Pro** 选项,就会在这里开启您的浏览器 - 并要求您进行身份验证。 +2. 你可以选择 **ChatGPT Plus/Pro** 选项,浏览器会自动打开并要求你进行身份验证。 ```txt ┌ Select auth method @@ -1319,23 +1304,23 @@ We recommend signing up for [ChatGPT Plus or Pro](https://chatgpt.com/pricing). └ ``` -3. 现在,当您使用 `/models` 命令时,所有 OpenAI 模型都应该可用。 +3. 现在使用 `/models` 命令即可看到所有 OpenAI 模型。 ```txt /models ``` -##### 使用 API 键 +##### 使用 API 密钥 -如果您已安装 API 密钥,则可以选择 **手动输入 API 密钥** 将其贴到终端中。 +如果你已经有 API 密钥,可以选择 **Manually enter API Key** 并将其粘贴到终端中。 --- ### OpenCode Zen -OpenCode Zen 是 opencode 团队提供的经过测试和验证的模型列表。 [了解更多](/docs/zen)。 +OpenCode Zen 是由 OpenCode 团队提供的经过测试和验证的模型列表。[了解更多](/docs/zen)。 -1. 登录 **<a href={console}>OpenCode Zen</a>** 并单击 **创建 API 密钥**。 +1. 登录 **<a href={console}>OpenCode Zen</a>** 并点击 **Create API Key**。 2. 执行 `/connect` 命令并搜索 **OpenCode Zen**。 @@ -1343,7 +1328,7 @@ OpenCode Zen 是 opencode 团队提供的经过测试和验证的模型列表。 /connect ``` -3. 输入您的 opencode API 密钥。 +3. 输入你的 OpenCode API 密钥。 ```txt ┌ API key @@ -1352,7 +1337,7 @@ OpenCode Zen 是 opencode 团队提供的经过测试和验证的模型列表。 └ enter ``` -4. 执行`/models`命令选择*Qwen 3 Coder 480B*等模型。 +4. 执行 `/models` 命令选择模型,例如 _Qwen 3 Coder 480B_。 ```txt /models @@ -1362,15 +1347,15 @@ OpenCode Zen 是 opencode 团队提供的经过测试和验证的模型列表。 ### OpenRouter -1. Head over to the [OpenRouter dashboard](https://openrouter.ai/settings/keys), click **Create API Key**, and copy the key. +1. 前往 [OpenRouter 仪表盘](https://openrouter.ai/settings/keys),点击 **Create API Key** 并复制密钥。 -2. 执行`/connect`命令并搜索OpenRouter。 +2. 执行 `/connect` 命令并搜索 OpenRouter。 ```txt /connect ``` -3. 输入结构的API 密钥。 +3. 输入该提供商的 API 密钥。 ```txt ┌ API key @@ -1379,13 +1364,13 @@ OpenCode Zen 是 opencode 团队提供的经过测试和验证的模型列表。 └ enter ``` -4. 默认情况下预加载了多个OpenRouter模型,执行`/models`命令选择您想要的模型。 +4. 默认已预加载了许多 OpenRouter 模型,执行 `/models` 命令选择你想要的模型。 ```txt /models ``` - 您还可以通过opencode配置添加其他模型。 + 你也可以通过 OpenCode 配置添加更多模型。 ```json title="opencode.json" {6} { @@ -1400,7 +1385,7 @@ OpenCode Zen 是 opencode 团队提供的经过测试和验证的模型列表。 } ``` -5. 您还可以使用opencode配置自定义它们。这是指定的示例 +5. 你还可以通过 OpenCode 配置自定义模型。以下是指定提供商的示例: ```json title="opencode.json" { @@ -1426,21 +1411,21 @@ OpenCode Zen 是 opencode 团队提供的经过测试和验证的模型列表。 ### SAP AI Core -SAP AI Core跨统一平台提供对OpenAI、Anthropic、Google、Amazon、Meta、Mistral和AI21的40多个模型的访问。 +SAP AI Core 通过统一平台提供对来自 OpenAI、Anthropic、Google、Amazon、Meta、Mistral 和 AI21 的 40+ 模型的访问。 -1. Go to your [SAP BTP Cockpit](https://account.hana.ondemand.com/), navigate to your SAP AI Core service instance, and create a service key. +1. 前往 [SAP BTP Cockpit](https://account.hana.ondemand.com/),导航到你的 SAP AI Core 服务实例,并创建服务密钥。 - :::提示 - The service key is a JSON object containing `clientid`, `clientsecret`, `url`, and `serviceurls.AI_API_URL`. You can find your AI Core instance under **Services** > **Instances and Subscriptions** in the BTP Cockpit. + :::tip + 服务密钥是一个包含 `clientid`、`clientsecret`、`url` 和 `serviceurls.AI_API_URL` 的 JSON 对象。你可以在 BTP Cockpit 的 **Services** > **Instances and Subscriptions** 下找到你的 AI Core 实例。 ::: -2. 执行`/connect`命令并搜索**SAP AI Core**。 +2. 执行 `/connect` 命令并搜索 **SAP AI Core**。 ```txt /connect ``` -3. 输入您的服务金号JSON。 +3. 输入你的服务密钥 JSON。 ```txt ┌ Service key @@ -1449,29 +1434,62 @@ SAP AI Core跨统一平台提供对OpenAI、Anthropic、Google、Amazon、Meta� └ enter ``` - 或者设置`AICORE_SERVICE_KEY`环境变量: + 或者设置 `AICORE_SERVICE_KEY` 环境变量: ```bash AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode ``` - 或者将其添加内容添加到您的 bash 配置文件中: + 或者添加到你的 bash 配置文件中: ```bash title="~/.bash_profile" export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' ``` -4. (可选)设置部署ID和资源组: +4. 可选:设置部署 ID 和资源组: ```bash AICORE_DEPLOYMENT_ID=your-deployment-id AICORE_RESOURCE_GROUP=your-resource-group opencode ``` - :::笔记 - 这些设置是可选的,应根据 SAP AI Core 设置进行配置。 + :::note + 这些设置是可选的,应根据你的 SAP AI Core 配置进行设置。 + ::: + +5. 执行 `/models` 命令从 40+ 个可用模型中进行选择。 + + ```txt + /models + ``` + +--- + +### STACKIT + +STACKIT AI Model Serving 提供完全托管的主权托管环境,专注于 Llama、Mistral 和 Qwen 等大语言模型,在欧洲基础设施上实现最大程度的数据主权。 + +1. 前往 [STACKIT Portal](https://portal.stackit.cloud),导航到 **AI Model Serving**,为你的项目创建认证令牌。 + + :::tip + 你需要先拥有 STACKIT 客户账户、用户账户和项目,才能创建认证令牌。 ::: -5. 执行 `/models` 命令从 40 个多个可用模型中进行选择。 +2. 执行 `/connect` 命令并搜索 **STACKIT**。 + + ```txt + /connect + ``` + +3. 输入你的 STACKIT AI Model Serving 认证令牌。 + + ```txt + ┌ API key + │ + │ + └ enter + ``` + +4. 执行 `/models` 命令选择模型,例如 _Qwen3-VL 235B_ 或 _Llama 3.3 70B_。 ```txt /models @@ -1481,15 +1499,15 @@ SAP AI Core跨统一平台提供对OpenAI、Anthropic、Google、Amazon、Meta� ### OVHcloud AI Endpoints -1. Head over to the [OVHcloud panel](https://ovh.com/manager). Navigate to the `Public Cloud` section, `AI & Machine Learning` > `AI Endpoints` and in `API Keys` tab, click **Create a new API key**. +1. 前往 [OVHcloud 管理面板](https://ovh.com/manager)。导航到 `Public Cloud` 部分,`AI & Machine Learning` > `AI Endpoints`,在 `API Keys` 标签页中点击 **Create a new API key**。 -2. 执行 `/connect` 命令并搜索 **OVHcloud AI 端点**。 +2. 执行 `/connect` 命令并搜索 **OVHcloud AI Endpoints**。 ```txt /connect ``` -3. 输入您的 OVHcloud AI 端点 API 密钥。 +3. 输入你的 OVHcloud AI Endpoints API 密钥。 ```txt ┌ API key @@ -1498,7 +1516,7 @@ SAP AI Core跨统一平台提供对OpenAI、Anthropic、Google、Amazon、Meta� └ enter ``` -4. 执行`/models`命令选择*gpt-oss-120b*等模型。 +4. 执行 `/models` 命令选择模型,例如 _gpt-oss-120b_。 ```txt /models @@ -1508,9 +1526,9 @@ SAP AI Core跨统一平台提供对OpenAI、Anthropic、Google、Amazon、Meta� ### Scaleway -To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-apis/) with Opencode: +要在 OpenCode 中使用 [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-apis/): -1. Head over to the [Scaleway Console IAM settings](https://console.scaleway.com/iam/api-keys) to generate a new API key. +1. 前往 [Scaleway Console IAM 设置](https://console.scaleway.com/iam/api-keys)生成新的 API 密钥。 2. 执行 `/connect` 命令并搜索 **Scaleway**。 @@ -1518,7 +1536,7 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap /connect ``` -3. 输入您的Scaleway API 密钥。 +3. 输入你的 Scaleway API 密钥。 ```txt ┌ API key @@ -1527,7 +1545,7 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap └ enter ``` -4. 执行 `/models` 命令选择 _devstral-2-123b-instruct-2512_ 或 _gpt-oss-120b_ 等模型。 +4. 执行 `/models` 命令选择模型,例如 _devstral-2-123b-instruct-2512_ 或 _gpt-oss-120b_。 ```txt /models @@ -1537,7 +1555,7 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap ### Together AI -1. Head over to the [Together AI console](https://api.together.ai), create an account, and click **Add Key**. +1. 前往 [Together AI 控制台](https://api.together.ai),创建账户并点击 **Add Key**。 2. 执行 `/connect` 命令并搜索 **Together AI**。 @@ -1545,7 +1563,7 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap /connect ``` -3. 输入您的Together AI API 密钥。 +3. 输入你的 Together AI API 密钥。 ```txt ┌ API key @@ -1554,7 +1572,7 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap └ enter ``` -4. 执行 `/models` 命令以选择类似 _Kimi K2 Instruct_ 的模型。 +4. 执行 `/models` 命令选择模型,例如 _Kimi K2 Instruct_。 ```txt /models @@ -1564,7 +1582,7 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap ### Venice AI -1. Head over to the [Venice AI console](https://venice.ai), create an account, and generate an API key. +1. 前往 [Venice AI 控制台](https://venice.ai),创建账户并生成 API 密钥。 2. 执行 `/connect` 命令并搜索 **Venice AI**。 @@ -1572,7 +1590,7 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap /connect ``` -3. 输入您的威尼斯 AI API 密钥。 +3. 输入你的 Venice AI API 密钥。 ```txt ┌ API key @@ -1581,7 +1599,7 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap └ enter ``` -4. 执行`/models`命令选择*Llama 3.3 70B*等模型。 +4. 执行 `/models` 命令选择模型,例如 _Llama 3.3 70B_。 ```txt /models @@ -1591,9 +1609,9 @@ To use [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-ap ### Vercel AI Gateway -Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、Google、xAI 等的模型。模型按标价提供,不加价。 +Vercel AI Gateway 允许你通过统一端点访问来自 OpenAI、Anthropic、Google、xAI 等提供商的模型。模型按原价提供,不额外加价。 -1. Head over to the [Vercel dashboard](https://vercel.com/), navigate to the **AI Gateway** tab, and click **API keys** to create a new API key. +1. 前往 [Vercel 仪表盘](https://vercel.com/),导航到 **AI Gateway** 标签页,点击 **API keys** 创建新的 API 密钥。 2. 执行 `/connect` 命令并搜索 **Vercel AI Gateway**。 @@ -1601,7 +1619,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G /connect ``` -3. 输入您的 Vercel AI 网关 API 密钥。 +3. 输入你的 Vercel AI Gateway API 密钥。 ```txt ┌ API key @@ -1610,13 +1628,13 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G └ enter ``` -4. 执行`/models`命令选择模型。 +4. 执行 `/models` 命令选择模型。 ```txt /models ``` -您还可以穿透 opencode 配置自定义模型。以下是指定提供商路由顺序的示例。 +你也可以通过 OpenCode 配置自定义模型。以下是指定提供商路由顺序的示例。 ```json title="opencode.json" { @@ -1635,19 +1653,19 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G } ``` -一些有用的路由选项: +一些常用的路由选项: -| 选项 | 描述 | -| ------------------- | ---------------------- | -| `order` | 提供商尝试顺序 | -| `only` | 限制特定提供商 | -| `zeroDataRetention` | 仅使用零资料保留的政策 | +| 选项 | 描述 | +| ------------------- | -------------------------------- | +| `order` | 提供商尝试顺序 | +| `only` | 限制为特定提供商 | +| `zeroDataRetention` | 仅使用具有零数据留存策略的提供商 | --- ### xAI -1. Head over to the [xAI console](https://console.x.ai/), create an account, and generate an API key. +1. 前往 [xAI 控制台](https://console.x.ai/),创建账户并生成 API 密钥。 2. 执行 `/connect` 命令并搜索 **xAI**。 @@ -1655,7 +1673,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G /connect ``` -3. 输入您的 xAI API 密钥。 +3. 输入你的 xAI API 密钥。 ```txt ┌ API key @@ -1664,7 +1682,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G └ enter ``` -4. 执行 `/models` 命令来选择类似 _Grok Beta_ 的模型。 +4. 执行 `/models` 命令选择模型,例如 _Grok Beta_。 ```txt /models @@ -1674,7 +1692,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G ### Z.AI -1. Head over to the [Z.AI API console](https://z.ai/manage-apikey/apikey-list), create an account, and click **Create a new API key**. +1. 前往 [Z.AI API 控制台](https://z.ai/manage-apikey/apikey-list),创建账户并点击 **Create a new API key**。 2. 执行 `/connect` 命令并搜索 **Z.AI**。 @@ -1682,9 +1700,9 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G /connect ``` - 如果您订阅了**GLM编码计划**,请选择**Z.AI编码计划**。 + 如果你订阅了 **GLM Coding Plan**,请选择 **Z.AI Coding Plan**。 -3. 输入您的 Z.AI API 密钥。 +3. 输入你的 Z.AI API 密钥。 ```txt ┌ API key @@ -1693,7 +1711,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G └ enter ``` -4. 执行`/models`命令选择*GLM-4.7*等模型。 +4. 执行 `/models` 命令选择模型,例如 _GLM-4.7_。 ```txt /models @@ -1703,7 +1721,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G ### ZenMux -1. Head over to the [ZenMux dashboard](https://zenmux.ai/settings/keys), click **Create API Key**, and copy the key. +1. 前往 [ZenMux 仪表盘](https://zenmux.ai/settings/keys),点击 **Create API Key** 并复制密钥。 2. 执行 `/connect` 命令并搜索 ZenMux。 @@ -1711,7 +1729,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G /connect ``` -3. 输入结构的API 密钥。 +3. 输入该提供商的 API 密钥。 ```txt ┌ API key @@ -1720,13 +1738,13 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G └ enter ``` -4. 默认情况下预加载了多个 ZenMux 模型,执行 `/models` 命令选择您想要的模型。 +4. 默认已预加载了许多 ZenMux 模型,执行 `/models` 命令选择你想要的模型。 ```txt /models ``` - 您还可以通过opencode配置添加其他模型。 + 你也可以通过 OpenCode 配置添加更多模型。 ```json title="opencode.json" {6} { @@ -1748,10 +1766,10 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G 要添加 `/connect` 命令中未列出的任何 **OpenAI 兼容**提供商: :::tip -您可以将任何 OpenAI 兼容的提供商与 opencode 一起使用。大多数 AI 提供商都提供 OpenAI 兼容 API。 +你可以在 OpenCode 中使用任何 OpenAI 兼容的提供商。大多数现代 AI 提供商都提供 OpenAI 兼容的 API。 ::: -1. 执行`/connect`命令并逐步升级到**其他**。 +1. 执行 `/connect` 命令,向下滚动到 **Other**。 ```bash $ /connect @@ -1764,7 +1782,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G └ ``` -2. 输入企业的唯一ID。 +2. 输入该提供商的唯一 ID。 ```bash $ /connect @@ -1776,11 +1794,11 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G └ ``` - :::笔记 - 选择一个容易记住的 ID,您将在配置文件中使用它。 + :::note + 请选择一个容易记住的 ID,你将在配置文件中使用它。 ::: -3. 输入您的事业的 API 密钥。 +3. 输入该提供商的 API 密钥。 ```bash $ /connect @@ -1794,7 +1812,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G └ ``` -4. Create or update your `opencode.json` file in your project directory: +4. 在项目目录中创建或更新 `opencode.json` 文件: ```json title="opencode.json" ""myprovider"" {5-15} { @@ -1816,21 +1834,21 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G } ``` - 以下是配置选项: - - **npm**:要使用AI的SDK包,`@ai-sdk/openai-compatible`用于OpenAI兼容的事业 - - **名称**:UI中的显示名称。 - - **模型**:可用模型。 + 以下是配置选项说明: + - **npm**:要使用的 AI SDK 包,对于 OpenAI 兼容的提供商使用 `@ai-sdk/openai-compatible` + - **name**:在 UI 中显示的名称。 + - **models**:可用模型。 - **options.baseURL**:API 端点 URL。 - - **options.apiKey**:如果不使用身份验证,可以选择设置API 密钥。 - - **options.headers**:可选择设置自定义标头。 + - **options.apiKey**:可选,如果不使用 auth 认证,可直接设置 API 密钥。 + - **options.headers**:可选,设置自定义请求头。 - 有关高阶选项的更多资讯,请参见下面的示例。 + 更多高级选项请参见下面的示例。 -5. 执行 `/models` 命令,您提供的自定义程序和模型将出现在选择列表中。 +5. 执行 `/models` 命令,你自定义的提供商和模型将出现在选择列表中。 --- -##### 例子 +##### 示例 以下是设置 `apiKey`、`headers` 和模型 `limit` 选项的示例。 @@ -1864,25 +1882,24 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G 配置详情: -- **apiKey**:使用`env`变数语法[了解更多](/docs/config#env-vars)设置。 -- ** headers **:随每个请求传送的自定义标头。 -- **limit.context**:模型接受的最大输入标记。 -- **limit.output**:模型可以生成的最大Tokens。 +- **apiKey**:使用 `env` 变量语法设置,[了解更多](/docs/config#env-vars)。 +- **headers**:随每个请求发送的自定义请求头。 +- **limit.context**:模型接受的最大输入 Token 数。 +- **limit.output**:模型可生成的最大 Token 数。 -`limit` 栏位允许 opencode 了解您还剩下多少上下文。标准提供商会自动从 models.dev 中提取这些内容。 +`limit` 字段让 OpenCode 了解你还剩余多少上下文空间。标准提供商会自动从 models.dev 拉取这些信息。 --- ## 故障排除 -如果您在配置提供商时遇到问题,请检查以下内容: +如果你在配置提供商时遇到问题,请检查以下几点: -1. **Check the auth setup**: Run `opencode auth list` to see if the credentials - 提供商的配置已添加到您的配置中。 +1. **检查认证设置**:运行 `opencode auth list` 查看该提供商的凭据是否已添加到配置中。 - 这并不利于 Amazon Bedrock 等依赖环境变数进行身份验证的工作。 + 这不适用于 Amazon Bedrock 等依赖环境变量进行认证的提供商。 -2. 对于自定义提供的程序,请检查 opencode 配置并: - - 确保 `/connect` 命令中使用的提供商 ID 与 opencode 配置中的 ID 匹配。 - - 正确的 npm 包用于提供商。例如,对 Cerebras 使用 `@ai-sdk/cerebras`。对于所有其他 OpenAI 相内容的提供商,请使用 `@ai-sdk/openai-compatible`。 - - 检查 `options.baseURL` 栏位中使用的 API 端点是否正确。 +2. 对于自定义提供商,请检查 OpenCode 配置并确认: + - `/connect` 命令中使用的提供商 ID 与 OpenCode 配置中的 ID 一致。 + - 使用了正确的 npm 包。例如,Cerebras 应使用 `@ai-sdk/cerebras`。对于其他所有 OpenAI 兼容的提供商,使用 `@ai-sdk/openai-compatible`。 + - `options.baseURL` 字段中的 API 端点地址正确。 diff --git a/packages/web/src/content/docs/zh-cn/rules.mdx b/packages/web/src/content/docs/zh-cn/rules.mdx index 0ad73b33f..9ce5c53de 100644 --- a/packages/web/src/content/docs/zh-cn/rules.mdx +++ b/packages/web/src/content/docs/zh-cn/rules.mdx @@ -1,29 +1,29 @@ --- title: 规则 -description: 设置opencode的自定义指令。 +description: 为 opencode 设置自定义指令。 --- -您可以通过 `AGENTS.md` 文件创建 opencode 的自定义指令。这和 Cursor 的规则类似。它包含将包含在 LLM 上下文中的说明,方便您的特定项目自定义其行为。 +您可以通过创建 `AGENTS.md` 文件来为 opencode 提供自定义指令。这类似于 Cursor 的规则功能。该文件包含的指令会被纳入 LLM 的上下文中,以便针对您的特定项目自定义其行为。 --- ## 初始化 -要创建新的`AGENTS.md`文件,您可以在opencode中运行`/init`命令。 +要创建新的 `AGENTS.md` 文件,您可以在 opencode 中运行 `/init` 命令。 :::tip 您应该将项目的 `AGENTS.md` 文件提交到 Git。 ::: -这将扫描您的项目及其所有内容,以了解该项目的内容并生成一个 `AGENTS.md` 文件。这有助于更好地打开代码导航项目。 +该命令会扫描您的项目及其所有内容,了解项目的用途,并据此生成一个 `AGENTS.md` 文件。这有助于 opencode 更好地导航您的项目。 -如果您已有现有的 `AGENTS.md` 文件,将尝试添加到其中。 +如果您已有 `AGENTS.md` 文件,该命令会尝试在其基础上进行补充。 --- -## 例子 +## 示例 -您也可以手动创建此文件。以下是您可以导入 `AGENTS.md` 文件中的一些内容的示例。 +您也可以手动创建此文件。以下是一些可以放入 `AGENTS.md` 文件中的内容示例。 ```markdown title="AGENTS.md" # SST v3 Monorepo Project @@ -48,33 +48,33 @@ This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for - Import shared modules using workspace names: `@my-app/core/example` ``` -我们在此处添加特定于项目的说明,这将在您的团队中共享。 +我们在这里添加了项目特定的指令,这些指令会在您的团队中共享。 --- ## 类型 -opencode 还支持从多个位置读取 `AGENTS.md` 文件。这有不同的目的。 +opencode 还支持从多个位置读取 `AGENTS.md` 文件,不同的位置有不同的用途。 -### 项目 +### 项目级 -将 `AGENTS.md` 放置在项目根目录中以获取特定于项目的规则。这些仅适用于您在此目录或子目录中工作时。 +在项目根目录放置一个 `AGENTS.md` 文件,用于定义项目特定的规则。这些规则仅在您在该目录或其子目录中工作时生效。 -### 全局 +### 全局级 -您还可以在 `~/.config/opencode/AGENTS.md` 文件中包含全局规则。这适用于所有opencode会话。 +您还可以在 `~/.config/opencode/AGENTS.md` 文件中设置全局规则。这些规则会应用于所有 opencode 会话。 -由于此未提交给 Git 或与您的团队共享,因此我们建议使用它来指定 LLM 应遵循的任何个人规则。 +由于该文件不会被提交到 Git 或与团队共享,我们建议用它来指定 LLM 应遵循的个人规则。 -### 克劳德代码兼容性 +### Claude Code 兼容性 -Error 500 (Server Error)!!1500.That’s an error.There was an error. Please try again later.That’s all we know. +对于从 Claude Code 迁移过来的用户,OpenCode 支持 Claude Code 的文件约定作为回退方案: -- **项目规则**:项目目录中的`CLAUDE.md`(如果`AGENTS.md`不存在则使用) -- **全局规则**:`~/.claude/CLAUDE.md`(如果不存在`~/.config/opencode/AGENTS.md`则使用) -- **技能**:`~/.claude/skills/` — 详情请参见[代理技巧](/docs/skills/) +- **项目规则**:项目目录中的 `CLAUDE.md`(在没有 `AGENTS.md` 的情况下使用) +- **全局规则**:`~/.claude/CLAUDE.md`(在没有 `~/.config/opencode/AGENTS.md` 的情况下使用) +- **技能**:`~/.claude/skills/` — 详情请参阅[代理技能](/docs/skills/) -要取消Claude Code兼容性,请设置以下环境变量之一: +要禁用 Claude Code 兼容性,请设置以下环境变量之一: ```bash export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support @@ -86,21 +86,21 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills ## 优先级 -当opencode启动时,它会按以下顺序查找规则文件: +当 opencode 启动时,它会按以下顺序查找规则文件: -1. **本地文件**,从当前目录向上浏览(`AGENTS.md`,`CLAUDE.md`) -2. **全局文件** `~/.config/opencode/AGENTS.md` -3. **克劳德代码文件**位于`~/.claude/CLAUDE.md`(禁用禁用) +1. **本地文件**,从当前目录向上遍历(`AGENTS.md`、`CLAUDE.md`) +2. **全局文件**,位于 `~/.config/opencode/AGENTS.md` +3. **Claude Code 文件**,位于 `~/.claude/CLAUDE.md`(除非已禁用) -第一个匹配的文件每个在类别中触发。例如,如果您同时拥有`AGENTS.md`和`CLAUDE.md`,则仅使用`AGENTS.md`。同样,`~/.config/opencode/AGENTS.md`优先于`~/.claude/CLAUDE.md`。 +在每个类别中,第一个匹配的文件优先。例如,如果您同时拥有 `AGENTS.md` 和 `CLAUDE.md`,则只会使用 `AGENTS.md`。同样,`~/.config/opencode/AGENTS.md` 优先于 `~/.claude/CLAUDE.md`。 --- ## 自定义指令 -您可以在 `opencode.json` 或全局 `~/.config/opencode/opencode.json` 中指定自定义指令文件。这允许您和您的团队重用现有规则,而不必将它们复制到 AGENTS.md。 +您可以在 `opencode.json` 或全局配置文件 `~/.config/opencode/opencode.json` 中指定自定义指令文件。这允许您和团队复用现有规则,而无需将它们复制到 AGENTS.md 中。 -例子: +示例: ```json title="opencode.json" { @@ -109,7 +109,7 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills } ``` -您还可以使用远程URL从Web加载说明。 +您还可以使用远程 URL 从网络加载指令。 ```json title="opencode.json" { @@ -118,19 +118,19 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills } ``` -远程指令的获取有 5 秒的超时时间。 +远程指令的获取超时时间为 5 秒。 -所有说明文件均与您的`AGENTS.md`文件合并。 +所有指令文件都会与您的 `AGENTS.md` 文件合并。 --- ## 引用外部文件 -虽然opencode不会自动解析`AGENTS.md`中的文件引用,但您可以通过两种方式实现类似的功能: +虽然 opencode 不会自动解析 `AGENTS.md` 中的文件引用,但您可以通过以下两种方式实现类似的功能: ### 使用 opencode.json -推荐的方法是在`instructions`中使用`opencode.json`字段: +推荐的方式是使用 `opencode.json` 中的 `instructions` 字段: ```json title="opencode.json" { @@ -139,9 +139,9 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills } ``` -### AGENTS.md 中的手册说明 +### 在 AGENTS.md 中手动指定 -您可以通过在 `AGENTS.md` 中明确提供的指令来教 opencode 读取外部文件。这是一个实际的示例: +您可以在 `AGENTS.md` 中提供明确的指令,教 opencode 读取外部文件。以下是一个实际示例: ```markdown title="AGENTS.md" # TypeScript Project Rules @@ -168,13 +168,13 @@ For testing strategies and coverage requirements: @test/testing-guidelines.md Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md. ``` -这种方法允许您: +这种方式允许您: -- 创建模块化、可重用的规则文件 -- 通过符号链接或git子模块在项目之间共享规则 -- 保持 AGENTS.md 简洁,同时参考详细指南 -- 确保opencode仅在特定任务需要时加载文件 +- 创建模块化、可复用的规则文件 +- 通过符号链接或 Git 子模块在项目之间共享规则 +- 保持 AGENTS.md 简洁,同时引用详细的指南 +- 确保 opencode 仅在特定任务需要时才加载文件 :::tip -对于 monorepos 或具有共享标准的项目,使用 `opencode.json` 和 glob 模式(如 `packages/*/AGENTS.md`)比手动指令更易于维护。 +对于 monorepo 或具有共享标准的项目,使用 `opencode.json` 配合 glob 模式(如 `packages/*/AGENTS.md`)比手动指定指令更易于维护。 ::: diff --git a/packages/web/src/content/docs/zh-cn/sdk.mdx b/packages/web/src/content/docs/zh-cn/sdk.mdx index 4b6929b62..121e423d1 100644 --- a/packages/web/src/content/docs/zh-cn/sdk.mdx +++ b/packages/web/src/content/docs/zh-cn/sdk.mdx @@ -1,21 +1,21 @@ --- title: SDK -description: opencode 服务器的类型不同于安全 JS 客户端。 +description: opencode 服务器的类型安全 JS 客户端。 --- import config from "../../../../config.mjs" export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts` -opencode JS/TS SDK 提供类型其他安全的客户端用于与服务器交互。 -使用它以程序设计方式构建集成和控制opencode。 +opencode JS/TS SDK 提供了一个类型安全的客户端,用于与服务器进行交互。 +你可以用它来构建集成方案,并以编程方式控制 opencode。 -[了解更多关于服务器如何工作的](/docs/server)。例如,查看社区构建的[projects](/docs/ecosystem#projects)。 +[了解更多](/docs/server)关于服务器的工作原理。如需示例,请查看社区构建的[项目](/docs/ecosystem#projects)。 --- ## 安装 -从npm安装SDK: +从 npm 安装 SDK: ```bash npm install @opencode-ai/sdk @@ -25,7 +25,7 @@ npm install @opencode-ai/sdk ## 创建客户端 -创建opencode的示例项: +创建一个 opencode 实例: ```javascript import { createOpencode } from "@opencode-ai/sdk" @@ -33,23 +33,23 @@ import { createOpencode } from "@opencode-ai/sdk" const { client } = await createOpencode() ``` -这会同时启动服务器和客户端 +这会同时启动服务器和客户端。 #### 选项 -| 选项 | 型别 | 描述 | 默认 | -| ---------- | ------------- | ------------------------------ | ----------- | -| `hostname` | `string` | 服务器主机名 | `127.0.0.1` | -| `port` | `number` | 服务器埠 | `4096` | -| `signal` | `AbortSignal` | 取消的中止讯号 | `undefined` | -| `timeout` | `number` | 服务器启动超时(以毫秒为单位) | `5000` | -| `config` | `Config` | 放置的财产 | `{}` | +| 选项 | 类型 | 描述 | 默认值 | +| ---------- | ------------- | -------------------------- | ----------- | +| `hostname` | `string` | 服务器主机名 | `127.0.0.1` | +| `port` | `number` | 服务器端口 | `4096` | +| `signal` | `AbortSignal` | 用于取消操作的中止信号 | `undefined` | +| `timeout` | `number` | 服务器启动超时时间(毫秒) | `5000` | +| `config` | `Config` | 配置对象 | `{}` | --- ## 配置 -You can pass a configuration object to customize behavior. The instance still picks up your `opencode.json`, but you can override or add configuration inline: +你可以传入一个配置对象来自定义行为。实例仍然会读取你的 `opencode.json`,但你可以通过内联方式覆盖或添加配置: ```javascript import { createOpencode } from "@opencode-ai/sdk" @@ -67,9 +67,9 @@ console.log(`Server running at ${opencode.server.url}`) opencode.server.close() ``` -## 仅限客户端 +## 仅客户端模式 -如果您已经有 opencode 的正在执行示例项,则可以创建一个客户端示例项来连线到它: +如果你已经有一个正在运行的 opencode 实例,可以创建一个客户端实例来连接它: ```javascript import { createOpencodeClient } from "@opencode-ai/sdk" @@ -81,31 +81,31 @@ const client = createOpencodeClient({ #### 选项 -| 选项 | 型别 | 描述 | 默认 | +| 选项 | 类型 | 描述 | 默认值 | | --------------- | ---------- | ---------------------------- | ----------------------- | -| `baseUrl` | `string` | 服务器的 URL | `http://localhost:4096` | -| `fetch` | `function` | 习俗获取实现 | `globalThis.fetch` | -| `parseAs` | `string` | 响应解析方法 | `auto` | -| `responseStyle` | `string` | 返回样式:`data` 或 `fields` | `fields` | -| `throwOnError` | `boolean` | 掷骰错误而不是返回 | `false` | +| `baseUrl` | `string` | 服务器 URL | `http://localhost:4096` | +| `fetch` | `function` | 自定义 fetch 实现 | `globalThis.fetch` | +| `parseAs` | `string` | 响应解析方式 | `auto` | +| `responseStyle` | `string` | 返回风格:`data` 或 `fields` | `fields` | +| `throwOnError` | `boolean` | 抛出错误而非返回错误 | `false` | --- ## 类型 -SDK 包括所有 API 型以外的 TypeScript 定义。直接汇入其中: +SDK 包含所有 API 类型的 TypeScript 定义。你可以直接导入它们: ```typescript import type { Session, Message, Part } from "@opencode-ai/sdk" ``` -所有型别均根据服务器的 OpenAPI 规范生成,并可在 <a href={typesUrl}> 型别文件 </a> 中找到。 +所有类型均根据服务器的 OpenAPI 规范生成,可在<a href={typesUrl}>类型文件</a>中查看。 --- -## 错误 +## 错误处理 -SDK 可能会丢掷错误,您可以捕获并处理这些错误: +SDK 可能会抛出错误,你可以捕获并处理这些错误: ```typescript try { @@ -117,17 +117,89 @@ try { --- +## 结构化输出 + +你可以通过指定带有 JSON Schema 的 `format` 来请求模型返回结构化的 JSON 输出。模型会使用 `StructuredOutput` 工具返回符合你 Schema 的经过验证的 JSON。 + +### 基本用法 + +```typescript +const result = await client.session.prompt({ + path: { id: sessionId }, + body: { + parts: [{ type: "text", text: "Research Anthropic and provide company info" }], + format: { + type: "json_schema", + schema: { + type: "object", + properties: { + company: { type: "string", description: "Company name" }, + founded: { type: "number", description: "Year founded" }, + products: { + type: "array", + items: { type: "string" }, + description: "Main products", + }, + }, + required: ["company", "founded"], + }, + }, + }, +}) + +// Access the structured output +console.log(result.data.info.structured_output) +// { company: "Anthropic", founded: 2021, products: ["Claude", "Claude API"] } +``` + +### 输出格式类型 + +| 类型 | 描述 | +| ------------- | --------------------------------------- | +| `text` | 默认值。标准文本响应(无结构化输出) | +| `json_schema` | 返回符合所提供 Schema 的经过验证的 JSON | + +### JSON Schema 格式 + +使用 `type: 'json_schema'` 时,需提供以下字段: + +| 字段 | 类型 | 描述 | +| ------------ | --------------- | ------------------------------------- | +| `type` | `'json_schema'` | 必填。指定 JSON Schema 模式 | +| `schema` | `object` | 必填。定义输出结构的 JSON Schema 对象 | +| `retryCount` | `number` | 可选。验证重试次数(默认值:2) | + +### 错误处理 + +如果模型在所有重试后仍无法生成有效的结构化输出,响应中会包含 `StructuredOutputError`: + +```typescript +if (result.data.info.error?.name === "StructuredOutputError") { + console.error("Failed to produce structured output:", result.data.info.error.message) + console.error("Attempts:", result.data.info.error.retries) +} +``` + +### 最佳实践 + +1. **在 Schema 属性中提供清晰的描述**,帮助模型理解需要提取的数据 +2. **使用 `required`** 指定哪些字段必须存在 +3. **保持 Schema 简洁** — 复杂的嵌套 Schema 可能会让模型更难正确填充 +4. **设置合适的 `retryCount`** — 对于复杂 Schema 可增加重试次数,对于简单 Schema 可减少 + +--- + ## API -SDK跨越型别安全客户端公开所有服务器API。 +SDK 通过类型安全的客户端暴露所有服务器 API。 --- -### 全局 +### Global -| 方法 | 描述 | 回应 | +| 方法 | 描述 | 响应 | | ----------------- | ------------------------ | ------------------------------------ | -| `global.health()` | 检查服务器健康状况和版本 | `{ healthy: true, version: string }` | +| `global.health()` | 检查服务器健康状态和版本 | `{ healthy: true, version: string }` | --- @@ -140,12 +212,12 @@ console.log(health.data.version) --- -### 应用程序 +### App -| 方法 | 描述 | 回应 | -| -------------- | ------------------ | ------------------------------------------ | -| `app.log()` | 登录日志 | `boolean` | -| `app.agents()` | 列出所有可用的代理 | <a href={typesUrl}><code>代理[]</code></a> | +| 方法 | 描述 | 响应 | +| -------------- | ------------------ | ------------------------------------------- | +| `app.log()` | 写入一条日志 | `boolean` | +| `app.agents()` | 列出所有可用的代理 | <a href={typesUrl}><code>Agent[]</code></a> | --- @@ -167,12 +239,12 @@ const agents = await client.app.agents() --- -### 项目 +### Project -| 方法 | 描述 | 回应 | -| ------------------- | ------------ | ------------------------------------------ | -| `project.list()` | 列出所有专案 | <a href={typesUrl}><code>专案[]</code></a> | -| `project.current()` | 获取当前专案 | <a href={typesUrl}><code>专案</code></a> | +| 方法 | 描述 | 响应 | +| ------------------- | ------------ | --------------------------------------------- | +| `project.list()` | 列出所有项目 | <a href={typesUrl}><code>Project[]</code></a> | +| `project.current()` | 获取当前项目 | <a href={typesUrl}><code>Project</code></a> | --- @@ -188,11 +260,11 @@ const currentProject = await client.project.current() --- -### 路径 +### Path -| 方法 | 描述 | 回应 | +| 方法 | 描述 | 响应 | | ------------ | ------------ | ---------------------------------------- | -| `path.get()` | 获取当前路径 | <a href={typesUrl}><code>路径</code></a> | +| `path.get()` | 获取当前路径 | <a href={typesUrl}><code>Path</code></a> | --- @@ -205,12 +277,12 @@ const pathInfo = await client.path.get() --- -### 配置 +### Config -| 方法 | 描述 | 回应 | -| -------------------- | -------------------- | --------------------------------------------------------------------------------------------------- | -| `config.get()` | 获取配置资讯 | <a href={typesUrl}><code>配置</code></a> | -| `config.providers()` | 列出提供商和默认模型 | `{ providers: `<a href={typesUrl}><code>提供商[]</code></a>`, default: { [key: string]: string } }` | +| 方法 | 描述 | 响应 | +| -------------------- | -------------------- | ----------------------------------------------------------------------------------------------------- | +| `config.get()` | 获取配置信息 | <a href={typesUrl}><code>Config</code></a> | +| `config.providers()` | 列出提供商和默认模型 | `{ providers: `<a href={typesUrl}><code>Provider[]</code></a>`, default: { [key: string]: string } }` | --- @@ -224,29 +296,29 @@ const { providers, default: defaults } = await client.config.providers() --- -### 会话 - -| 方法 | 描述 | 备注 | -| ---------------------------------------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -| `session.list()` | 列出会话 | 返回 <a href={typesUrl}><code>Session[]</code></a> | -| `session.get({ path })` | 获取会话 | 返回 <a href={typesUrl}><code>会话</code></a> | -| `session.children({ path })` | 列出子会话 | 返回 <a href={typesUrl}><code>Session[]</code></a> | -| `session.create({ body })` | 建立会话 | 返回 <a href={typesUrl}><code>会话</code></a> | -| `session.delete({ path })` | 离开会话 | 返回`boolean` | -| `session.update({ path, body })` | 更新会话属性 | 返回 <a href={typesUrl}><code>会话</code></a> | -| `session.init({ path, body })` | Analyze app and create `AGENTS.md` | Returns `boolean` | -| `session.abort({ path })` | 中止正在执行的会话 | 返回`boolean` | -| `session.share({ path })` | 分享会 | 返回 <a href={typesUrl}><code>会话</code></a> | -| `session.unshare({ path })` | 取消共享会话 | 返回 <a href={typesUrl}><code>会话</code></a> | -| `session.summarize({ path, body })` | 会议总结 | 返回`boolean` | -| `session.messages({ path })` | 列出会话中的消息 | 返回 `{ info: `<a href={typesUrl}><code>消息</code></a>`, parts: `<a href={typesUrl}><code>部分[]</code></a>`}[]` | -| `session.message({ path })` | 获取消息详情 | 返回 `{ info: `<a href={typesUrl}><code>消息</code></a>`, parts: `<a href={typesUrl}><code>部分[]</code></a>`}` | -| `session.prompt({ path, body })` | 发送提示资讯 | `body.noReply: true` 返回 UserMessage(仅限上下文)。默认返回 <a href={typesUrl}><code>AssistantMessage</code></a> 以及 AI 响应 | -| `session.command({ path, body })` | 向会话发送命令 | 返回 `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>部分[]</code></a>`}` | -| `session.shell({ path, body })` | 执行 shell 命令 | 返回 <a href={typesUrl}><code>AssistantMessage</code></a> | -| `session.revert({ path, body })` | 回复消息 | 返回 <a href={typesUrl}><code>会话</code></a> | -| `session.unrevert({ path })` | 恢复已恢复的消息 | 返回 <a href={typesUrl}><code>会话</code></a> | -| `postSessionByIdPermissionsByPermissionId({ path, body })` | 回复许可权限请求 | 返回`boolean` | +### Sessions + +| 方法 | 描述 | 备注 | +| ---------------------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `session.list()` | 列出会话 | 返回 <a href={typesUrl}><code>Session[]</code></a> | +| `session.get({ path })` | 获取会话 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `session.children({ path })` | 列出子会话 | 返回 <a href={typesUrl}><code>Session[]</code></a> | +| `session.create({ body })` | 创建会话 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `session.delete({ path })` | 删除会话 | 返回 `boolean` | +| `session.update({ path, body })` | 更新会话属性 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `session.init({ path, body })` | 分析应用并创建 `AGENTS.md` | 返回 `boolean` | +| `session.abort({ path })` | 中止正在运行的会话 | 返回 `boolean` | +| `session.share({ path })` | 分享会话 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `session.unshare({ path })` | 取消分享会话 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `session.summarize({ path, body })` | 总结会话 | 返回 `boolean` | +| `session.messages({ path })` | 列出会话中的消息 | 返回 `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` | +| `session.message({ path })` | 获取消息详情 | 返回 `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` | +| `session.prompt({ path, body })` | 发送提示词消息 | `body.noReply: true` 返回 UserMessage(仅注入上下文)。默认返回带有 AI 响应的 <a href={typesUrl}><code>AssistantMessage</code></a>。支持通过 `body.outputFormat` 使用[结构化输出](#结构化输出) | +| `session.command({ path, body })` | 向会话发送命令 | 返回 `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` | +| `session.shell({ path, body })` | 执行 shell 命令 | 返回 <a href={typesUrl}><code>AssistantMessage</code></a> | +| `session.revert({ path, body })` | 撤回消息 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `session.unrevert({ path })` | 恢复已撤回的消息 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `postSessionByIdPermissionsByPermissionId({ path, body })` | 响应权限请求 | 返回 `boolean` | --- @@ -281,21 +353,21 @@ await client.session.prompt({ --- -### 文件 +### Files -| 方法 | 描述 | 回应 | +| 方法 | 描述 | 响应 | | ------------------------- | -------------------- | ----------------------------------------------------------------------------------- | -| `find.text({ query })` | 搜索档案中文字 | 具有 `path`、`lines`、`line_number`、`absolute_offset`、`submatches` 的匹配对象数组 | -| `find.files({ query })` | 按名称查询档案和目录 | `string[]`(路径) | -| `find.symbols({ query })` | 查询工作区符号 | <a href={typesUrl}><code>符号[]</code></a> | -| `file.read({ query })` | 读取档案 | `{ type: "raw" \| "patch", content: string }` | -| `file.status({ query? })` | 获取跟踪文件的状态 | <a href={typesUrl}><code>文件[]</code></a> | +| `find.text({ query })` | 搜索文件中的文本 | 包含 `path`、`lines`、`line_number`、`absolute_offset`、`submatches` 的匹配对象数组 | +| `find.files({ query })` | 按名称查找文件和目录 | `string[]`(路径) | +| `find.symbols({ query })` | 查找工作区符号 | <a href={typesUrl}><code>Symbol[]</code></a> | +| `file.read({ query })` | 读取文件 | `{ type: "raw" \| "patch", content: string }` | +| `file.status({ query? })` | 获取已跟踪文件的状态 | <a href={typesUrl}><code>File[]</code></a> | -`find.files` 支持一些可选的查询栏位: +`find.files` 支持以下可选查询字段: - `type`:`"file"` 或 `"directory"` -- `directory`:覆盖搜索的专案根目录 -- `limit`:最大结果 (1–200) +- `directory`:覆盖搜索的项目根目录 +- `limit`:最大结果数(1–200) --- @@ -324,17 +396,17 @@ const content = await client.file.read({ ### TUI -| 方法 | 描述 | 回应 | +| 方法 | 描述 | 响应 | | ------------------------------ | ---------------- | --------- | -| `tui.appendPrompt({ body })` | 将文字附加到提示 | `boolean` | -| `tui.openHelp()` | 开启帮助对话方块 | `boolean` | -| `tui.openSessions()` | 开启会话选择器 | `boolean` | -| `tui.openThemes()` | 开启主题选择器 | `boolean` | -| `tui.openModels()` | 开启模型选择器 | `boolean` | -| `tui.submitPrompt()` | 提交当前提示 | `boolean` | -| `tui.clearPrompt()` | 清除提示 | `boolean` | +| `tui.appendPrompt({ body })` | 向提示词追加文本 | `boolean` | +| `tui.openHelp()` | 打开帮助对话框 | `boolean` | +| `tui.openSessions()` | 打开会话选择器 | `boolean` | +| `tui.openThemes()` | 打开主题选择器 | `boolean` | +| `tui.openModels()` | 打开模型选择器 | `boolean` | +| `tui.submitPrompt()` | 提交当前提示词 | `boolean` | +| `tui.clearPrompt()` | 清除提示词 | `boolean` | | `tui.executeCommand({ body })` | 执行命令 | `boolean` | -| `tui.showToast({ body })` | 显示吐司通知 | `boolean` | +| `tui.showToast({ body })` | 显示 Toast 通知 | `boolean` | --- @@ -353,11 +425,11 @@ await client.tui.showToast({ --- -### 授权 +### Auth -| 方法 | 描述 | 回应 | -| ------------------- | ---------------- | --------- | -| `auth.set({ ... })` | 设定身份验证凭据 | `boolean` | +| 方法 | 描述 | 响应 | +| ------------------- | ------------ | --------- | +| `auth.set({ ... })` | 设置认证凭据 | `boolean` | --- @@ -372,11 +444,11 @@ await client.auth.set({ --- -### 事件 +### Events -| 方法 | 描述 | 回应 | +| 方法 | 描述 | 响应 | | ------------------- | ------------------ | ------------------ | -| `event.subscribe()` | 服务器传送的事件流 | 服务器传送的事件流 | +| `event.subscribe()` | 服务器发送的事件流 | 服务器发送的事件流 | --- diff --git a/packages/web/src/content/docs/zh-cn/server.mdx b/packages/web/src/content/docs/zh-cn/server.mdx index fafff87d7..d28342ecc 100644 --- a/packages/web/src/content/docs/zh-cn/server.mdx +++ b/packages/web/src/content/docs/zh-cn/server.mdx @@ -6,7 +6,7 @@ description: 通过 HTTP 与 opencode 服务器交互。 import config from "../../../../config.mjs" export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts` -The `opencode serve` command runs a headless HTTP server that exposes an OpenAPI endpoint that an opencode client can use. +`opencode serve` 命令运行一个无界面的 HTTP 服务器,暴露一个 OpenAPI 端点供 opencode 客户端使用。 --- @@ -18,15 +18,15 @@ opencode serve [--port <number>] [--hostname <string>] [--cors <origin>] #### 选项 -| 标志 | 描述 | 默认 | -| --------------- | ----------------------------------- | ---------------- | -| `--port` | 监听音频 | `4096` | -| `--hostname` | 监听的主机名 | `127.0.0.1` | -| `--mdns` | 启用 mDNS 发现 | `false` | -| `--mdns-domain` | Custom domain name for mDNS service | `opencode.local` | -| `--cors` | 允许的其他浏览器来源 | `[]` | +| 标志 | 描述 | 默认值 | +| --------------- | --------------------- | ---------------- | +| `--port` | 监听端口 | `4096` | +| `--hostname` | 监听的主机名 | `127.0.0.1` | +| `--mdns` | 启用 mDNS 发现 | `false` | +| `--mdns-domain` | mDNS 服务的自定义域名 | `opencode.local` | +| `--cors` | 额外允许的浏览器来源 | `[]` | -`--cors` 可以多次交付: +`--cors` 可以多次传递: ```bash opencode serve --cors http://localhost:5173 --cors https://app.example.com @@ -34,9 +34,9 @@ opencode serve --cors http://localhost:5173 --cors https://app.example.com --- -### 验证 +### 认证 -Set `OPENCODE_SERVER_PASSWORD` to protect the server with HTTP basic auth. The username defaults to `opencode`, or set `OPENCODE_SERVER_USERNAME` to override it. This applies to both `opencode serve` and `opencode web`. +设置 `OPENCODE_SERVER_PASSWORD` 以使用 HTTP 基本认证保护服务器。用户名默认为 `opencode`,也可以设置 `OPENCODE_SERVER_USERNAME` 来覆盖它。这适用于 `opencode serve` 和 `opencode web`。 ```bash OPENCODE_SERVER_PASSWORD=your-password opencode serve @@ -44,244 +44,241 @@ OPENCODE_SERVER_PASSWORD=your-password opencode serve --- -### 它是如何运作的 +### 工作原理 -When you run `opencode` it starts a TUI and a server. Where the TUI is the -与服务器器对话的客户端。服务器器公开 OpenAPI 3.1 规范 -该端点还用于生成 [SDK](/docs/sdk)。 +当你运行 `opencode` 时,它会启动一个 TUI 和一个服务器。TUI 是与服务器通信的客户端。服务器暴露一个 OpenAPI 3.1 规范端点。该端点也用于生成 [SDK](/docs/sdk)。 :::tip -使用opencode服务器以程序设计方式与opencode交互。 +使用 opencode 服务器以编程方式与 opencode 交互。 ::: -该架构让 opencode 支持客户端,并允许您以多种设计方式与 opencode 交互。 +这种架构让 opencode 支持多个客户端,并允许你以编程方式与 opencode 交互。 -You can run `opencode serve` to start a standalone server. If you have the -opencode TUI running, `opencode serve` will start a new server. +你可以运行 `opencode serve` 来启动一个独立的服务器。如果你已经在运行 opencode TUI,`opencode serve` 会启动一个新的服务器。 --- #### 连接到现有服务器 -当您启动 TUI 时,它会随机分配端口和主机名。您可以重新设置 `--hostname` 和 `--port` [flags](/docs/cli)。使用它连线到其服务器然后器。 +当你启动 TUI 时,它会随机分配端口和主机名。你也可以传入 `--hostname` 和 `--port` [标志](/docs/cli),然后用它来连接对应的服务器。 -[**_T2_**](#tui) 端点可用于跨境服务器驱动 TUI。例如,您可以预填充或执行提示。此设置由 opencode [IDE](/docs/ide) 外挂使用。 +[`/tui`](#tui) 端点可用于通过服务器驱动 TUI。例如,你可以预填充或运行一个提示词。此方式被 OpenCode [IDE](/docs/ide) 插件所使用。 --- -## 规格 +## 规范 -服务器发布了OpenAPI 3.1规范,可以在以下位置查看: +服务器发布了一个 OpenAPI 3.1 规范,可在以下地址查看: ``` http://<hostname>:<port>/doc ``` -例如,`http://localhost:4096/doc`。使用规范生成客户端或检查请求和响应类型其他。或者在 Swagger 浏览器中查看它。 +例如,`http://localhost:4096/doc`。使用该规范可以生成客户端或检查请求和响应类型,也可以在 Swagger 浏览器中查看。 --- ## API -opencode服务器公开以下API。 +opencode 服务器暴露以下 API。 --- ### 全局 -| 方法 | 路径 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 响应 | | ----- | ---------------- | ------------------------ | ------------------------------------ | -| `GET` | `/global/health` | 获取服务器运行状况和版本 | `{ healthy: true, version: string }` | -| `GET` | `/global/event` | 获取全域性事件(SSE 流) | 事件流 | +| `GET` | `/global/health` | 获取服务器健康状态和版本 | `{ healthy: true, version: string }` | +| `GET` | `/global/event` | 获取全局事件(SSE 流) | 事件流 | --- ### 项目 -| 方法 | 路径 | 描述 | 回应 | -| ----- | ------------------ | ------------ | ------------------------------------------ | -| `GET` | `/project` | 列出所有专案 | <a href={typesUrl}><code>专案[]</code></a> | -| `GET` | `/project/current` | 获取当前专案 | <a href={typesUrl}><code>专案</code></a> | +| 方法 | 路径 | 描述 | 响应 | +| ----- | ------------------ | ------------ | --------------------------------------------- | +| `GET` | `/project` | 列出所有项目 | <a href={typesUrl}><code>Project[]</code></a> | +| `GET` | `/project/current` | 获取当前项目 | <a href={typesUrl}><code>Project</code></a> | --- -### 路径和VCS +### 路径和 VCS -| 方法 | 路径 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 响应 | | ----- | ------- | ----------------------- | ------------------------------------------- | -| `GET` | `/path` | 获取当前路径 | <a href={typesUrl}><code>路径</code></a> | -| `GET` | `/vcs` | 获取当前专案的 VCS 资讯 | <a href={typesUrl}><code>VcsInfo</code></a> | +| `GET` | `/path` | 获取当前路径 | <a href={typesUrl}><code>Path</code></a> | +| `GET` | `/vcs` | 获取当前项目的 VCS 信息 | <a href={typesUrl}><code>VcsInfo</code></a> | --- -### 例项 +### 实例 -| 方法 | 路径 | 描述 | 回应 | -| ------ | ------------------- | -------------- | --------- | -| `POST` | `/instance/dispose` | 执行当前实例项 | `boolean` | +| 方法 | 路径 | 描述 | 响应 | +| ------ | ------------------- | ------------ | --------- | +| `POST` | `/instance/dispose` | 销毁当前实例 | `boolean` | --- ### 配置 -| 方法 | 路径 | 描述 | 回应 | -| ------- | ------------------- | -------------------- | -------------------------------------------------------------------------------------- | -| `GET` | `/config` | 获取配置资讯 | <a href={typesUrl}><code>配置</code></a> | -| `PATCH` | `/config` | 更新配置 | <a href={typesUrl}><code>配置</code></a> | -| `GET` | `/config/providers` | 列出提供商和默认模型 | `{ providers: `<a href={typesUrl}>提供商[]</a>`, default: { [key: string]: string } }` | +| 方法 | 路径 | 描述 | 响应 | +| ------- | ------------------- | -------------------- | ---------------------------------------------------------------------------------------- | +| `GET` | `/config` | 获取配置信息 | <a href={typesUrl}><code>Config</code></a> | +| `PATCH` | `/config` | 更新配置 | <a href={typesUrl}><code>Config</code></a> | +| `GET` | `/config/providers` | 列出提供商和默认模型 | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` | --- ### 提供商 -| 方法 | 路径 | 描述 | 回应 | -| ------ | -------------------------------- | ----------------------- | --------------------------------------------------------------------------------- | -| `GET` | `/provider` | 列出所有提供商 | `{ all: `<a href={typesUrl}>提供商[]</a>`, default: {...}, connected: string[] }` | -| `GET` | `/provider/auth` | 获取提供商身份验证方法 | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` | -| `POST` | `/provider/{id}/oauth/authorize` | 使用 OAuth 授权提供商 | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> | -| `POST` | `/provider/{id}/oauth/callback` | 处理提供商的 OAuth 回调 | `boolean` | +| 方法 | 路径 | 描述 | 响应 | +| ------ | -------------------------------- | ----------------------- | ----------------------------------------------------------------------------------- | +| `GET` | `/provider` | 列出所有提供商 | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` | +| `GET` | `/provider/auth` | 获取提供商认证方式 | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` | +| `POST` | `/provider/{id}/oauth/authorize` | 使用 OAuth 授权提供商 | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> | +| `POST` | `/provider/{id}/oauth/callback` | 处理提供商的 OAuth 回调 | `boolean` | --- ### 会话 -| 方法 | 路径 | 描述 | 笔记 | -| -------- | ---------------------------------------- | ---------------------------------- | -------------------------------------------------------------------------------- | -| `GET` | `/session` | 列出所有会话 | 返回 <a href={typesUrl}><code>Session[]</code></a> | -| `POST` | `/session` | 建立新会话 | 正文: `{ parentID?, title? }`,返回 <a href={typesUrl}><code>Session</code></a> | -| `GET` | `/session/status` | 获取所有会话的会话状态 | 返回 `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` | -| `GET` | `/session/:id` | 获取会话详细信息 | 返回<a href={typesUrl}><code>会话</code></a> | -| `DELETE` | `/session/:id` | 删除会话及所有资料 | 返回`boolean` | -| `PATCH` | `/session/:id` | 更新会话属性 | 正文: `{ title? }`,返回 <a href={typesUrl}><code>Session</code></a> | -| `GET` | `/session/:id/children` | 获取会话的子会话 | 返回 <a href={typesUrl}><code>Session[]</code></a> | -| `GET` | `/session/:id/todo` | 获取会话的待办事项列表 | 返回 <a href={typesUrl}><code>Todo[]</code></a> | -| `POST` | `/session/:id/init` | Analyze app and create `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returns `boolean` | -| `POST` | `/session/:id/fork` | 在消息中分叉现有会话 | 正文: `{ messageID? }`,返回 <a href={typesUrl}><code>Session</code></a> | -| `POST` | `/session/:id/abort` | 中止正在执行的会话 | 返回`boolean` | -| `POST` | `/session/:id/share` | 分享会话 | 返回<a href={typesUrl}><code>会话</code></a> | -| `DELETE` | `/session/:id/share` | 取消共享会话 | 返回<a href={typesUrl}><code>会话</code></a> | -| `GET` | `/session/:id/diff` | 获取本次会话的差异 | 查询:`messageID?`,返回 <a href={typesUrl}><code>FileDiff[]</code></a> | -| `POST` | `/session/:id/summarize` | 会议总结 | 正文:`{ providerID, modelID }`,返回 `boolean` | -| `POST` | `/session/:id/revert` | 回复讯息 | 正文:`{ messageID, partID? }`,返回 `boolean` | -| `POST` | `/session/:id/unrevert` | 恢复所有已恢复的消息 | 返回`boolean` | -| `POST` | `/session/:id/permissions/:permissionID` | 回复许可权限请求 | 正文:`{ response, remember? }`,返回 `boolean` | +| 方法 | 路径 | 描述 | 说明 | +| -------- | ---------------------------------------- | -------------------------- | --------------------------------------------------------------------------------- | +| `GET` | `/session` | 列出所有会话 | 返回 <a href={typesUrl}><code>Session[]</code></a> | +| `POST` | `/session` | 创建新会话 | 请求体:`{ parentID?, title? }`,返回 <a href={typesUrl}><code>Session</code></a> | +| `GET` | `/session/status` | 获取所有会话的状态 | 返回 `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` | +| `GET` | `/session/:id` | 获取会话详情 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `DELETE` | `/session/:id` | 删除会话及其所有数据 | 返回 `boolean` | +| `PATCH` | `/session/:id` | 更新会话属性 | 请求体:`{ title? }`,返回 <a href={typesUrl}><code>Session</code></a> | +| `GET` | `/session/:id/children` | 获取会话的子会话 | 返回 <a href={typesUrl}><code>Session[]</code></a> | +| `GET` | `/session/:id/todo` | 获取会话的待办事项列表 | 返回 <a href={typesUrl}><code>Todo[]</code></a> | +| `POST` | `/session/:id/init` | 分析应用并创建 `AGENTS.md` | 请求体:`{ messageID, providerID, modelID }`,返回 `boolean` | +| `POST` | `/session/:id/fork` | 在某条消息处分叉现有会话 | 请求体:`{ messageID? }`,返回 <a href={typesUrl}><code>Session</code></a> | +| `POST` | `/session/:id/abort` | 中止正在运行的会话 | 返回 `boolean` | +| `POST` | `/session/:id/share` | 分享会话 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `DELETE` | `/session/:id/share` | 取消分享会话 | 返回 <a href={typesUrl}><code>Session</code></a> | +| `GET` | `/session/:id/diff` | 获取本次会话的差异 | 查询参数:`messageID?`,返回 <a href={typesUrl}><code>FileDiff[]</code></a> | +| `POST` | `/session/:id/summarize` | 总结会话 | 请求体:`{ providerID, modelID }`,返回 `boolean` | +| `POST` | `/session/:id/revert` | 回退消息 | 请求体:`{ messageID, partID? }`,返回 `boolean` | +| `POST` | `/session/:id/unrevert` | 恢复所有已回退的消息 | 返回 `boolean` | +| `POST` | `/session/:id/permissions/:permissionID` | 响应权限请求 | 请求体:`{ response, remember? }`,返回 `boolean` | --- -### 留言 +### 消息 -| 方法 | 路径 | 描述 | 笔记 | -| ------ | --------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `GET` | `/session/:id/message` | 列出会话中的消息 | 查询: `limit?`,返回 `{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` | -| `POST` | `/session/:id/message` | 发送消息并等待回复 | 正文: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`,返回 `{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>部分[]</a>`}` | -| `GET` | `/session/:id/message/:messageID` | 获取消息详情 | 返回 `{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>部分[]</a>`}` | -| `POST` | `/session/:id/prompt_async` | 非同步传送消息(休眠等待) | 主体:与 `/session/:id/message` 相同,返回 `204 No Content` | -| `POST` | `/session/:id/command` | 执行斜杠命令 | 正文: `{ messageID?, agent?, model?, command, arguments }`,返回 `{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>部分[]</a>`}` | -| `POST` | `/session/:id/shell` | 执行 shell 命令 | 正文: `{ agent, model?, command }`,返回 `{ info: `<a href={typesUrl}>消息</a>`, parts: `<a href={typesUrl}>部分[]</a>`}` | +| 方法 | 路径 | 描述 | 说明 | +| ------ | --------------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `GET` | `/session/:id/message` | 列出会话中的消息 | 查询参数:`limit?`,返回 `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` | +| `POST` | `/session/:id/message` | 发送消息并等待响应 | 请求体:`{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`,返回 `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` | +| `GET` | `/session/:id/message/:messageID` | 获取消息详情 | 返回 `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` | +| `POST` | `/session/:id/prompt_async` | 异步发送消息(不等待响应) | 请求体:与 `/session/:id/message` 相同,返回 `204 No Content` | +| `POST` | `/session/:id/command` | 执行斜杠命令 | 请求体:`{ messageID?, agent?, model?, command, arguments }`,返回 `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` | +| `POST` | `/session/:id/shell` | 运行 shell 命令 | 请求体:`{ agent, model?, command }`,返回 `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` | --- ### 命令 -| 方法 | 路径 | 描述 | 回应 | -| ----- | ---------- | ------------ | ------------------------------------------ | -| `GET` | `/command` | 列出所有命令 | <a href={typesUrl}><code>命令[]</code></a> | +| 方法 | 路径 | 描述 | 响应 | +| ----- | ---------- | ------------ | --------------------------------------------- | +| `GET` | `/command` | 列出所有命令 | <a href={typesUrl}><code>Command[]</code></a> | --- ### 文件 -| 方法 | 路径 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 响应 | | ----- | ------------------------ | -------------------- | ----------------------------------------------------------------------------------- | -| `GET` | `/find?pattern=<pat>` | 搜索文件中的文字 | 具有 `path`、`lines`、`line_number`、`absolute_offset`、`submatches` 的匹配对像数组 | -| `GET` | `/find/file?query=<q>` | 按名称查询文件和目录 | `string[]`(路径) | -| `GET` | `/find/symbol?query=<q>` | 查询工作区符号 | <a href={typesUrl}><code>符号[]</code></a> | +| `GET` | `/find?pattern=<pat>` | 在文件中搜索文本 | 包含 `path`、`lines`、`line_number`、`absolute_offset`、`submatches` 的匹配对象数组 | +| `GET` | `/find/file?query=<q>` | 按名称查找文件和目录 | `string[]`(路径) | +| `GET` | `/find/symbol?query=<q>` | 查找工作区符号 | <a href={typesUrl}><code>Symbol[]</code></a> | | `GET` | `/file?path=<path>` | 列出文件和目录 | <a href={typesUrl}><code>FileNode[]</code></a> | -| `GET` | `/file/content?path=<p>` | 读取文件 | <a href={typesUrl}><code>文件内容</code></a> | -| `GET` | `/file/status` | 获取跟踪文件的状态 | <a href={typesUrl}><code>文件[]</code></a> | +| `GET` | `/file/content?path=<p>` | 读取文件 | <a href={typesUrl}><code>FileContent</code></a> | +| `GET` | `/file/status` | 获取已跟踪文件的状态 | <a href={typesUrl}><code>File[]</code></a> | #### `/find/file` 查询参数 -- `query`(必需)—搜寻字符串(模糊匹配) +- `query`(必需)— 搜索字符串(模糊匹配) - `type`(可选)— 将结果限制为 `"file"` 或 `"directory"` -- `directory` (任选) — 覆盖搜索的专案根目录 -- `limit`(任选)— 最大结果 (1–200) -- `dirs`(任选)— 旧标志(`"false"`仅返回档案) +- `directory`(可选)— 覆盖搜索的项目根目录 +- `limit`(可选)— 最大结果数(1–200) +- `dirs`(可选)— 旧版标志(`"false"` 仅返回文件) --- -### 工具(实验) +### 工具(实验性) -| 方法 | 路径 | 描述 | 回应 | -| ----- | ------------------------------------------- | ---------------------------- | -------------------------------------------- | -| `GET` | `/experimental/tool/ids` | 列出所有工具 ID | <a href={typesUrl}><code>工具ID</code></a> | -| `GET` | `/experimental/tool?provider=<p>&model=<m>` | 列出具有模型 JSON 模式的工具 | <a href={typesUrl}><code>工具列表</code></a> | +| 方法 | 路径 | 描述 | 响应 | +| ----- | ------------------------------------------- | ---------------------------------- | -------------------------------------------- | +| `GET` | `/experimental/tool/ids` | 列出所有工具 ID | <a href={typesUrl}><code>ToolIDs</code></a> | +| `GET` | `/experimental/tool?provider=<p>&model=<m>` | 列出指定模型的工具及其 JSON Schema | <a href={typesUrl}><code>ToolList</code></a> | --- -### LSP、格式化程式和 MCP +### LSP、格式化器和 MCP -| 方法 | 路径 | 描述 | 回应 | -| ------ | ------------ | ------------------- | ------------------------------------------------------ | -| `GET` | `/lsp` | 获取 LSP 服务器状态 | <a href={typesUrl}><code>LSPStatus[]</code></a> | -| `GET` | `/formatter` | 获取格式化程式状态 | <a href={typesUrl}><code>FormatterStatus[]</code></a> | -| `GET` | `/mcp` | 获取 MCP 服务器状态 | `{ [name: string]: `<a href={typesUrl}>MCP状态</a>` }` | -| `POST` | `/mcp` | 动态添加 MCP 服务器 | 主体:`{ name, config }`,返回 MCP 状态对象 | +| 方法 | 路径 | 描述 | 响应 | +| ------ | ------------ | ------------------- | -------------------------------------------------------- | +| `GET` | `/lsp` | 获取 LSP 服务器状态 | <a href={typesUrl}><code>LSPStatus[]</code></a> | +| `GET` | `/formatter` | 获取格式化器状态 | <a href={typesUrl}><code>FormatterStatus[]</code></a> | +| `GET` | `/mcp` | 获取 MCP 服务器状态 | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` | +| `POST` | `/mcp` | 动态添加 MCP 服务器 | 请求体:`{ name, config }`,返回 MCP 状态对象 | --- -### 代理商 +### 代理 -| 方法 | 路径 | 描述 | 回应 | -| ----- | -------- | ------------------ | ------------------------------------------ | -| `GET` | `/agent` | 列出所有可用的代理 | <a href={typesUrl}><code>代理[]</code></a> | +| 方法 | 路径 | 描述 | 响应 | +| ----- | -------- | ------------------ | ------------------------------------------- | +| `GET` | `/agent` | 列出所有可用的代理 | <a href={typesUrl}><code>Agent[]</code></a> | --- ### 日志 -| 方法 | 路径 | 描述 | 回应 | -| ------ | ------------------------------------------- | ------ | -------------------- | -| `POST` | 身体:`{ service, level, message, extra? }` | `/log` | 写入日志。 `boolean` | +| 方法 | 路径 | 描述 | 响应 | +| ------ | ------ | ----------------------------------------------------------- | --------- | +| `POST` | `/log` | 写入日志条目。请求体:`{ service, level, message, extra? }` | `boolean` | --- ### TUI -| 方法 | 路径 | 描述 | 回应 | -| ------ | ----------------------- | ----------------------------------------- | ------------ | -| `POST` | `/tui/append-prompt` | 将文字附加到提示 | `boolean` | -| `POST` | `/tui/open-help` | 开启帮助对话方块 | `boolean` | -| `POST` | `/tui/open-sessions` | 开启会话选择器 | `boolean` | -| `POST` | `/tui/open-themes` | 开启主题选择器 | `boolean` | -| `POST` | `/tui/open-models` | 开启模型选择器 | `boolean` | -| `POST` | `/tui/submit-prompt` | 提交当前提示 | `boolean` | -| `POST` | `/tui/clear-prompt` | 清除提示 | `boolean` | -| `POST` | `/tui/execute-command` | 执行命令 (`{ command }`) | `boolean` | -| `POST` | `/tui/show-toast` | 显示祝酒 (`{ title?, message, variant }`) | `boolean` | -| `GET` | `/tui/control/next` | 等待下一个控制请求 | 控制请求对象 | -| `POST` | `/tui/control/response` | 响应控制请求 (`{ body }`) | `boolean` | +| 方法 | 路径 | 描述 | 响应 | +| ------ | ----------------------- | ---------------------------------------------- | ------------ | +| `POST` | `/tui/append-prompt` | 向提示词追加文本 | `boolean` | +| `POST` | `/tui/open-help` | 打开帮助对话框 | `boolean` | +| `POST` | `/tui/open-sessions` | 打开会话选择器 | `boolean` | +| `POST` | `/tui/open-themes` | 打开主题选择器 | `boolean` | +| `POST` | `/tui/open-models` | 打开模型选择器 | `boolean` | +| `POST` | `/tui/submit-prompt` | 提交当前提示词 | `boolean` | +| `POST` | `/tui/clear-prompt` | 清除提示词 | `boolean` | +| `POST` | `/tui/execute-command` | 执行命令(`{ command }`) | `boolean` | +| `POST` | `/tui/show-toast` | 显示提示消息(`{ title?, message, variant }`) | `boolean` | +| `GET` | `/tui/control/next` | 等待下一个控制请求 | 控制请求对象 | +| `POST` | `/tui/control/response` | 响应控制请求(`{ body }`) | `boolean` | --- -### 授权 +### 认证 -| 方法 | 路径 | 描述 | 回应 | -| ----- | ----------- | ------------------------------------------ | --------- | -| `PUT` | `/auth/:id` | 设置身份验证凭据。正文必须与提供商架构匹配 | `boolean` | +| 方法 | 路径 | 描述 | 响应 | +| ----- | ----------- | -------------------------------------------- | --------- | +| `PUT` | `/auth/:id` | 设置认证凭据。请求体必须匹配提供商的数据结构 | `boolean` | --- -### 活动 +### 事件 -| 方法 | 路径 | 描述 | 回应 | -| ----- | -------- | ------------------------------------------------------------------- | ------------------ | -| `GET` | `/event` | 服务器发送事件流。第一个事件是 `server.connected`,之后是总线事件。 | 服务器发送事件流。 | +| 方法 | 路径 | 描述 | 响应 | +| ----- | -------- | ----------------------------------------------------------------- | ---------------- | +| `GET` | `/event` | 服务器发送事件流。第一个事件是 `server.connected`,之后是总线事件 | 服务器发送事件流 | --- ### 文档 -| 方法 | 路径 | 描述 | 回应 | -| ----- | ------ | --------------- | ------------------------- | -| `GET` | `/doc` | 开启API 3.1规范 | 具有OpenAPI规范的HTML页面 | +| 方法 | 路径 | 描述 | 响应 | +| ----- | ------ | ---------------- | ----------------------------- | +| `GET` | `/doc` | OpenAPI 3.1 规范 | 包含 OpenAPI 规范的 HTML 页面 | diff --git a/packages/web/src/content/docs/zh-cn/share.mdx b/packages/web/src/content/docs/zh-cn/share.mdx index 484e49f87..8a7be16dc 100644 --- a/packages/web/src/content/docs/zh-cn/share.mdx +++ b/packages/web/src/content/docs/zh-cn/share.mdx @@ -1,43 +1,43 @@ --- title: 分享 -description: 分享您的 opencode 对话。 +description: 分享您的 OpenCode 对话。 --- -opencode 的共享功能允许您建立指向 opencode 对话的公共链接,以便您可以与蓝牙进行战斗或从其他人那里获得帮助。 +OpenCode 的分享功能允许您创建指向 OpenCode 对话的公开链接,方便与团队成员协作或向他人寻求帮助。 :::note -任何知道链接的人都可以公开访问共享对话。 +共享的对话对任何拥有链接的人都是公开可访问的。 ::: --- -## 它是如何运作的 +## 工作原理 -当您分享对话时,opencode: +当您分享一段对话时,OpenCode 会: -1. 为您的会话建立唯一的公共 URL -2. 将您的对话历史记录同步到我们的服务器 -3. 通过可共享链接访问对话 — `opncd.ai/s/<share-id>` +1. 为您的会话创建一个唯一的公开 URL +2. 将您的对话历史同步到我们的服务器 +3. 通过可分享的链接使对话可访问 — `opncd.ai/s/<share-id>` --- -## 分享 +## 分享模式 -opencode 支持三种控制对话共享方式的共享模式: +OpenCode 支持三种分享模式,用于控制对话的共享方式: --- -### 手动(默认) +### 手动模式(默认) -在默认情况下,opencode 使用手动共享模式。会话不会自动共享,但您可以使用 `/share` 命令手动共享它们: +默认情况下,OpenCode 使用手动分享模式。会话不会自动共享,但您可以使用 `/share` 命令手动分享: ``` /share ``` -这将生成一个唯一的 URL,将其复制到您的剪贴板中。 +这将生成一个唯一的 URL 并复制到您的剪贴板。 -要在[配置文件](/docs/config) 中显式设置手动模式: +要在[配置文件](/docs/config)中显式设置手动模式: ```json title="opencode.json" { @@ -50,7 +50,7 @@ opencode 支持三种控制对话共享方式的共享模式: ### 自动分享 -您可以通过将 [配置文件](/docs/config) 中的 `share` 选项设置为 `"auto"` 来为所有新对话启用自动共享: +您可以在[配置文件](/docs/config)中将 `share` 选项设置为 `"auto"`,为所有新对话启用自动分享: ```json title="opencode.json" { @@ -59,13 +59,13 @@ opencode 支持三种控制对话共享方式的共享模式: } ``` -启用自动共享后,每个新对话都会自动共享并生成链接。 +启用自动分享后,每个新对话都会自动共享并生成链接。 --- -### 已禁用 +### 禁用 -您可以通过将 [配置文件](/docs/config) 中的 `share` 选项设置为 `"disabled"` 来完全禁用共享: +您可以在[配置文件](/docs/config)中将 `share` 选项设置为 `"disabled"`,完全禁用分享功能: ```json title="opencode.json" { @@ -74,34 +74,33 @@ opencode 支持三种控制对话共享方式的共享模式: } ``` -为了在您的团队中针对特定项目强制执行此操作,请将其添加到您项目的 `opencode.json` 文件中,并将其提交到Git。 +要在团队中对特定项目强制执行此设置,请将其添加到项目的 `opencode.json` 文件中并提交到 Git。 --- -## 取消共享 +## 取消分享 -要停止共享对话并将其从公共访问中删除: +要停止分享对话并将其从公开访问中移除: ``` /unshare ``` -这将删除共享链接并删除与对话相关的数据。 +这将移除分享链接并删除与该对话相关的数据。 --- ## 隐私 -分享对话时需要记住一些事项。 +分享对话时需要注意以下几点。 --- -### 数据保留 +### 数据留存 -共享对话仍然可以访问,直到您明确取消共享。这 -包括: +共享的对话在您明确取消分享之前将一直保持可访问状态。这包括: -- 完整的对话历史记录 +- 完整的对话历史 - 所有消息和回复 - 会话元数据 @@ -109,20 +108,20 @@ opencode 支持三种控制对话共享方式的共享模式: ### 建议 -- 仅共享不包含敏感资讯的对话。 -- 分享之前查看对话内容。 -- 协作完成后取消共享对话。 -- 避免共享包括专有代码或机密数据的对话。 -- 对于敏感项目,完全禁用共享。 +- 仅分享不包含敏感信息的对话。 +- 分享前请检查对话内容。 +- 协作完成后请取消分享。 +- 避免分享包含专有代码或机密数据的对话。 +- 对于敏感项目,请完全禁用分享功能。 --- -## 对于企业 +## 企业版 -对于企业部署,共享功能可以是: +对于企业部署,分享功能可以: -- **出于安全合规性完全禁用** -- **仅限** 仅通过 SSO 进行身份验证的用户 -- **在您自己的基础设施上自行托管** +- 出于安全合规考虑**完全禁用** +- **限制**为仅通过 SSO 身份验证的用户可用 +- **自托管**在您自己的基础设施上 -[了解更多关于在您的组织中使用opencode的](/docs/enterprise)。 +[了解更多](/docs/enterprise)关于在您的组织中使用 OpenCode 的信息。 diff --git a/packages/web/src/content/docs/zh-cn/skills.mdx b/packages/web/src/content/docs/zh-cn/skills.mdx index f708a6812..1c4f2fe69 100644 --- a/packages/web/src/content/docs/zh-cn/skills.mdx +++ b/packages/web/src/content/docs/zh-cn/skills.mdx @@ -1,62 +1,62 @@ --- -title: 代理技能 -description: “通过 SKILL.md 定义可复用的行为” +title: "代理技能" +description: "通过 SKILL.md 定义可复用的行为" --- -代理技能使 OpenCode 能够从您的仓库或主目录中发现可重用的指令。 -技能通过原生 `skill` 工具输入导入 - 代理可以查看可用技能并可以在需要时加载完整内容。 +代理技能让 OpenCode 能够从你的仓库或主目录中发现可复用的指令。 +技能通过原生的 `skill` 工具按需加载——代理可以查看可用技能,并在需要时加载完整内容。 --- ## 放置文件 -为每个技能名称建立一个资料夹,并在其中放入`SKILL.md`。 -opencode 搜索这些位置: +为每个技能名称创建一个文件夹,并在其中放入 `SKILL.md`。 +OpenCode 会搜索以下位置: -- Project config: `.opencode/skills/<name>/SKILL.md` -- Global config: `~/.config/opencode/skills/<name>/SKILL.md` -- 专案Claude兼容:`.claude/skills/<name>/SKILL.md` -- 全域性 Claude 兼容: `~/.claude/skills/<name>/SKILL.md` -- 专案代理兼容:`.agents/skills/<name>/SKILL.md` -- 全球代理兼容:`~/.agents/skills/<name>/SKILL.md` +- 项目配置:`.opencode/skills/<name>/SKILL.md` +- 全局配置:`~/.config/opencode/skills/<name>/SKILL.md` +- 项目 Claude 兼容:`.claude/skills/<name>/SKILL.md` +- 全局 Claude 兼容:`~/.claude/skills/<name>/SKILL.md` +- 项目代理兼容:`.agents/skills/<name>/SKILL.md` +- 全局代理兼容:`~/.agents/skills/<name>/SKILL.md` --- -## 了解发现 +## 了解发现机制 -对于专案本地路径, opencode 从当前工作目录向上走,直到到达 git 工作树。 -It loads any matching `skills/*/SKILL.md` in `.opencode/` and any matching `.claude/skills/*/SKILL.md` or `.agents/skills/*/SKILL.md` along the way. +对于项目本地路径,OpenCode 会从当前工作目录向上遍历,直到到达 git 工作树根目录。 +在此过程中,它会加载 `.opencode/` 中所有匹配的 `skills/*/SKILL.md`,以及匹配的 `.claude/skills/*/SKILL.md` 或 `.agents/skills/*/SKILL.md`。 -Global definitions are also loaded from `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md`, and `~/.agents/skills/*/SKILL.md`. +全局定义也会从 `~/.config/opencode/skills/*/SKILL.md`、`~/.claude/skills/*/SKILL.md` 和 `~/.agents/skills/*/SKILL.md` 中加载。 --- -## 编写 Frontmatter +## 编写 frontmatter -每个 `SKILL.md` 必须以 YAML frontmatter 。 -仅识别这些栏位: +每个 `SKILL.md` 必须以 YAML frontmatter 开头。 +仅识别以下字段: - `name`(必填) - `description`(必填) -- `license`(任选) -- `compatibility`(任选) -- `metadata`(任选,字符串到字符串对映) +- `license`(可选) +- `compatibility`(可选) +- `metadata`(可选,字符串到字符串的映射) -未知的 frontmatter 栏位将被忽略。 +未知的 frontmatter 字段会被忽略。 --- ## 验证名称 -`name` 必须: +`name` 必须满足: -- 长度为 1–64 个字元 -- 为小写字母数字并带有单个连字元分隔符 -- 不以 `-` 开始或结束 +- 长度为 1–64 个字符 +- 仅包含小写字母和数字,可用单个连字符分隔 +- 不以 `-` 开头或结尾 - 不包含连续的 `--` -- 匹配包含 `SKILL.md` 的目录名 +- 与包含 `SKILL.md` 的目录名称一致 -等效的正规表示式: +等效的正则表达式: ```text ^[a-z0-9]+(-[a-z0-9]+)*$ @@ -66,14 +66,14 @@ Global definitions are also loaded from `~/.config/opencode/skills/*/SKILL.md`, ## 遵循长度规则 -`description` 必须是 1-1024 个字元。 -保持足够具体,以便代理能够正确选择。 +`description` 必须为 1-1024 个字符。 +请保持描述足够具体,以便代理能够正确选择。 --- -## 使用一个例子 +## 使用示例 -Create `.opencode/skills/git-release/SKILL.md` like this: +创建 `.opencode/skills/git-release/SKILL.md`,内容如下: ```markdown --- @@ -100,10 +100,10 @@ Ask clarifying questions if the target versioning scheme is unclear. --- -## 识别工具说明 +## 识别工具描述 -opencode 列出了 `skill` 工具描述中的可用技能。 -每个条目都包含技能名称和描述: +OpenCode 会在 `skill` 工具描述中列出可用技能。 +每个条目包含技能名称和描述: ```xml <available_skills> @@ -114,7 +114,7 @@ opencode 列出了 `skill` 工具描述中的可用技能。 </available_skills> ``` -代理通过呼叫工具来载入技能: +代理通过调用工具来加载技能: ``` skill({ name: "git-release" }) @@ -124,7 +124,7 @@ skill({ name: "git-release" }) ## 配置权限 -Control which skills agents can access using pattern-based permissions in `opencode.json`: +在 `opencode.json` 中使用基于模式的权限来控制代理可以访问哪些技能: ```json { @@ -139,21 +139,21 @@ Control which skills agents can access using pattern-based permissions in `openc } ``` -| 许可 | 行为 | -| ------- | -------------------------- | -| `allow` | 技能立即加载 | -| `deny` | 对特工隐藏技能,访问被拒绝 | -| `ask` | 加载前提示用户批准 | +| 权限 | 行为 | +| ------- | ------------------------ | +| `allow` | 技能立即加载 | +| `deny` | 对代理隐藏技能,拒绝访问 | +| `ask` | 加载前提示用户确认 | -模式支持万用字元:`internal-*` 匹配 `internal-docs`、`internal-tools` 等。 +模式支持通配符:`internal-*` 可匹配 `internal-docs`、`internal-tools` 等。 --- -## 覆盖每个代理 +## 按代理覆盖权限 -为特定代理授予与全域性默认权限不同的权限。 +为特定代理授予与全局默认值不同的权限。 -**对于自定义代理**(在代理前言中): +**自定义代理**(在代理 frontmatter 中): ```yaml --- @@ -163,7 +163,7 @@ permission: --- ``` -**For built-in agents** (in `opencode.json`): +**内置代理**(在 `opencode.json` 中): ```json { @@ -183,9 +183,9 @@ permission: ## 禁用技能工具 -完全禁用不应该使用技能的特工: +为不需要使用技能的代理完全禁用技能功能: -**对于定制代理**: +**自定义代理**: ```yaml --- @@ -194,7 +194,7 @@ tools: --- ``` -**对于内建代理**: +**内置代理**: ```json { @@ -212,11 +212,11 @@ tools: --- -## 解决加载问题 +## 排查加载问题 -如果某项技能没有显示: +如果某个技能没有显示: -1. 验证 `SKILL.md` 拼写为全部大写 -2. 检查 frontmatter 是否包括 `name` 和 `description` -3. 确保技能名称在所有位置都是唯一的 -4. 查询权限——具有`deny`的代理隐藏技能 +1. 确认 `SKILL.md` 文件名全部为大写字母 +2. 检查 frontmatter 是否包含 `name` 和 `description` +3. 确保技能名称在所有位置中唯一 +4. 检查权限设置——设为 `deny` 的技能会对代理隐藏 diff --git a/packages/web/src/content/docs/zh-cn/themes.mdx b/packages/web/src/content/docs/zh-cn/themes.mdx index a885fed19..d1abefed6 100644 --- a/packages/web/src/content/docs/zh-cn/themes.mdx +++ b/packages/web/src/content/docs/zh-cn/themes.mdx @@ -1,67 +1,67 @@ --- title: 主题 -description: 选择内建主题或定义您自己的主题。 +description: 选择内置主题或定义您自己的主题。 --- -使用 opencode,您可以从多个内建主题中进行选择,使用适合您的终端主题的主题,或定义您自己的自定义主题。 +通过 OpenCode,您可以从多个内置主题中进行选择,使用能自动适配终端主题的主题,或者定义您自己的自定义主题。 -By default, opencode uses our own `opencode` theme. +默认情况下,OpenCode 使用我们自己的 `opencode` 主题。 --- ## 终端要求 -为了使主题能够正确显示完整的调色板,您的终端必须支持**真彩色**(24 位颜色)。大多数现代终端默认支持此功能,但您可能需要启用它: +为了使主题能够正确显示完整的调色板,您的终端必须支持**真彩色**(24 位色)。大多数现代终端默认支持此功能,但您可能需要手动启用: -- **检查支持**:执行 `echo $COLORTERM` - 它应该输出 `truecolor` 或 `24bit` -- **启用真彩色**:在shell配置文件中设置环境变量`COLORTERM=truecolor` -- **您的终端兼容性**:确保终端模拟器支持24位颜色(大多数现代终端,如iTerm2、Alacritty、Kitty、Windows终端和最新版本的GNOME终端都支持) +- **检查支持情况**:运行 `echo $COLORTERM` — 输出应为 `truecolor` 或 `24bit` +- **启用真彩色**:在您的 shell 配置文件中设置环境变量 `COLORTERM=truecolor` +- **终端兼容性**:确保您的终端模拟器支持 24 位色(大多数现代终端如 iTerm2、Alacritty、Kitty、Windows Terminal 以及较新版本的 GNOME Terminal 均已支持) -如果没有真彩色支持,主题的颜色精度可能会降低或回落到最接近的 256 色近似值。 +如果没有真彩色支持,主题可能会出现色彩精度下降的情况,或者回退到最接近的 256 色近似值。 --- ## 内置主题 -opencode 带有几个内建主题。 +OpenCode 自带多个内置主题。 -| 名称 | 描述 | -| ---------------------- | ---------------------------------------------------------------------------- | -| `system` | 适应您所处的背景颜色 | -| `tokyonight` | Based on the [Tokyonight](https://github.com/folke/tokyonight.nvim) theme | -| `everforest` | Based on the [Everforest](https://github.com/sainnhe/everforest) theme | -| `ayu` | Based on the [Ayu](https://github.com/ayu-theme) dark theme | -| `catppuccin` | Based on the [Catppuccin](https://github.com/catppuccin) theme | -| `catppuccin-macchiato` | Based on the [Catppuccin](https://github.com/catppuccin) theme | -| `gruvbox` | Based on the [Gruvbox](https://github.com/morhetz/gruvbox) theme | -| `kanagawa` | Based on the [Kanagawa](https://github.com/rebelot/kanagawa.nvim) theme | -| `nord` | Based on the [Nord](https://github.com/nordtheme/nord) theme | -| `matrix` | 骇客风格黑底绿主题 | -| `one-dark` | Based on the [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark theme | +| 名称 | 描述 | +| ---------------------- | ------------------------------------------------------------------- | +| `system` | 自动适配终端的背景颜色 | +| `tokyonight` | 基于 [Tokyonight](https://github.com/folke/tokyonight.nvim) 主题 | +| `everforest` | 基于 [Everforest](https://github.com/sainnhe/everforest) 主题 | +| `ayu` | 基于 [Ayu](https://github.com/ayu-theme) 暗色主题 | +| `catppuccin` | 基于 [Catppuccin](https://github.com/catppuccin) 主题 | +| `catppuccin-macchiato` | 基于 [Catppuccin](https://github.com/catppuccin) 主题 | +| `gruvbox` | 基于 [Gruvbox](https://github.com/morhetz/gruvbox) 主题 | +| `kanagawa` | 基于 [Kanagawa](https://github.com/rebelot/kanagawa.nvim) 主题 | +| `nord` | 基于 [Nord](https://github.com/nordtheme/nord) 主题 | +| `matrix` | 黑客风格的黑底绿字主题 | +| `one-dark` | 基于 [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark 主题 | -此外,我们还在不断添加新主题。 +我们还在不断添加更多主题。 --- ## 系统主题 -`system` 主题旨在自动适应您的最终方案。与使用固定颜色的传统主题不同,_system_ 主题: +`system` 主题旨在自动适配您终端的配色方案。与使用固定颜色的传统主题不同,_system_ 主题具有以下特点: -- **生成灰度**:根据终端的背景颜色建立自定义灰度,确保最佳对比度。 -- **使用 ANSI 颜色**:使用标准 ANSI 颜色 (0-15) 进行语法突出显示和 UI 元素,尊重 Windows 的调色盘。 -- **保留默认设置**:使用 `none` 作为文字和背景颜色以保持本机的外观。 +- **生成灰度色阶**:根据终端的背景颜色创建自定义灰度色阶,确保最佳对比度。 +- **使用 ANSI 颜色**:利用标准 ANSI 颜色(0-15)进行语法高亮和 UI 元素渲染,遵循终端的调色板设置。 +- **保留终端默认值**:将文本和背景颜色设为 `none`,以保持终端的原生外观。 系统主题适合以下用户: -- 希望 opencode 与终端的外观相匹配 -- 使用自定义终端配色方案 -- 希望所有终端应用程序具有一致的外观 +- 希望 OpenCode 与终端的外观保持一致 +- 使用了自定义终端配色方案 +- 偏好所有终端应用程序拥有统一的视觉风格 --- ## 使用主题 -您可以通过使用 `/theme` 命令调出主题选择来选择主题。或者您可以在 [config](/docs/config) 中指定它。 +您可以通过 `/theme` 命令调出主题选择界面来选择主题,也可以在[配置](/docs/config)文件中直接指定。 ```json title="opencode.json" {3} { @@ -74,35 +74,35 @@ opencode 带有几个内建主题。 ## 自定义主题 -opencode 支持灵活的基于 JSON 的主题系统,允许用户轻松创建和自定义主题。 +OpenCode 支持灵活的基于 JSON 的主题系统,让用户可以轻松创建和自定义主题。 --- -### 优先级 +### 层级优先级 -主题按以下顺序从多个目录载入,其中后面的目录覆盖前面的目录: +主题按以下顺序从多个目录加载,后面的目录会覆盖前面的目录: -1. **内建主题** - 这些主题嵌入在二进制文件中 -2. **User config directory** - Defined in `~/.config/opencode/themes/*.json` or `$XDG_CONFIG_HOME/opencode/themes/*.json` -3. **Project root directory** - Defined in the `<project-root>/.opencode/themes/*.json` -4. **Current working directory** - Defined in `./.opencode/themes/*.json` +1. **内置主题** — 嵌入在二进制文件中 +2. **用户配置目录** — 定义在 `~/.config/opencode/themes/*.json` 或 `$XDG_CONFIG_HOME/opencode/themes/*.json` +3. **项目根目录** — 定义在 `<project-root>/.opencode/themes/*.json` +4. **当前工作目录** — 定义在 `./.opencode/themes/*.json` -如果多个目录包含同名主题,则将使用优先顺序较高的目录中的主题。 +如果多个目录包含同名主题,将使用优先级较高的目录中的主题。 --- ### 创建主题 -要创建自定义主题,请在主题目录中创建 JSON 档案。 +要创建自定义主题,请在上述任一主题目录中创建一个 JSON 文件。 -对于用户范围的主题: +创建用户级主题: ```bash no-frame mkdir -p ~/.config/opencode/themes vim ~/.config/opencode/themes/my-theme.json ``` -以及针对特定项目的主题。 +创建项目级主题: ```bash no-frame mkdir -p .opencode/themes @@ -113,34 +113,34 @@ vim .opencode/themes/my-theme.json ### JSON 格式 -主题使用灵活的 JSON 格式,支持: +主题使用灵活的 JSON 格式,支持以下特性: -- **十六进位制造颜色**: `"#ffffff"` -- **ANSI 颜色**: `3` (0-255) -- **颜色参考**: `"primary"` 或自定义定义 -- **深色/light 变体**: `{"dark": "#000", "light": "#fff"}` -- **无颜色**: `"none"` - 使用终端的默认颜色或透明 +- **十六进制颜色**:`"#ffffff"` +- **ANSI 颜色**:`3`(0-255) +- **颜色引用**:`"primary"` 或自定义定义的颜色名 +- **深色/浅色变体**:`{"dark": "#000", "light": "#fff"}` +- **无颜色**:`"none"` — 使用终端的默认颜色或透明背景 --- ### 颜色定义 -`defs` 部分是可选的,它允许您定义可在主题中引用的可重用颜色。 +`defs` 部分是可选的,它允许您定义可在主题中重复引用的可复用颜色。 --- ### 终端默认值 -特殊值 `"none"` 可用于任何颜色以继承默认的默认颜色。这对于建立与终端方案无缝的融合主题特别有用: +特殊值 `"none"` 可用于任何颜色属性,以继承终端的默认颜色。这在创建需要与终端配色方案无缝融合的主题时特别有用: -- `"text": "none"` - 使用遥控器的预设前景色 -- `"background": "none"` - 使用桌面的背景颜色 +- `"text": "none"` — 使用终端的默认前景色 +- `"background": "none"` — 使用终端的默认背景色 --- -### 例子 +### 示例 -以下是自定义主题的示例: +以下是一个自定义主题的完整示例: ```json title="my-theme.json" { diff --git a/packages/web/src/content/docs/zh-cn/tools.mdx b/packages/web/src/content/docs/zh-cn/tools.mdx index 82aa3b8a3..529292189 100644 --- a/packages/web/src/content/docs/zh-cn/tools.mdx +++ b/packages/web/src/content/docs/zh-cn/tools.mdx @@ -3,15 +3,15 @@ title: 工具 description: 管理 LLM 可以使用的工具。 --- -Tools allow the LLM to perform actions in your codebase. opencode comes with a set of built-in tools, but you can extend it with [custom tools](/docs/custom-tools) or [MCP servers](/docs/mcp-servers). +工具允许 LLM 在您的代码库中执行操作。OpenCode 自带一组内置工具,您也可以通过[自定义工具](/docs/custom-tools)或 [MCP 服务器](/docs/mcp-servers)来扩展它。 -默认情况下,所有工具都是**启用**并且不需要执行权限。您可以交叉[permissions](/docs/permissions) 控制工具行为。 +默认情况下,所有工具都是**启用**的,且无需权限即可运行。您可以通过[权限](/docs/permissions)来控制工具的行为。 --- ## 配置 -使用 `permission` 栏位控制工具行为。您可以允许、拒绝或要求批准每个工具。 +使用 `permission` 字段来控制工具行为。您可以对每个工具设置允许、拒绝或需要审批。 ```json title="opencode.json" { @@ -24,7 +24,7 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -您还可以使用通配符同时控制多个工具。例如,要求 MCP 服务器批准所有工具: +您还可以使用通配符同时控制多个工具。例如,要求某个 MCP 服务器的所有工具都需要审批: ```json title="opencode.json" { @@ -35,19 +35,19 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -[了解更多](/docs/permissions)关于配置许可权。 +[了解更多](/docs/permissions)关于配置权限的内容。 --- -## 內建工具 +## 内置工具 -以下是 opencode 中可用的所有内置工具。 +以下是 OpenCode 中所有可用的内置工具。 --- ### bash -在项目环境中执行shell命令。 +在项目环境中执行 shell 命令。 ```json title="opencode.json" {4} { @@ -58,13 +58,13 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -这个工具允许 LLM 运行终端命令,例如:`npm install`, `git status`,或者其他任何终端命令。 +该工具允许 LLM 运行终端命令,例如 `npm install`、`git status` 或其他任何 shell 命令。 --- ### edit -使用精确的字符串替换来修改现有文件。 +通过精确的字符串替换来修改现有文件。 ```json title="opencode.json" {4} { @@ -75,13 +75,13 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -该工具通过替换完全匹配的文本来对文件进行精确编辑。这是 LLM 修改代码的主要方式。 +该工具通过替换精确匹配的文本来对文件进行编辑。这是 LLM 修改代码的主要方式。 --- ### write -建立新文件或覆盖现有文件。 +创建新文件或覆盖现有文件。 ```json title="opencode.json" {4} { @@ -92,10 +92,10 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -使用此功能可允许 LLM 创建新文件。如果文件已存在,则会覆盖现有文件。 +使用此工具允许 LLM 创建新文件。如果文件已存在,则会覆盖现有文件。 :::note -`写入`工具由`编辑`权限控制,涵盖所有文件修改(`编辑`、`写入`、`修补`、`多重编辑`)。 +`write` 工具由 `edit` 权限控制,该权限涵盖所有文件修改操作(`edit`、`write`、`patch`、`multiedit`)。 ::: --- @@ -113,7 +113,7 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -该工具读取文件并返回其内容。它支持读取大型文件中的特定行范围。 +该工具读取文件并返回其内容。它支持对大文件读取指定行范围。 --- @@ -130,7 +130,7 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -快速搜索代码库中的内容。支持完整的正则表达式语法和文件模式过滤。 +在代码库中快速搜索内容。支持完整的正则表达式语法和文件模式过滤。 --- @@ -147,13 +147,13 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -使用类似 **/\*.js 或 src/**/\*.ts 的通配符模式搜索文件。返回按修改时间排序的匹配文件路径。 +使用 `**/*.js` 或 `src/**/*.ts` 等 glob 模式搜索文件。返回按修改时间排序的匹配文件路径。 --- ### list -列出给定路径中的文件和目录。 +列出指定路径下的文件和目录。 ```json title="opencode.json" {4} { @@ -164,16 +164,16 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -此工具用于列出目录内容。它接受通配符模式来筛选结果。 +该工具用于列出目录内容。它接受 glob 模式来过滤结果。 --- ### lsp(实验性) -与已配置的 LSP 服务器交互,以获取代码智能功能,例如定义、引用、悬停信息和调用层次结构。 +与已配置的 LSP 服务器交互,获取代码智能功能,如定义跳转、引用查找、悬停信息和调用层次结构。 :::note -只有当 OPENCODE_EXPERIMENTAL_LSP_TOOL=true(或 OPENCODE_EXPERIMENTAL=true)时,此工具才可用。 +该工具仅在设置 `OPENCODE_EXPERIMENTAL_LSP_TOOL=true`(或 `OPENCODE_EXPERIMENTAL=true`)时可用。 ::: ```json title="opencode.json" {4} @@ -187,7 +187,7 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s 支持的操作包括 `goToDefinition`、`findReferences`、`hover`、`documentSymbol`、`workspaceSymbol`、`goToImplementation`、`prepareCallHierarchy`、`incomingCalls` 和 `outgoingCalls`。 -要配置哪些 LSP 服务器可用于您的项目,请参阅 [LSP Servers](/docs/lsp). +要配置项目可用的 LSP 服务器,请参阅 [LSP 服务器](/docs/lsp)。 --- @@ -204,17 +204,17 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -此工具可将补丁文件应用到您的代码库。它可用于应用来自各种来源的差异和补丁。 +该工具将补丁文件应用到您的代码库中。适用于应用来自各种来源的 diff 和补丁。 :::note -`修补`工具由`编辑`权限控制,涵盖所有文件修改(`编辑`、`写入`、`修补`、`多重编辑`)。 +`patch` 工具由 `edit` 权限控制,该权限涵盖所有文件修改操作(`edit`、`write`、`patch`、`multiedit`)。 ::: --- ### skill -加载[技能](/docs/skills)(`SKILL.md` 文件)并在对话中返回其内容。 +加载一个[技能](/docs/skills)(即 `SKILL.md` 文件)并在对话中返回其内容。 ```json title="opencode.json" {4} { @@ -229,7 +229,7 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s ### todowrite -在编码会话过程中管理待办事项列表。 +在编码会话中管理待办事项列表。 ```json title="opencode.json" {4} { @@ -240,17 +240,17 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -创建和更新任务列表,以跟踪复杂操作的进度。LLM 利用此功能来组织多步骤任务。 +创建和更新任务列表以跟踪复杂操作的进度。LLM 使用此工具来组织多步骤任务。 :::note -此工具默认情况下对子代理禁用,但您可以手动启用它。 [了解更多](/docs/agents/#permissions) +该工具默认对子代理禁用,但您可以手动启用。[了解更多](/docs/agents/#permissions) ::: --- ### todoread -阅读现有的待办事项清单。 +读取现有的待办事项列表。 ```json title="opencode.json" {4} { @@ -261,10 +261,10 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -读取当前待办事项列表状态。LLM 使用此信息来跟踪哪些任务处于待处理状态或已完成状态。 +读取当前待办事项列表的状态。LLM 使用此工具来跟踪哪些任务待处理、哪些已完成。 :::note -此工具默认情况下对子代理禁用,但您可以手动启用它。 [了解更多](/docs/agents/#permissions) +该工具默认对子代理禁用,但您可以手动启用。[了解更多](/docs/agents/#permissions) ::: --- @@ -282,16 +282,16 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s } ``` -允许LLM获取并读取网页。可用于查找文档或研究在线资源。 +允许 LLM 获取并读取网页内容。适用于查阅文档或研究在线资源。 --- ### websearch -在网络上搜索资料。 +在网络上搜索信息。 :::note -只有在使用 OpenCode 提供程序时,或者当 OPENCODE_ENABLE_EXA 环境变量被设置为任何真值(例如 true 或 1)时,此工具才可用。 +该工具仅在使用 OpenCode 提供商时,或当 `OPENCODE_ENABLE_EXA` 环境变量设置为任意真值(例如 `true` 或 `1`)时可用。 在启动 OpenCode 时启用: @@ -310,12 +310,12 @@ OPENCODE_ENABLE_EXA=1 opencode } ``` -利用 Exa AI 进行网络搜索,查找相关信息。可用于研究特定主题、了解时事新闻或收集超出训练数据范围的信息。 +使用 Exa AI 进行网络搜索以查找相关信息。适用于研究主题、了解时事动态或获取超出训练数据截止日期的信息。 -无需 API 密钥——该工具无需身份验证即可直接连接到 Exa AI 托管的 MCP 服务。 +无需 API 密钥——该工具无需身份验证即可直接连接到 Exa AI 的托管 MCP 服务。 :::tip -当您需要查找信息时,请使用`网页搜索`;当您需要从特定 URL 检索内容时,请使用`网页获取`。 +当您需要查找信息(发现)时使用 `websearch`,当您需要从特定 URL 获取内容(检索)时使用 `webfetch`。 ::: --- @@ -333,42 +333,42 @@ OPENCODE_ENABLE_EXA=1 opencode } ``` -该工具允许 LLM 在执行任务期间向用户提问。它在以下方面很有用: +该工具允许 LLM 在执行任务期间向用户提问。适用于以下场景: - 收集用户偏好或需求 -- 澄清含糊不清的指示 -- 就实施方案做出决定 -- 提供关于选择下一步方向的选项 +- 澄清模糊的指令 +- 获取实现方案的决策 +- 提供方向选择的选项 -每个问题都包含标题、问题正文和选项列表。用户可以从提供的选项中选择答案,也可以输入自定义答案。如果有多个问题,用户可以在提交所有答案之前在不同问题之间切换。 +每个问题包含标题、问题正文和选项列表。用户可以从提供的选项中选择,也可以输入自定义答案。当有多个问题时,用户可以在提交所有答案之前在各问题之间切换浏览。 --- ## 自定义工具 -自定义工具允许您定义LLM可以调用的自定义函数。这些函数在您的配置文件中定义,并且可以执行任意代码。 +自定义工具允许您定义 LLM 可以调用的自定义函数。这些函数在您的配置文件中定义,可以执行任意代码。 -[了解更多](/docs/custom-tools)关于创建自定义工具。 +[了解更多](/docs/custom-tools)关于创建自定义工具的内容。 --- ## MCP 服务器 -MCP(模型上下文协议)服务器允许您集成外部工具和服务。这包括数据库访问、API 集成和第三方服务。 +MCP(Model Context Protocol)服务器允许您集成外部工具和服务,包括数据库访问、API 集成和第三方服务。 -[了解更多](/docs/mcp-servers)关于配置MCP服务器。 +[了解更多](/docs/mcp-servers)关于配置 MCP 服务器的内容。 --- -## 内部规则 +## 内部机制 -在内部,`grep`、 `通配符` 和 `罗列` 等工具底层都使用了 ripgrep。默认情况下,ripgrep 会遵循 .gitignore 文件中的规则,这意味着 .gitignore 文件中列出的文件和目录将被排除在搜索和列表之外。 +在内部,`grep`、`glob` 和 `list` 等工具底层使用 [ripgrep](https://github.com/BurntSushi/ripgrep)。默认情况下,ripgrep 遵循 `.gitignore` 中的模式,这意味着 `.gitignore` 中列出的文件和目录将被排除在搜索和列表结果之外。 --- ### 忽略模式 -为了使工具不跳过那些通常会被忽略的文件,请在项目根目录下创建一个 `.ignore` 文件。该文件内定义的目录可以不会被跳过。 +要包含通常会被忽略的文件,请在项目根目录下创建一个 `.ignore` 文件。该文件可以显式允许某些路径。 ```text title=".ignore" !node_modules/ @@ -376,4 +376,4 @@ MCP(模型上下文协议)服务器允许您集成外部工具和服务。� !build/ ``` -例如,这个 `.ignore` 文件允许 ripgrep 在 `node_modules/`、`dist/` 和 `build/` 目录中搜索,即使它们已在 `.gitignore` 中列出。 +例如,这个 `.ignore` 文件允许 ripgrep 在 `node_modules/`、`dist/` 和 `build/` 目录中进行搜索,即使它们已在 `.gitignore` 中列出。 diff --git a/packages/web/src/content/docs/zh-cn/troubleshooting.mdx b/packages/web/src/content/docs/zh-cn/troubleshooting.mdx index 5aa2764d9..3f22cbf89 100644 --- a/packages/web/src/content/docs/zh-cn/troubleshooting.mdx +++ b/packages/web/src/content/docs/zh-cn/troubleshooting.mdx @@ -1,67 +1,67 @@ --- title: 故障排除 -description: 常见问题以及如何解决它们。 +description: 常见问题及其解决方法。 --- -要排除 opencode 的问题,请首先检查其存储在磁盘上的日志和本地数据。 +要调试 OpenCode 的问题,请先检查其存储在磁盘上的日志和本地数据。 --- ## 日志 -日志文件写入: +日志文件写入位置: - **macOS/Linux**: `~/.local/share/opencode/log/` -- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.local\share\opencode\log` +- **Windows**: 按 `WIN+R` 并粘贴 `%USERPROFILE%\.local\share\opencode\log` -日志档案以时间命名(例如`2025-01-09T123456.log`),并保留最近10个日志档案。 +日志文件以时间戳命名(例如 `2025-01-09T123456.log`),并保留最近的 10 个日志文件。 -You can set the log level with the `--log-level` command-line option to get more detailed debug information. For example, `opencode --log-level DEBUG`. +你可以通过 `--log-level` 命令行选项设置日志级别以获取更详细的调试信息。例如:`opencode --log-level DEBUG`。 --- ## 存储 -opencode程序将会话数据和其他应用程序数据存储在磁碟上: +OpenCode 将会话数据和其他应用数据存储在磁盘上: - **macOS/Linux**: `~/.local/share/opencode/` -- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.local\share\opencode` +- **Windows**: 按 `WIN+R` 并粘贴 `%USERPROFILE%\.local\share\opencode` 该目录包含: -- `auth.json` - 身份验证凭据,例如 API 密钥、OAuth Tokens +- `auth.json` - 身份验证数据,如 API 密钥、OAuth Token - `log/` - 应用日志 -- `project/` - 项目特定数据,例如会话和消息数据 - - 如果项目位于 Git 仓库中,则存储在 `./<project-slug>/storage/` 中 - - 如果不是 Git 存储库,则存储在 `./global/storage/` 中 +- `project/` - 项目特定数据,如会话和消息数据 + - 如果项目位于 Git 仓库中,则存储在 `./<project-slug>/storage/` + - 如果不是 Git 仓库,则存储在 `./global/storage/` --- -## 桌面应用程序 +## 桌面应用 -opencode Desktop runs a local opencode server (the `opencode-cli` sidecar) in the background. Most issues are caused by a misbehaving plugin, a corrupted cache, or a bad server setting. +OpenCode Desktop 会在后台运行一个本地 OpenCode 服务器(即 `opencode-cli` 附属进程)。大多数问题是由插件异常、缓存损坏或错误的服务器设置引起的。 ### 快速检查 -- 完全退出并重新启动应用程序。 -- 如果应用程序显示错误界面,请单击“**重新启动**”并复制错误详细信息。 -- macOS only: `OpenCode` menu -> **Reload Webview** (helps if the UI is blank/frozen). +- 完全退出并重新启动应用。 +- 如果应用显示错误页面,请点击**重新启动**并复制错误详情。 +- 仅限 macOS:`OpenCode` 菜单 -> **Reload Webview**(当 UI 空白或冻结时有效)。 --- ### 禁用插件 -如果桌面应用程序在启动时崩溃、挂起或行为异常,请首先禁用插件。 +如果桌面应用在启动时崩溃、卡住或行为异常,请先禁用插件。 -#### 检查全域性配置 +#### 检查全局配置 -开启全域性文件并查询`plugin`键。 +打开你的全局配置文件,查找 `plugin` 键。 -- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (or `~/.config/opencode/opencode.json`) -- **macOS/Linux** (older installs): `~/.local/share/opencode/opencode.jsonc` -- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.config\opencode\opencode.jsonc` +- **macOS/Linux**: `~/.config/opencode/opencode.jsonc`(或 `~/.config/opencode/opencode.json`) +- **macOS/Linux**(旧版安装): `~/.local/share/opencode/opencode.jsonc` +- **Windows**: 按 `WIN+R` 并粘贴 `%USERPROFILE%\.config\opencode\opencode.jsonc` -如果您配置了插件,请通过删除密钥或将其设置为空数组来暂时禁用它们: +如果你配置了插件,请通过移除该键或将其设置为空数组来临时禁用它们: ```jsonc { @@ -72,118 +72,118 @@ opencode Desktop runs a local opencode server (the `opencode-cli` sidecar) in th #### 检查插件目录 -opencode 还可以从磁碟加载本地外挂。暂时将它们移开(或重新命名资料夹)并重新启动桌面应用程序: +OpenCode 还可以从磁盘加载本地插件。临时将这些插件移走(或重命名文件夹),然后重新启动桌面应用: -- **全域性插件** +- **全局插件** - **macOS/Linux**: `~/.config/opencode/plugins/` - - **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.config\opencode\plugins` -- **项目插件**(仅当您使用每个项目配置时) + - **Windows**: 按 `WIN+R` 并粘贴 `%USERPROFILE%\.config\opencode\plugins` +- **项目插件**(仅当你使用了项目级配置时) - `<your-project>/.opencode/plugins/` -如果应用程序再次开始工作,请一次重新启用一个插件,以找出导致问题的插件。 +如果应用恢复正常,请逐个重新启用插件,找出导致问题的那个。 --- ### 清除缓存 -如果取消外挂没有帮助(或者外挂安装被卡住),请清除缓存,方便opencode可以重建它。 +如果禁用插件没有帮助(或插件安装卡住了),请清除缓存以便 OpenCode 重新构建。 -1. 完全退出 opencode 桌面。 +1. 完全退出 OpenCode Desktop。 2. 删除缓存目录: -- **macOS**: Finder -> `Cmd+Shift+G` -> paste `~/.cache/opencode` -- **Linux**: delete `~/.cache/opencode` (or run `rm -rf ~/.cache/opencode`) -- **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.cache\opencode` +- **macOS**: Finder -> `Cmd+Shift+G` -> 粘贴 `~/.cache/opencode` +- **Linux**: 删除 `~/.cache/opencode`(或运行 `rm -rf ~/.cache/opencode`) +- **Windows**: 按 `WIN+R` 并粘贴 `%USERPROFILE%\.cache\opencode` -3. 重新启动 opencode 桌面。 +3. 重新启动 OpenCode Desktop。 --- ### 修复服务器连接问题 -opencode Desktop 可以启动自己的本地服务器(默认配置)或连线到您的服务器 URL。 +OpenCode Desktop 可以启动自己的本地服务器(默认行为),也可以连接到你配置的服务器 URL。 -如果您看到**“连线失败”**对话中断(或者应用程序永远无法穿透启动萤幕),请检查自定义服务器URL。 +如果你看到**"Connection Failed"**对话框(或应用始终停留在启动画面),请检查自定义服务器 URL。 -#### 清除桌面桌面服务器 URL +#### 清除桌面默认服务器 URL -在主屏幕中,单击服务器名称(带有状态点)以打开服务器选择器。在“**默认服务器**”部分中,单击“**清除**”。 +在主页面上,点击服务器名称(带有状态指示点)以打开服务器选择器。在**默认服务器**部分,点击**清除**。 -#### 从配置中删除 `server.port` / `server.hostname` +#### 从配置中移除 `server.port` / `server.hostname` -If your `opencode.json(c)` contains a `server` section, temporarily remove it and restart the desktop app. +如果你的 `opencode.json(c)` 包含 `server` 部分,请临时移除该部分并重新启动桌面应用。 #### 检查环境变量 -如果您在环境中设置了 `OPENCODE_PORT`,桌面应用程序将尝试将交换机用于本地服务器。 +如果你在环境中设置了 `OPENCODE_PORT`,桌面应用将尝试使用该端口作为本地服务器端口。 -- 取消设置`OPENCODE_PORT`(或选择一个休闲摊)并重新启动。 +- 取消设置 `OPENCODE_PORT`(或选择一个空闲端口)并重新启动。 --- -### Linux:Wayland / X11 问题 +### Linux: Wayland / X11 问题 -在 Linux 上,某些 Wayland 设置可能会导致空白视窗或合成器错误。 +在 Linux 上,某些 Wayland 设置可能会导致窗口空白或合成器错误。 -- 如果您在 Wayland 程序上并且应用的是 blank/crashing,请尝试使用 `OC_ALLOW_WAYLAND=1` 启动。 -- 如果这让事情变得更糟糕,请完成其删除并尝试在 X11 会话下启动。 +- 如果你使用 Wayland 且应用出现空白或崩溃,请尝试使用 `OC_ALLOW_WAYLAND=1` 启动。 +- 如果情况变得更糟,请移除该设置并尝试在 X11 会话下启动。 --- -### Windows:WebView2执行时 +### Windows: WebView2 运行时 -在 Windows 上,opencode 桌面需要 Microsoft Edge **WebView2 执行时**。如果应用程序打开为空白视窗或无法启动,请 install/update WebView2 并重试。 +在 Windows 上,OpenCode Desktop 需要 Microsoft Edge **WebView2 Runtime**。如果应用打开后是空白窗口或无法启动,请安装或更新 WebView2 后重试。 --- -### Windows:一般问题 +### Windows: 常见性能问题 -If you're experiencing slow performance, file access issues, or terminal problems on Windows, try using [WSL (Windows Subsystem for Linux)](/docs/windows-wsl). WSL provides a Linux environment that works more seamlessly with opencode's features. +如果你在 Windows 上遇到性能缓慢、文件访问问题或终端问题,请尝试使用 [WSL (Windows Subsystem for Linux)](/docs/windows-wsl)。WSL 提供了一个 Linux 环境,能更好地与 OpenCode 的功能兼容。 --- ### 通知不显示 -opencode 桌面仅在以下情况下显示系统通知: +OpenCode Desktop 仅在以下情况下显示系统通知: -- 在您的作业系统中设置为 opencode 启用了通知,并且 -- 应用程序视窗未聚焦。 +- 在操作系统设置中已为 OpenCode 启用通知,且 +- 应用窗口未处于焦点状态。 --- -### 重置桌面应用程序储存(最后的手段) +### 重置桌面应用存储(最后手段) -如果应用程序无法并且启动您无法从 UI 内部清除设置,请重置桌面应用程序的存储状态。 +如果应用无法启动且你无法从 UI 内部清除设置,请重置桌面应用的保存状态。 -1. 退出 opencode 桌面。 -2. 查询并删除这些文件(它们位于 opencode 桌面应用程序数据目录中): +1. 退出 OpenCode Desktop。 +2. 找到并删除以下文件(它们位于 OpenCode Desktop 应用数据目录中): -- `opencode.settings.dat` (desktop default server URL) -- `opencode.global.dat` and `opencode.workspace.*.dat` (UI state like recent servers/projects) +- `opencode.settings.dat`(桌面默认服务器 URL) +- `opencode.global.dat` 和 `opencode.workspace.*.dat`(UI 状态,如最近的服务器/项目) -快速找到目录: +快速找到该目录: -- **macOS**:Finder -> `Cmd+Shift+G` -> `~/Library/Application Support`(然后搜索上面的档名) -- **Linux**:在`~/.local/share`下搜索上述档名 -- **Windows**:按 `WIN+R` -> `%APPDATA%` (然后搜索上面的档名) +- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support`(然后搜索上述文件名) +- **Linux**: 在 `~/.local/share` 下搜索上述文件名 +- **Windows**: 按 `WIN+R` -> `%APPDATA%`(然后搜索上述文件名) --- -## 寻求帮助 +## 获取帮助 -如果您遇到 opencode 问题: +如果你遇到 OpenCode 的问题: -1. **报告 GitHub** 上的问题 +1. **在 GitHub 上报告问题** - 报告错误或请求功能的最佳方式是利用我们的 GitHub 存储库: + 报告 Bug 或请求功能的最佳方式是通过我们的 GitHub 仓库: [**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues) - 在建立新问题之前,请搜索现有问题以查看您的问题是否已被报告。 + 在创建新 Issue 之前,请先搜索已有的 Issue,看看你的问题是否已被报告。 -2. **加入我们的不和谐** +2. **加入我们的 Discord** - 获得实时帮助和社群讨论,请加入我们的Discord服务器: + 如需实时帮助和社区讨论,请加入我们的 Discord 服务器: [**opencode.ai/discord**](https://opencode.ai/discord) @@ -191,35 +191,34 @@ opencode 桌面仅在以下情况下显示系统通知: ## 常见问题 -以下是一些常见问题以及解决方法。 +以下是一些常见问题及其解决方法。 --- -### opencode 无法启动 +### OpenCode 无法启动 -1. 检查日志中是否有错误消息 -2. 尝试使用 `--print-logs` 执行以查看终端中的输出 -3. Ensure you have the latest version with `opencode upgrade` +1. 检查日志中的错误消息 +2. 尝试使用 `--print-logs` 运行以在终端中查看输出 +3. 使用 `opencode upgrade` 确保你使用的是最新版本 --- ### 身份验证问题 -1. 尝试使用 TUI 中的 `/connect` 命令重新进行身份验证 -2. 检查您的API 密钥是否有效 -3. 保证您的网路允许连线到达辉煌的API +1. 尝试在 TUI 中使用 `/connect` 命令重新进行身份验证 +2. 检查你的 API 密钥是否有效 +3. 确保你的网络允许连接到提供商的 API --- ### 模型不可用 -1. 检查您是否已通过提供商的身份验证 +1. 检查你是否已通过提供商的身份验证 2. 验证配置中的模型名称是否正确 3. 某些模型可能需要特定的访问权限或订阅 -如果您遇到 `ProviderModelNotFoundError` 您很可能是错误的 -在某处引用模型。 -模型应该像这样引用:`<providerId>/<modelId>` +如果你遇到 `ProviderModelNotFoundError`,很可能是在某处错误地引用了模型。 +模型应按如下方式引用:`<providerId>/<modelId>` 示例: @@ -227,54 +226,54 @@ opencode 桌面仅在以下情况下显示系统通知: - `openrouter/google/gemini-2.5-flash` - `opencode/kimi-k2` -To figure out what models you have access to, run `opencode models` +要查看你有权访问哪些模型,请运行 `opencode models` --- -### 提供商初始化错误 +### ProviderInitError -如果遇到 ProviderInitError,您的配置可能无效或损坏。 +如果你遇到 ProviderInitError,很可能是配置无效或已损坏。 -要解决这个问题: +要解决此问题: -1. 首先,按照[提供商指南](/docs/providers) 验证您的事业是否已正确设置 -2. 如果问题仍然存在,请尝试清除储存的配置: +1. 首先,按照[提供商指南](/docs/providers)验证你的提供商是否已正确设置 +2. 如果问题仍然存在,请尝试清除已存储的配置: ```bash rm -rf ~/.local/share/opencode ``` - On Windows, press `WIN+R` and delete: `%USERPROFILE%\.local\share\opencode` + 在 Windows 上,按 `WIN+R` 并删除:`%USERPROFILE%\.local\share\opencode` -3. 使用 TUI 中的 `/connect` 命令指示您的企业重新进行身份验证。 +3. 在 TUI 中使用 `/connect` 命令重新与提供商进行身份验证。 --- -### AI_API_CallError 和提供包问题 +### AI_APICallError 和提供商包问题 -如果您遇到 API 呼叫错误,这可能是由于过去提供包造成的。 opencode 根据需要动态安装提供包(OpenAI、Anthropic、Google 等)将其缓存放在本地。 +如果你遇到 API 调用错误,可能是由于提供商包过期导致的。OpenCode 会根据需要动态安装提供商包(OpenAI、Anthropic、Google 等)并将它们缓存到本地。 -要解决provider 包问题: +要解决提供商包问题: -1. 清除provider 包缓存: +1. 清除提供商包缓存: ```bash rm -rf ~/.cache/opencode ``` - On Windows, press `WIN+R` and delete: `%USERPROFILE%\.cache\opencode` + 在 Windows 上,按 `WIN+R` 并删除:`%USERPROFILE%\.cache\opencode` -2. 重新启动 opencode 以重新安装最新的提供包 +2. 重新启动 OpenCode 以重新安装最新的提供商包 -这将需要 opencode 下载最新版本的提供包,这通常可以解决模型参数和 API 更改的兼容性问题。 +这将强制 OpenCode 下载最新版本的提供商包,通常可以解决模型参数和 API 变更带来的兼容性问题。 --- -### 复制/粘贴在 Linux 上不可用 +### 在 Linux 上复制/粘贴不可用 -Linux 用户需要安装以下剪贴簿实用程序之一才能使 copy/paste 功能正常工作: +Linux 用户需要安装以下剪贴板工具之一,复制/粘贴功能才能正常工作: -**对于X11系统:** +**对于 X11 系统:** ```bash apt install -y xclip @@ -282,7 +281,7 @@ apt install -y xclip apt install -y xsel ``` -** 对于 Wayland 系统:** +**对于 Wayland 系统:** ```bash apt install -y wl-clipboard @@ -297,4 +296,4 @@ Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & export DISPLAY=:99.0 ``` -opencode 将检测您是否正在使用 Wayland 并更喜欢 `wl-clipboard`,否则将尝试按以下顺序剪贴簿工具:`xclip` 和 `xsel`。 +OpenCode 会检测你是否正在使用 Wayland 并优先使用 `wl-clipboard`,否则将按以下顺序尝试查找剪贴板工具:`xclip` 和 `xsel`。 diff --git a/packages/web/src/content/docs/zh-cn/tui.mdx b/packages/web/src/content/docs/zh-cn/tui.mdx index abc5d0c1e..e34c088cb 100644 --- a/packages/web/src/content/docs/zh-cn/tui.mdx +++ b/packages/web/src/content/docs/zh-cn/tui.mdx @@ -1,25 +1,25 @@ --- title: TUI -description: 使用 opencode 终端用户界面。 +description: 使用 OpenCode 终端用户界面。 --- import { Tabs, TabItem } from "@astrojs/starlight/components" -opencode 提供交互式终端介面或 TUI,以便使用 LLM 处理您的专案。 +OpenCode 提供了一个交互式终端界面(TUI),用于配合 LLM 处理您的项目。 -执行opencode启动当前目录的TUI。 +运行 OpenCode 即可启动当前目录的 TUI。 ```bash opencode ``` -或者您可以为特定的工作目录启动它。 +或者您可以为指定的工作目录启动它。 ```bash opencode /path/to/project ``` -进入TUI后,您可以查看消息进行提示。 +进入 TUI 后,您可以输入消息进行提示。 ```text Give me a quick summary of the codebase. @@ -45,25 +45,25 @@ How is auth handled in @packages/functions/src/api/index.ts? ## Bash 命令 -以`!`开始一条消息以执行shell命令。 +以 `!` 开头的消息会作为 shell 命令执行。 ```bash frame="none" !ls -la ``` -命令的输出将作为工具结果添加到对话中。 +命令的输出会作为工具结果添加到对话中。 --- ## 命令 -使用 opencode TUI 时,您可以输入 `/` 后跟命令名称来快速执行操作。例如: +使用 OpenCode TUI 时,您可以输入 `/` 后跟命令名称来快速执行操作。例如: ```bash frame="none" /help ``` -大多数命令还是以使用 `ctrl+x` 作为主键的键系结,其中 `ctrl+x` 是默认主键。 [了解更多](/docs/keybinds)。 +大多数命令还支持以 `ctrl+x` 作为前导键的快捷键,其中 `ctrl+x` 是默认前导键。[了解更多](/docs/keybinds)。 以下是所有可用的斜杠命令: @@ -71,7 +71,7 @@ How is auth handled in @packages/functions/src/api/index.ts? ### connect -将提供商添加到 opencode。你可以从可用提供商中选择,并添加它们的 API 密钥。 +将提供商添加到 OpenCode。允许您从可用的提供商中选择并添加其 API 密钥。 ```bash frame="none" /connect @@ -81,85 +81,85 @@ How is auth handled in @packages/functions/src/api/index.ts? ### compact -压缩当前会话。_别名_: `/summarize` +压缩当前会话。_别名_:`/summarize` ```bash frame="none" /compact ``` -** 快捷键:** `ctrl+x c` +**快捷键:** `ctrl+x c` --- ### details -切换工具执行详细信息。 +切换工具执行详情的显示。 ```bash frame="none" /details ``` -** 快捷键:** `ctrl+x d` +**快捷键:** `ctrl+x d` --- ### editor -开启外部编辑器来编写消息。使用`EDITOR`环境变量中设定的编辑器。 [了解更多](#editor-setup)。 +打开外部编辑器来编写消息。使用 `EDITOR` 环境变量中设置的编辑器。[了解更多](#editor-setup)。 ```bash frame="none" /editor ``` -** 快捷键:** `ctrl+x e` +**快捷键:** `ctrl+x e` --- ### exit -退出opencode。 _别名_:`/quit`、`/q` +退出 OpenCode。_别名_:`/quit`、`/q` ```bash frame="none" /exit ``` -** 快捷键:** `ctrl+x q` +**快捷键:** `ctrl+x q` --- ### export -将当前对话汇出到 Markdown 并在默认编辑器中开启。使用 `EDITOR` 环境变数中设定的编辑器。 [了解更多](#editor-setup)。 +将当前对话导出为 Markdown 并在默认编辑器中打开。使用 `EDITOR` 环境变量中设置的编辑器。[了解更多](#editor-setup)。 ```bash frame="none" /export ``` -** 快捷键:** `ctrl+x x` +**快捷键:** `ctrl+x x` --- ### help -显示帮助对话方块。 +显示帮助对话框。 ```bash frame="none" /help ``` -** 快捷键:** `ctrl+x h` +**快捷键:** `ctrl+x h` --- ### init -Create or update `AGENTS.md` file. [Learn more](/docs/rules). +创建或更新 `AGENTS.md` 文件。[了解更多](/docs/rules)。 ```bash frame="none" /init ``` -** 快捷键:** `ctrl+x i` +**快捷键:** `ctrl+x i` --- @@ -171,83 +171,82 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). /models ``` -** 快捷键:** `ctrl+x m` +**快捷键:** `ctrl+x m` --- ### new -开始新的会话。 _别名_: `/clear` +开始新的会话。_别名_:`/clear` ```bash frame="none" /new ``` -** 快捷键:** `ctrl+x n` +**快捷键:** `ctrl+x n` --- ### redo -删除之前重做消除的讯息。仅在使用`/undo`后可用。 +重做之前撤销的消息。仅在使用 `/undo` 后可用。 :::tip -任何文件更改也将被恢复。 +所有文件更改也会被恢复。 ::: -在内部,这使用 Git 来管理文件更改。所以你的专案**需要 -是一个Git存储库**。 +在内部,这使用 Git 来管理文件更改。因此您的项目**需要是一个 Git 仓库**。 ```bash frame="none" /redo ``` -** 快捷键:** `ctrl+x r` +**快捷键:** `ctrl+x r` --- ### sessions -上市会话并在会话之间切换。 _别名_:`/resume`、`/continue` +列出会话并在会话之间切换。_别名_:`/resume`、`/continue` ```bash frame="none" /sessions ``` -** 快捷键:** `ctrl+x l` +**快捷键:** `ctrl+x l` --- ### share -共享当前会话。 [了解更多](/docs/share)。 +分享当前会话。[了解更多](/docs/share)。 ```bash frame="none" /share ``` -** 快捷键:** `ctrl+x s` +**快捷键:** `ctrl+x s` --- ### themes -列出可用的主题。 +列出可用主题。 ```bash frame="none" /theme ``` -** 快捷键:** `ctrl+x t` +**快捷键:** `ctrl+x t` --- ### thinking -切换对话中 thinking/reasoning 块的可视性。启用后,您可以看到支持扩展思考的模型的推理过程。 +切换对话中思考/推理块的可见性。启用后,您可以看到支持扩展思考的模型的推理过程。 :::note -该命令仅控制是否**显示** - 不启用或取消模型的推理功能。要切换实际推理功能,请使用 `ctrl+t` 回圈切换模型变体。 +此命令仅控制思考块是否**显示** — 它不会启用或禁用模型的推理能力。要切换实际的推理能力,请使用 `ctrl+t` 循环切换模型变体。 ::: ```bash frame="none" @@ -258,26 +257,25 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). ### undo -撤消对话中的最后一条消息。删除最近的用户消息、所有后续响应以及任何文件更改。 +撤销对话中的最后一条消息。移除最近的用户消息、所有后续响应以及所有文件更改。 :::tip -所做的任何文件更改也将被恢复。 +所做的任何文件更改也会被还原。 ::: -在内部,这使用 Git 来管理文件更改。所以你的专案**需要 -是一个Git存储库**。 +在内部,这使用 Git 来管理文件更改。因此您的项目**需要是一个 Git 仓库**。 ```bash frame="none" /undo ``` -** 快捷键:** `ctrl+x u` +**快捷键:** `ctrl+x u` --- ### unshare -取消共享当前会话。 [了解更多](/docs/share#un-sharing)。 +取消分享当前会话。[了解更多](/docs/share#un-sharing)。 ```bash frame="none" /unshare @@ -301,8 +299,8 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). export EDITOR="code --wait" ``` - 要使其永久存在,请将其添加到您的 shell 配置文件中; - `~/.bashrc`、`~/.zshrc` 等 + 要使其永久生效,请将其添加到您的 shell 配置文件中; + `~/.bashrc`、`~/.zshrc` 等。 </TabItem> @@ -315,8 +313,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). set EDITOR=code --wait ``` - 要使其永久化,请使用 **系统属性** > **环境 - 变量**。 + 要使其永久生效,请使用**系统属性** > **环境变量**。 </TabItem> @@ -329,33 +326,33 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). $env:EDITOR = "code --wait" ``` - 要使其永久化,请将其添加到您的 PowerShell 配置文件中。 + 要使其永久生效,请将其添加到您的 PowerShell 配置文件中。 </TabItem> </Tabs> -流行的编辑器选项包括: +常用的编辑器选项包括: - `code` - Visual Studio Code -- `cursor` - 游标 -- `windsurf` - 风帆冲浪 +- `cursor` - Cursor +- `windsurf` - Windsurf - `nvim` - Neovim 编辑器 - `vim` - Vim 编辑器 -- `nano` - 奈米编辑器 -- `notepad` - Windows 文章书 -- `subl` - 崇高文字 +- `nano` - Nano 编辑器 +- `notepad` - Notepad(Windows 记事本) +- `subl` - Sublime Text :::note -一些编辑器如 VS Code 需要以 `--wait` 标志启动。 +某些编辑器(如 VS Code)需要以 `--wait` 标志启动。 ::: -某些编辑器需要命令列参数才能在阻止模式下执行。 `--wait` 标志使编辑器程序阻塞直至关闭。 +某些编辑器需要命令行参数才能以阻塞模式运行。`--wait` 标志使编辑器进程阻塞直到关闭。 --- ## 配置 -您可以使用 opencode 配置文件自定义 TUI 行为。 +您可以通过 OpenCode 配置文件自定义 TUI 行为。 ```json title="opencode.json" { @@ -371,20 +368,20 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). ### 选项 -- `scroll_acceleration` - 启用 macOS 式滚动加速以实现平滑、自然的滚动。启用后,滚动速度会随着快速滚动滚动而增加,并在较慢的移动时保持精确。 **此设定优先于 `scroll_speed` 并在启用时覆盖它。 ** -- `scroll_speed` - 控制使用滚动控制器时 TUI 滚动的速度(简单:`1`)。默认为 `3`。 **注意:如果 `scroll_acceleration.enabled` 设置为 `true`,则忽略此设置。 ** +- `scroll_acceleration` - 启用 macOS 风格的滚动加速,实现平滑、自然的滚动体验。启用后,快速滚动时速度会增加,慢速移动时保持精确。**此设置优先于 `scroll_speed`,启用时会覆盖它。** +- `scroll_speed` - 控制使用滚动命令时 TUI 的滚动速度(最小值:`1`)。默认为 `3`。**注意:如果 `scroll_acceleration.enabled` 设置为 `true`,则此设置会被忽略。** --- ## 自定义 -您可以使用命令选项板(`ctrl+x h` 或 `/help`)自定义 TUI 查看的各个方面。这些设置在重新启动后仍然存在。 +您可以使用命令面板(`ctrl+x h` 或 `/help`)自定义 TUI 视图的各个方面。这些设置在重启后仍会保留。 --- -#### 用户名称显示 +#### 用户名显示 -切换您的用户名称是否出现在聊天消息中。通过以下方式访问: +切换您的用户名是否显示在聊天消息中。通过以下方式访问: -- 命令面板:搜索“用户名称”或“隐藏用户名称” -- 该设置会自动保留,放在 TUI 会话中被记住 +- 命令面板:搜索 "username" 或 "hide username" +- 该设置会自动保存,并在各个 TUI 会话中保持记忆 diff --git a/packages/web/src/content/docs/zh-cn/web.mdx b/packages/web/src/content/docs/zh-cn/web.mdx index e13540d1f..5b5a31653 100644 --- a/packages/web/src/content/docs/zh-cn/web.mdx +++ b/packages/web/src/content/docs/zh-cn/web.mdx @@ -1,39 +1,39 @@ --- title: Web -description: 在浏览器中使用opencode。 +description: 在浏览器中使用 OpenCode。 --- -opencode 可以在浏览器中作为 Web 应用程序执行,消耗终端可以提供同样强大的 AI 编码体验。 +OpenCode 可以作为 Web 应用在浏览器中运行,无需终端即可获得同样强大的 AI 编码体验。 - + -## 入门 +## 快速开始 -绕过执行以下命令启动 Web 简介: +运行以下命令启动 Web 界面: ```bash opencode web ``` -这将在 `127.0.0.1` 上启动一个具有随机可用端口的本地服务器,并自动在默认浏览器中开启 opencode。 +这会在 `127.0.0.1` 上启动一个本地服务器,使用随机可用端口,并自动在默认浏览器中打开 OpenCode。 :::caution -如果未设置`OPENCODE_SERVER_PASSWORD`,服务器将不安全。这对于本地使用来说很好,但应该针对网路访问进行设置。 +如果未设置 `OPENCODE_SERVER_PASSWORD`,服务器将没有安全保护。本地使用没有问题,但在网络访问时应当设置密码。 ::: :::tip[Windows 用户] -For the best experience, run `opencode web` from [WSL](/docs/windows-wsl) rather than PowerShell. This ensures proper file system access and terminal integration. +为获得最佳体验,建议从 [WSL](/docs/windows-wsl) 而非 PowerShell 运行 `opencode web`。这可以确保正确的文件系统访问和终端集成。 ::: --- ## 配置 -您可以使用命令行标志或在[config file](/docs/config).conf 中配置Web服务器。 +你可以通过命令行标志或[配置文件](/docs/config)来配置 Web 服务器。 ### 端口 -默认情况下,opencode 选择一个可用的端口。您可以指定一个端口: +默认情况下,OpenCode 会选择一个可用端口。你也可以指定端口: ```bash opencode web --port 4096 @@ -41,13 +41,13 @@ opencode web --port 4096 ### 主机名 -默认情况下,服务器绑定到`127.0.0.1`(仅限本地主机)。要使opencode在您的网路上可访问: +默认情况下,服务器绑定到 `127.0.0.1`(仅限本地访问)。要使 OpenCode 在网络中可访问: ```bash opencode web --hostname 0.0.0.0 ``` -使用`0.0.0.0`时,opencode将显示本地地址和网络地址: +使用 `0.0.0.0` 时,OpenCode 会同时显示本地地址和网络地址: ``` Local access: http://localhost:4096 @@ -56,15 +56,15 @@ opencode web --hostname 0.0.0.0 ### mDNS 发现 -启用 mDNS 使您的服务器在本地网上可以发现: +启用 mDNS 可以让你的服务器在本地网络中被自动发现: ```bash opencode web --mdns ``` -This automatically sets the hostname to `0.0.0.0` and advertises the server as `opencode.local`. +这会自动将主机名设置为 `0.0.0.0`,并将服务器广播为 `opencode.local`。 -您可以自定义 mDNS 域名以在同一网路上执行多个示例: +你可以自定义 mDNS 域名,以便在同一网络中运行多个实例: ```bash opencode web --mdns --mdns-domain myproject.local @@ -72,61 +72,61 @@ opencode web --mdns --mdns-domain myproject.local ### CORS -允许CORS使用其他域(对于自定义前缀有用): +要为 CORS 添加额外的允许域名(适用于自定义前端): ```bash opencode web --cors https://example.com ``` -### 验证 +### 身份验证 -要保护访问,请使用 `OPENCODE_SERVER_PASSWORD` 环境变量设置密码: +要保护服务器访问,可以通过 `OPENCODE_SERVER_PASSWORD` 环境变量设置密码: ```bash OPENCODE_SERVER_PASSWORD=secret opencode web ``` -The username defaults to `opencode` but can be changed with `OPENCODE_SERVER_USERNAME`. +用户名默认为 `opencode`,可以通过 `OPENCODE_SERVER_USERNAME` 进行更改。 --- -## 使用web界面 +## 使用 Web 界面 -启动后,web界面将提供对您的 opencode 会话的访问。 +启动后,Web 界面提供对 OpenCode 会话的访问。 ### 会话 -从主页查看和管理您的会话。您可以查看活动会话并开始新会话。 +在主页上查看和管理你的会话。你可以查看活跃的会话,也可以创建新的会话。 - + ### 服务器状态 -单击“查看服务器”可查看连接的服务器及其状态。 +点击"See Servers"可以查看已连接的服务器及其状态。 - + --- ## 连接终端 -您可以将终端 TUI 连线到正在执行的 Web 服务器: +你可以将终端 TUI 连接到正在运行的 Web 服务器: ```bash -# Start the web server +# 启动 Web 服务器 opencode web --port 4096 -# In another terminal, attach the TUI +# 在另一个终端中连接 TUI opencode attach http://localhost:4096 ``` -这允许您同时使用 Web 界面和终端,共享相同的会话和状态。 +这样你就可以同时使用 Web 界面和终端,共享相同的会话和状态。 --- ## 配置文件 -You can also configure server settings in your `opencode.json` config file: +你也可以在 `opencode.json` 配置文件中设置服务器选项: ```json { @@ -139,4 +139,4 @@ You can also configure server settings in your `opencode.json` config file: } ``` -命令行标志优先于配置文件设置。 +命令行标志的优先级高于配置文件中的设置。 diff --git a/packages/web/src/content/docs/zh-cn/windows-wsl.mdx b/packages/web/src/content/docs/zh-cn/windows-wsl.mdx index 95ef1bd6d..853011ace 100644 --- a/packages/web/src/content/docs/zh-cn/windows-wsl.mdx +++ b/packages/web/src/content/docs/zh-cn/windows-wsl.mdx @@ -1,37 +1,37 @@ --- title: Windows (WSL) -description: 在 Windows 上通过 WSL 使用 opencode。 +description: 通过 WSL 在 Windows 上运行 OpenCode 以获得最佳体验。 --- import { Steps } from "@astrojs/starlight/components" -虽然 opencode 可以直接在 Windows 上运行,但为了获得最佳体验,我们推荐使用 [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install)。WSL 提供了一个与 opencode 功能无缝协作的 Linux 环境。 +虽然 OpenCode 可以直接在 Windows 上运行,但我们推荐使用 [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) 以获得最佳体验。WSL 提供了一个 Linux 环境,能够与 OpenCode 的各项功能无缝配合。 -:::tip[为什么使用 WSL?] -WSL 提供更好的文件系统性能、完整的终端支持,以及与 opencode 依赖的开发工具的兼容性。 +:::tip[为什么选择 WSL?] +WSL 提供更出色的文件系统性能、完整的终端支持,以及与 OpenCode 所依赖的开发工具的良好兼容性。 ::: --- -## 设置 +## 安装配置 <Steps> 1. **安装 WSL** - 如果你还没有安装,请按照 Microsoft 官方指南 [安装 WSL](https://learn.microsoft.com/en-us/windows/wsl/install)。 + 如果尚未安装,请参照 Microsoft 官方指南[安装 WSL](https://learn.microsoft.com/en-us/windows/wsl/install)。 -2. **在 WSL 中安装 opencode** +2. **在 WSL 中安装 OpenCode** - 完成 WSL 设置后,打开 WSL 终端并使用任一[安装方式](/docs/)安装 opencode。 + WSL 设置完成后,打开 WSL 终端,使用任一[安装方式](/docs/)安装 OpenCode。 ```bash curl -fsSL https://opencode.ai/install | bash ``` -3. **从 WSL 使用 opencode** +3. **从 WSL 中使用 OpenCode** - 进入你的项目目录(可通过 `/mnt/c/`、`/mnt/d/` 等访问 Windows 文件)并运行 opencode。 + 导航到你的项目目录(通过 `/mnt/c/`、`/mnt/d/` 等路径访问 Windows 文件),然后运行 OpenCode。 ```bash cd /mnt/c/Users/YourName/project @@ -44,54 +44,53 @@ WSL 提供更好的文件系统性能、完整的终端支持,以及与 openco ## 桌面应用 + WSL 服务器 -如果你想使用 opencode 桌面应用,但希望在 WSL 中运行服务器: +如果你希望使用 OpenCode 桌面应用,同时在 WSL 中运行服务器: -1. **在 WSL 中启动服务器**,并使用 `--hostname 0.0.0.0` 以允许外部连接: +1. **在 WSL 中启动服务器**,添加 `--hostname 0.0.0.0` 以允许外部连接: ```bash opencode serve --hostname 0.0.0.0 --port 4096 ``` -2. **将桌面应用连接到** `http://localhost:4096` +2. **在桌面应用中连接到** `http://localhost:4096` :::note -如果你的环境中 `localhost` 不可用,请改用 WSL 的 IP 地址连接(在 WSL 中执行:`hostname -I`),并使用 `http://<wsl-ip>:4096`。 +如果 `localhost` 在你的环境中无法使用,请改用 WSL 的 IP 地址进行连接(在 WSL 中运行:`hostname -I`),使用 `http://<wsl-ip>:4096`。 ::: :::caution -使用 `--hostname 0.0.0.0` 时,请设置 `OPENCODE_SERVER_PASSWORD` 来保护服务器。 +使用 `--hostname 0.0.0.0` 时,请设置 `OPENCODE_SERVER_PASSWORD` 以保护服务器安全。 +::: ```bash OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0 ``` -::: - --- ## Web 客户端 + WSL -在 Windows 上获得最佳 Web 体验: +要在 Windows 上获得最佳的 Web 体验: -1. **请在 WSL 终端中运行 `opencode web`**,而不是在 PowerShell 中运行: +1. **在 WSL 终端中运行 `opencode web`**,而非在 PowerShell 中运行: ```bash opencode web --hostname 0.0.0.0 ``` -2. **在 Windows 浏览器中访问** `http://localhost:<port>`(opencode 会打印该 URL) +2. **在 Windows 浏览器中访问** `http://localhost:<port>`(OpenCode 会输出该 URL) -从 WSL 运行 `opencode web` 可以确保正确的文件系统访问和终端集成,同时仍可在 Windows 浏览器中访问。 +从 WSL 中运行 `opencode web` 可确保正确的文件系统访问和终端集成,同时仍可通过 Windows 浏览器进行访问。 --- ## 访问 Windows 文件 -WSL 可以通过 `/mnt/` 目录访问你所有的 Windows 文件: +WSL 可以通过 `/mnt/` 目录访问你的所有 Windows 文件: -- `C:` drive → `/mnt/c/` -- `D:` drive → `/mnt/d/` -- 其他盘符同理 +- `C:` 盘 → `/mnt/c/` +- `D:` 盘 → `/mnt/d/` +- 其他盘符以此类推... 示例: @@ -101,13 +100,13 @@ opencode ``` :::tip -为了获得更流畅的体验,建议将仓库克隆或复制到 WSL 文件系统中(例如 `~/code/`),并在那里运行 opencode。 +为了获得更流畅的体验,建议将仓库克隆或复制到 WSL 文件系统中(例如 `~/code/` 目录下),然后在该位置运行 OpenCode。 ::: --- -## 提示 +## 使用技巧 -- 即使项目存放在 Windows 盘符中,也建议在 WSL 中运行 opencode,文件访问会更顺畅 -- 可将 opencode 与 VS Code 的 [WSL 扩展](https://code.visualstudio.com/docs/remote/wsl)配合使用,形成一体化开发流程 -- opencode 的配置和会话会保存在 WSL 环境中的 `~/.local/share/opencode/` +- 对于存储在 Windows 驱动器上的项目,在 WSL 中运行 OpenCode 即可无缝访问文件 +- 搭配 VS Code 的 [WSL 扩展](https://code.visualstudio.com/docs/remote/wsl) 使用 OpenCode,打造一体化的开发工作流 +- OpenCode 的配置和会话数据存储在 WSL 环境中的 `~/.local/share/opencode/` diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index d03836dc5..39358c417 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -1,6 +1,6 @@ --- title: Zen -description: 由 opencode 提供的精选模型列表。 +description: 由 OpenCode 提供的精选模型列表。 --- import config from "../../../../config.mjs" @@ -13,56 +13,47 @@ OpenCode Zen 是由 OpenCode 团队提供的一组经过测试和验证的模型 OpenCode Zen 目前处于测试阶段。 ::: -Zen 的工作方式与 opencode 中的任何其他提供商相同。您登录 OpenCode Zen 并获得 -你的API钥匙。它是**完全可选的**,你不需要使用它即可使用 -opencode。 +Zen 的工作方式与 OpenCode 中的任何其他提供商相同。你只需登录 OpenCode Zen 并获取你的 API 密钥。它是**完全可选的**,你无需使用它也能正常使用 OpenCode。 --- ## 背景 -市面上有很多模型,但其中只有少数几个 -这些模型可以很好地用作编码代理。此外,大多数提供商都 -配置非常不同;所以你会得到截然不同的效率和质量。 +市面上有大量的模型,但其中只有少数能够很好地充当编码代理。此外,大多数提供商的配置方式差异很大,因此你获得的性能和质量也会截然不同。 :::tip -我们测试了一组与 opencode 配合良好的模型并提供商。 +我们测试了一组与 OpenCode 配合良好的精选模型和提供商。 ::: -因此,如果您通过 OpenRouter 之类的东西使用模型,您永远无法 -确定您是否获得了您想要的模型的最佳版本。 +所以如果你通过 OpenRouter 之类的服务使用模型,你永远无法确定是否获得了你想要的模型的最佳版本。 -为了解决这个问题,我们做了几件事: +为了解决这个问题,我们做了以下几件事: -1. 我们测试了一组选定的模型,并与他们的团队讨论了如何 - 最好执行它们。 -2. 然后我们与一些提供商合作以确保这些服务得到服务 - 正确。 -3. 最后,我们对 model/provider 的组合进行了基准测试,总结了 - 并附上一份我们觉得不错的推荐清单。 +1. 我们测试了一组精选的模型,并与它们的团队讨论了最佳运行方式。 +2. 然后我们与几家提供商合作,确保这些模型能被正确地提供服务。 +3. 最后,我们对模型与提供商的组合进行了基准测试,整理出了一份我们有信心推荐的列表。 -OpenCode Zen 是一个AI网关,让您可以访问这些模型。 +OpenCode Zen 是一个 AI 网关,让你可以访问这些模型。 --- -## 它是如何运作的 +## 工作原理 -OpenCode Zen 的工作方式与 opencode 中的任何其他功能相同。 +OpenCode Zen 的工作方式与 OpenCode 中的任何其他提供商相同。 -1. 您登录 **<a href={console}>OpenCode Zen</a>**,添加您的账单 - 详细信息,然后复制您的 API 密钥。 -2. 您在 TUI 中执行 `/connect` 命令,选择 OpenCode Zen,然后贴上 API 密钥。 -3. 在 TUI 中执行 `/models` 以查看我们推荐的模型列表。 +1. 登录 **<a href={console}>OpenCode Zen</a>**,添加你的账单信息,然后复制你的 API 密钥。 +2. 在 TUI 中运行 `/connect` 命令,选择 OpenCode Zen,然后粘贴你的 API 密钥。 +3. 在 TUI 中运行 `/models` 查看我们推荐的模型列表。 -您需要按请求付费,并且您可以将积分添加到您的账户中。 +你按请求付费,并且可以向你的账户中充值。 --- ## 端点 -您还可以通过以下 API 端点访问我们的模型。 +你还可以通过以下 API 端点访问我们的模型。 -| 模型 | 模型ID | 端点 | AI SDK 套件 | +| 模型 | 模型 ID | 端点 | AI SDK 包 | | ------------------ | ------------------ | -------------------------------------------------- | --------------------------- | | GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -82,10 +73,11 @@ OpenCode Zen 的工作方式与 opencode 中的任何其他功能相同。 | Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | | Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` | | Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` | +| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | +| MiniMax M2.5 Free | minimax-m2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| MiniMax M2.1 Free | minimax-m2.1-free | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` | +| GLM 5 | glm-5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -| GLM 4.7 Free | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Kimi K2.5 Free | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | @@ -94,15 +86,13 @@ OpenCode Zen 的工作方式与 opencode 中的任何其他功能相同。 | Qwen3 Coder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | | Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` | -opencode 配置中的 [model id](/docs/config/#models) -uses the format `opencode/<model-id>`. For example, for GPT 5.2 Codex, you would -use `opencode/gpt-5.2-codex` in your config. +在 OpenCode 配置中,[模型 ID](/docs/config/#models) 使用 `opencode/<model-id>` 格式。例如,对于 GPT 5.2 Codex,你需要在配置中使用 `opencode/gpt-5.2-codex`。 --- ### 模型 -您可以从以下位置获取可用模型及其元数据的完整列表: +你可以从以下地址获取可用模型及其元数据的完整列表: ``` https://opencode.ai/zen/v1/models @@ -112,142 +102,135 @@ https://opencode.ai/zen/v1/models ## 定价 -我们支持即用即付模式。以下是**每 100 万Tokens的价格**。 - -| 模型 | 输入 | 输出 | 缓存读取 | 缓存写入 | -| ---------------------------------- | ---------- | ---------- | ---------- | ---------- | -| Big Pickle | 免费 | 免费 | 免费 | - | -| MiniMax M2.1 Free | 免费 | 免费 | 免费 | - | -| MiniMax M2.1 | 0.30 美元 | 1.20 美元 | 0.10 美元 | - | -| GLM 4.7 Free | 免费 | 免费 | 免费 | - | -| GLM 4.7 | 0.60 美元 | 2.20 美元 | 0.10 美元 | - | -| GLM 4.6 | 0.60 美元 | 2.20 美元 | 0.10 美元 | - | -| Kimi K2.5 Free | 免费 | 免费 | 免费 | - | -| Kimi K2.5 | 0.60 美元 | 3.00 美元 | 0.08 美元 | - | -| Kimi K2 Thinking | 0.40 美元 | 2.50 美元 | - | - | -| Kimi K2 | 0.40 美元 | 2.50 美元 | - | - | -| Qwen3 Coder 480B | 0.45 美元 | 1.50 美元 | - | - | -| Claude Sonnet 4.5(≤ 200K Tokens) | 3.00 美元 | 15.00 美元 | 0.30 美元 | 3.75 美元 | -| Claude Sonnet 4.5(> 200K Tokens) | 6.00 美元 | 22.50 美元 | 0.60 美元 | 7.50 美元 | -| Claude Sonnet 4(≤ 200K Tokens) | 3.00 美元 | 15.00 美元 | 0.30 美元 | 3.75 美元 | -| Claude Sonnet 4(> 200K Tokens) | 6.00 美元 | 22.50 美元 | 0.60 美元 | 7.50 美元 | -| Claude Haiku 4.5 | 1.00 美元 | 5.00 美元 | 0.10 美元 | 1.25 美元 | -| Claude Haiku 3.5 | 0.80 美元 | 4.00 美元 | 0.08 美元 | 1.00 美元 | -| Claude Opus 4.6(≤ 200K Tokens) | 5.00 美元 | 25.00 美元 | 0.50 美元 | 6.25 美元 | -| Claude Opus 4.6(> 200K Tokens) | 10.00 美元 | 37.50 美元 | 1.00 美元 | 12.50 美元 | -| Claude Opus 4.5 | 5.00 美元 | 25.00 美元 | 0.50 美元 | 6.25 美元 | -| Claude Opus 4.1 | 15.00 美元 | 75.00 美元 | 1.50 美元 | 18.75 美元 | -| Gemini 3 Pro(≤20万 Tokens) | 2.00 美元 | 12.00 美元 | 0.20 美元 | - | -| Gemini 3 Pro(>20万 Tokens) | 4.00 美元 | 18.00 美元 | 0.40 美元 | - | -| Gemini 3 Flash | 0.50 美元 | 3.00 美元 | 0.05 美元 | - | -| GPT 5.2 | 1.75 美元 | 14.00 美元 | 0.175 美元 | - | -| GPT 5.2 Codex | 1.75 美元 | 14.00 美元 | 0.175 美元 | - | -| GPT 5.1 | 1.07 美元 | 8.50 美元 | 0.107 美元 | - | -| GPT 5.1 Codex | 1.07 美元 | 8.50 美元 | 0.107 美元 | - | -| GPT 5.1 Codex Max | 1.25 美元 | 10.00 美元 | 0.125 美元 | - | -| GPT 5.1 Codex Mini | 0.25 美元 | 2.00 美元 | 0.025 美元 | - | -| GPT 5 | 1.07 美元 | 8.50 美元 | 0.107 美元 | - | -| GPT 5 Codex | 1.07 美元 | 8.50 美元 | 0.107 美元 | - | -| GPT 5 Nano | 免费 | 免费 | 免费 | - | - -您可能会在您的使用历史记录中注意到*Claude Haiku 3.5*。这是一个[低成本模型](/docs/config/#models),用于生成会话标题。 +我们支持按量付费模式。以下是**每 100 万 Token** 的价格。 + +| 模型 | 输入 | 输出 | 缓存读取 | 缓存写入 | +| -------------------------------- | ------ | ------ | -------- | -------- | +| Big Pickle | 免费 | 免费 | 免费 | - | +| MiniMax M2.5 Free | 免费 | 免费 | 免费 | - | +| MiniMax M2.5 | $0.30 | $1.20 | $0.06 | - | +| MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - | +| GLM 5 | $1.00 | $3.20 | $0.20 | - | +| GLM 4.7 | $0.60 | $2.20 | $0.10 | - | +| GLM 4.6 | $0.60 | $2.20 | $0.10 | - | +| Kimi K2.5 Free | 免费 | 免费 | 免费 | - | +| Kimi K2.5 | $0.60 | $3.00 | $0.08 | - | +| Kimi K2 Thinking | $0.40 | $2.50 | - | - | +| Kimi K2 | $0.40 | $2.50 | - | - | +| Qwen3 Coder 480B | $0.45 | $1.50 | - | - | +| Claude Sonnet 4.5 (≤ 200K Token) | $3.00 | $15.00 | $0.30 | $3.75 | +| Claude Sonnet 4.5 (> 200K Token) | $6.00 | $22.50 | $0.60 | $7.50 | +| Claude Sonnet 4 (≤ 200K Token) | $3.00 | $15.00 | $0.30 | $3.75 | +| Claude Sonnet 4 (> 200K Token) | $6.00 | $22.50 | $0.60 | $7.50 | +| Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 | +| Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 | +| Claude Opus 4.6 (≤ 200K Token) | $5.00 | $25.00 | $0.50 | $6.25 | +| Claude Opus 4.6 (> 200K Token) | $10.00 | $37.50 | $1.00 | $12.50 | +| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 | +| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 | +| Gemini 3 Pro (≤ 200K Token) | $2.00 | $12.00 | $0.20 | - | +| Gemini 3 Pro (> 200K Token) | $4.00 | $18.00 | $0.40 | - | +| Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - | +| GPT 5.2 | $1.75 | $14.00 | $0.175 | - | +| GPT 5.2 Codex | $1.75 | $14.00 | $0.175 | - | +| GPT 5.1 | $1.07 | $8.50 | $0.107 | - | +| GPT 5.1 Codex | $1.07 | $8.50 | $0.107 | - | +| GPT 5.1 Codex Max | $1.25 | $10.00 | $0.125 | - | +| GPT 5.1 Codex Mini | $0.25 | $2.00 | $0.025 | - | +| GPT 5 | $1.07 | $8.50 | $0.107 | - | +| GPT 5 Codex | $1.07 | $8.50 | $0.107 | - | +| GPT 5 Nano | 免费 | 免费 | 免费 | - | + +你可能会在使用记录中看到 _Claude Haiku 3.5_。这是一个[低成本模型](/docs/config/#models),用于生成会话标题。 :::note -信用卡费用按成本转嫁(4.4% + 每笔交易 0.30 美元);除此之外我们不收取任何费用。 +信用卡手续费按成本转嫁(每笔交易 4.4% + $0.30);除此之外我们不收取任何额外费用。 ::: -免费模型: +免费模型说明: -- GLM 4.7 免费版本在 opencode 上限时提供。团队正在利用这段时间收集反馈并改进模型。 -- Kimi K2.5 在 opencode 限时免费发布。团队正在利用这段时间收集反馈并改进模型。 -- MiniMax M2.1 在 opencode 限时免费供应。团队正在利用这段时间收集反馈并改进模型。 -- Big Pickle 是一个隐形模型,在 opencode 上限时免费。团队正在利用这个临时收集反馈并改进模型。 +- Kimi K2.5 Free 在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 +- MiniMax M2.5 Free 在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 +- Big Pickle 是一个隐身模型,在 OpenCode 上限时免费提供。团队正在利用这段时间收集反馈并改进模型。 -<a href={email}>如果您有任何疑问,请联络我们</a>。 +如有任何疑问,请<a href={email}>联系我们</a>。 --- -### 自动重新载入 +### 自动充值 -如果您的余额低于 5 美元,Zen 将自动充值 20 美元。 +如果你的余额低于 $5,Zen 将自动充值 $20。 -您可以更改自动充值金额。您还可以完全禁用自动重新载入。 +你可以更改自动充值的金额,也可以完全禁用自动充值功能。 --- -### 每月限额 +### 月度限额 -您还可以为整个工作区和每个工作区设置每月使用限制 -你的团队成员。 +你还可以为整个工作区以及团队中的每个成员设置月度使用限额。 -例如,假设您将每月使用中断设置为 20 美元,Zen 将不会使用 -一个月超过 20 美元。但如果你启用了自动重新加载,Zen 可能会结束 -如果您的余额低于 5 美元,则向您收取超过 20 美元的费用。 +例如,假设你将月度使用限额设为 $20,Zen 在一个月内的使用量将不会超过 $20。但如果你启用了自动充值,当余额低于 $5 时,Zen 可能会向你收取超过 $20 的费用。 --- ## 隐私 -我们所有的模型都在美国托管。我们的提供商遵循零保留政策,不会将您的数据用于模型训练,但以下情况除外: +我们所有的模型都托管在美国。我们的提供商遵循零保留政策,不会将你的数据用于模型训练,但以下情况除外: -- Big Pickle:在免费期间,收集可用于改进模型的数据。 -- GLM 4.7 免费:在免费期间,收集可用于改进模型的数据。 -- Kimi K2.5 免费:在免费期间,收集可用于改进模型的数据。 -- MiniMax M2.1 免费:在免费期间,收集可用于改进模型的数据。 -- OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data). -- Anthropic APIs: Requests are retained for 30 days in accordance with [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage). +- Big Pickle:在免费期间,收集的数据可能会被用于改进模型。 +- Kimi K2.5 Free:在免费期间,收集的数据可能会被用于改进模型。 +- MiniMax M2.5 Free:在免费期间,收集的数据可能会被用于改进模型。 +- OpenAI API:请求会根据 [OpenAI 数据政策](https://platform.openai.com/docs/guides/your-data)保留 30 天。 +- Anthropic API:请求会根据 [Anthropic 数据政策](https://docs.anthropic.com/en/docs/claude-code/data-usage)保留 30 天。 --- -## 对于团队 +## 团队版 -Zen 也非常适合团队使用。您可以邀请您可以邀请队友,分配角色,管理团队使用的模型等。 +Zen 也非常适合团队使用。你可以邀请队友、分配角色、管理团队使用的模型等。 :::note -作为测试版的一部分,工作空间目前对团队免费。 +作为测试版的一部分,工作区功能目前对团队免费开放。 ::: -作为测试版的一部分,管理工作空间目前对团队免费。我们将会 -很快就会分享更多有关定价的细节。 +作为测试版的一部分,管理工作区目前对团队免费。我们将很快公布更多定价详情。 --- ### 角色 -您可以邀请团队成员到您的工作区并分配角色: +你可以邀请团队成员加入你的工作区并分配角色: -- **管理员**:管理模型、成员、API 密钥和计费/账单 +- **管理员**:管理模型、成员、API 密钥和账单 - **成员**:仅管理自己的 API 密钥 -管理员还可以为每个成员设置每月支出限额,以控制成本。 +管理员还可以为每个成员设置月度支出限额,以控制成本。 --- ### 模型访问 -管理员可以启用或禁用工作区的特定模型。对禁用模型发出的请求会返回错误。 +管理员可以启用或禁用工作区中的特定模型。对已禁用模型发出的请求将返回错误。 -这对于您想要禁用以下模型的情况很有帮助: -收集数据。 +这在你想要禁用某个会收集数据的模型时非常有用。 --- -### 使用你自己的密钥 +### 自带密钥 -你可以使用自己的 OpenAI 或 Anthropic API 密钥,同时继续使用 Zen 的其他模型。 +你可以使用自己的 OpenAI 或 Anthropic API 密钥,同时仍然可以访问 Zen 中的其他模型。 -使用你自己的 API 密钥时,Tokens 会直接由对应提供商计费,而不是由 Zen 计费。 +当你使用自己的密钥时,Token 费用由提供商直接计费,而非通过 Zen 计费。 -例如,你的组织可能已经有 OpenAI 或 Anthropic 的 API 密钥, -你希望优先使用它们,而不是 Zen 提供的密钥。 +例如,你的组织可能已经拥有 OpenAI 或 Anthropic 的密钥,你希望使用它们而不是 Zen 提供的密钥。 --- -## 为什么使用 Zen +## 目标 -我们构建 OpenCode Zen 是为了: +我们创建 OpenCode Zen 的目的是: -1. **基准测试**最适合编码代理的 models/providers。 -2. 可以优先使用 **高质量** 选项,而不是被迫降级性能或改用更便宜的提供商。 -3. 通过按成本价计费传递任何**降价收益**,额外费用仅为处理费。 -4. 通过可与其他编码代理一起使用实现 **无锁定**,你也始终可以把其他提供商与 opencode 组合使用。 +1. 为编码代理**基准测试**最佳的模型和提供商组合。 +2. 提供**最高质量**的选项,不降低性能或路由到更廉价的提供商。 +3. 以成本价销售来传递任何**降价优惠**;唯一的加价仅用于覆盖我们的处理费用。 +4. **无锁定**,允许你将其与任何其他编码代理配合使用,同时也始终允许你在 OpenCode 中使用任何其他提供商。 |
