# OpenCode

> 全部文档的索引见 [llms.txt](https://ark.volcengine.com/llms.txt)；在任一文档页面地址后追加 `.md` 可获取该页的 Markdown 版本。

本文介绍如何在 OpenCode 中配置并使用方舟 Agent Plan 企业版。

<span id="prerequisites"></span>
# 前提条件

需由管理员账号完成以下前置操作后，子账号方可配置并使用 OpenCode：

1. 购买方舟 Agent Plan 企业版套餐：[一、购买 Agent Plan 企业版](/docs/agent-plan-enterprise-get-started#purchase-plan)。
2. 为子账号分配席位：[二、分配席位](/docs/agent-plan-enterprise-get-started#assign-seats)。

<span id="install-opencode"></span>
# 安装 OpenCode

前提条件：安装 [Node.js 18 或更新版本](https://nodejs.org/en/download/)。

在命令行界面，执行以下命令安装 OpenCode。

```Bash
npm install -g opencode-ai
```

安装结束后，执行以下命令查看安装结果，若显示版本号则安装成功。

```Bash
opencode --version
```

<span id="c807cb71"></span>
# 配置 OpenCode

<span id="configuration-information"></span>
## 需配置的信息

如您对 OpenCode 熟悉，或本地已有配置，可获取以下信息直接配置。

* **Base URL**：`https://ark.cn-beijing.volces.com/api/plan/v3`。
* **API Key**：[获取专属 API Key](https://ark.volcengine.com/region:cn-beijing/subscription/agent-plan-enterprise/mine)。
* **Model**：配置文本生成模型。可配置 `ark-code-latest` 或 Model Name，模型信息参见[支持模型及 Harness](/docs/agent-plan-enterprise-plan-overview#supported-models-harness)。

<span id="method-1-auto-helper"></span>
## 方式 1：一键配置（推荐）

Ark CLI 是火山方舟平台官方命令行工具，支持在本地终端快速完成认证与资源管理，并可将能力安装到常用 AI Agent 中，降低手动配置的时间成本和出错风险。

1. 安装 Ark CLI

    环境要求：Node.js 18 或更新版本。支持 macOS、Linux、Windows。

```Bash
npm install -g @volcengine/ark-cli@latest
arkcli --version
```

2. 登录 Ark CLI

    根据界面提示选择登录方式，推荐选择 **火山 SSO (浏览器登录)**，在浏览器中完成授权即可。

```Bash
arkcli auth login
```

3. 一键配置 OpenCode

```Bash
arkcli helper
```
运行 ArkCLI Helper，根据界面提示完成配置。
* **选择 Profile**：`agent-plan-team_cn-beijing_team`。
* **选择默认 model**：按需选择。
* **选择 AI Agent**：`OpenCode`。
    支持配置 Harness 能力，根据界面提示按需选择`配置`或者`跳过`。

配置完成后，OpenCode 会自动识别配置的模型。启动 OpenCode 即可使用。

<span id="method-2-manual"></span>
## 方式 2：手动配置

新建 `~/.config/opencode/opencode.json`（Windows 路径：`%USERPROFILE%\.config\opencode\opencode.json`），配置信息如下：

* `<ARK_API_KEY>`：替换为您自己的 [专属 API Key](https://ark.volcengine.com/region:cn-beijing/subscription/agent-plan-enterprise/mine)。
![image-20260909-103103-932.png](https://arkdocs.tos-cn-beijing.volces.com/images/agent-plan/agent-plan-enterprise-api-key.png)
* `model`：见[支持模型及 Harness](/docs/agent-plan-enterprise-plan-overview#supported-models-harness)，需配置文本生成模型。

Agent Plan 企业版兼容 OpenAI 接口协议，支持 Responses API、Chat API。推荐使用 Responses API 的配置，推理效果更好。
支持的两类 API 仅在 npm 配置上不同：
* Responses API 配置：`"npm": "@ai-sdk/openai"`
* Chat API 配置：`"npm": "@ai-sdk/openai-compatible"`

以配置 `ark-code-latest` 为例，具体信息如下。

> **注意**
>
> * 部分模型支持开启 1M 上下文窗口，可用于包含大型代码库的长会话，可通过 `limit.context` 字段显式指定窗口大小。
> * `provider.volcengine-enterprise-agent-plan.models` 节点下有**两处**（对象键、`name`字段）需**替换为同一 Model Name**，切勿遗漏。
> * 若需开启模型图片理解能力，需在模型配置节点下新增如下配置项：`"modalities": {"input": ["text", "image"], "output": ["text"]}`

**选项：Responses API**

> **说明**
>
> npm 必须使用 `@ai-sdk/openai`，模型才会使用 Responses API，在 `baseURL` 的基础上自动拼接 `/responses`。

```JSON
{
  "$schema": "https://opencode.ai/config.json",
  "model": "volcengine-enterprise-agent-plan/ark-code-latest",
  "provider": {
    "volcengine-enterprise-agent-plan": {
      "npm": "@ai-sdk/openai",
      "name": "Volcano Engine（Responses API）",
      "options": {
        "baseURL": "https://ark.cn-beijing.volces.com/api/plan/v3",
        "apiKey": "<ARK_API_KEY>"
      },
      "models": {
        "ark-code-latest": {
          "name": "ark-code-latest",
          "limit": {
            "context": 256000,
            "output": 32000
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "doubao-seed-2.1-pro": {
          "name": "doubao-seed-2.1-pro",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "doubao-seed-evolving": {
          "name": "doubao-seed-evolving",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "glm-5.3": {
          "name": "glm-5.3",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text"
            ],
            "output": [
              "text"
            ]
          }
        },
        "glm-5.3-flash": {
          "name": "glm-5.3-flash",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "glm-latest": {
          "name": "glm-latest",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text"
            ],
            "output": [
              "text"
            ]
          }
        },
        "deepseek-v4.1-flash": {
          "name": "deepseek-v4.1-flash",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "deepseek-v4.1-flash-economy": {
          "name": "deepseek-v4.1-flash-economy",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "deepseek-v4-flash": {
          "name": "deepseek-v4-flash",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text"
            ],
            "output": [
              "text"
            ]
          }
        },
        "deepseek-v4-pro": {
          "name": "deepseek-v4-pro",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text"
            ],
            "output": [
              "text"
            ]
          }
        },
        "doubao-seed-2.1-lite": {
          "name": "doubao-seed-2.1-lite",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "doubao-seed-2.0-mini": {
          "name": "doubao-seed-2.0-mini",
          "limit": {
            "context": 256000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "kimi-k2.8-preview": {
          "name": "kimi-k2.8-preview",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "kimi-k3.1-pro": {
          "name": "kimi-k3.1-pro",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        }
      }
    }
  }
}
```

**选项：Chat API**

> **说明**
>
> npm 必须使用 `@ai-sdk/openai-compatible`，模型才会使用 Chat API，在 `baseURL` 的基础上自动拼接 `/chat/completions`。

```JSON
{
  "$schema": "https://opencode.ai/config.json",
  "model": "volcengine-enterprise-agent-plan/ark-code-latest",
  "provider": {
    "volcengine-enterprise-agent-plan": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Volcano Engine（Chat API）",
      "options": {
        "baseURL": "https://ark.cn-beijing.volces.com/api/plan/v3",
        "apiKey": "<ARK_API_KEY>"
      },
      "models": {
        "ark-code-latest": {
          "name": "ark-code-latest",
          "limit": {
            "context": 256000,
            "output": 32000
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "doubao-seed-2.1-pro": {
          "name": "doubao-seed-2.1-pro",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "doubao-seed-evolving": {
          "name": "doubao-seed-evolving",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "glm-5.3": {
          "name": "glm-5.3",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text"
            ],
            "output": [
              "text"
            ]
          }
        },
        "glm-5.3-flash": {
          "name": "glm-5.3-flash",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "glm-latest": {
          "name": "glm-latest",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text"
            ],
            "output": [
              "text"
            ]
          }
        },
        "deepseek-v4.1-flash": {
          "name": "deepseek-v4.1-flash",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "deepseek-v4.1-flash-economy": {
          "name": "deepseek-v4.1-flash-economy",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "deepseek-v4-flash": {
          "name": "deepseek-v4-flash",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text"
            ],
            "output": [
              "text"
            ]
          }
        },
        "deepseek-v4-pro": {
          "name": "deepseek-v4-pro",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text"
            ],
            "output": [
              "text"
            ]
          }
        },
        "doubao-seed-2.1-lite": {
          "name": "doubao-seed-2.1-lite",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "doubao-seed-2.0-mini": {
          "name": "doubao-seed-2.0-mini",
          "limit": {
            "context": 256000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "kimi-k2.8-preview": {
          "name": "kimi-k2.8-preview",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        },
        "kimi-k3.1-pro": {
          "name": "kimi-k3.1-pro",
          "limit": {
            "context": 1024000,
            "output": 65536
          },
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          }
        }
      }
    }
  }
}
```

<span id="30a7ef0d"></span>
# 使用 OpenCode

1. 启动 OpenCode：

    ```Bash
    opencode
    ```

2. 输入`/models`，选择配置的模型并在 OpenCode 中使用。

<span id="other-operations"></span>
# 其他操作

<span id="add-image-video-generation"></span>
## 添加图片生成/视频生成能力
方舟 Agent Plan 企业版 Team Medium 及以上套餐提供图片生成模型配额，Team Large 及以上套餐提供视频生成模型配额。方舟提供 Skill 帮助 AI 工具快速接入并使用。具体配置方法请参见 [配置视觉模型](/docs/agent-plan-enterprise-visual-models)。

> **注意**
>
> * 不同的套餐支持的视觉模型有所不同，具体参见 [支持模型及 Harness](/docs/agent-plan-enterprise-plan-overview#supported-models-harness)。
> * 视觉模型不支持通过 Auto 及控制台切换使用。

<span id="switch-model"></span>
## 切换模型

你可以随时根据需求切换**文本生成模型**。方舟支持多种方式切换模型。

|配置方式 |通过控制台 |通过命令参数 |修改配置文件 |
|---|---|---|---|
|切换模型操作 |1. 参考[配置 OpenCode](/docs/agent-plan-enterprise-opencode#c807cb71)配置模型名称为 `ark-code-latest`。 |启动 OpenCode 后，执行`/models` 切换模型。 |参考[配置 OpenCode](/docs/agent-plan-enterprise-opencode#c807cb71)配置模型名称为您需要的模型。 | \
| |2. 在 [订阅页面](https://ark.volcengine.com/region:cn-beijing/subscription/agent-plan-enterprise?agentMode=close)，选择**我的** - **使用配置**，选择要使用的模型，切换后 3-5 分钟即可生效。 | | |
