OpenCode
在 opencode.json 中把 Hoshimi 添加为 OpenAI 兼容的提供方,让 OpenCode 使用网关里的模型;包括密钥、模型列表、推理强度,以及它和 Hoshimi 的 OpenCode Zen 渠道的区别。
OpenCode 可以通过 @ai-sdk/openai-compatible 接入任何 OpenAI 兼容的服务。把 Hoshimi 配置成一个提供方后,OpenCode 用 Chat Completions 调用网关,网关再把请求转给各个渠道。
不要和 OpenCode Zen 渠道混淆
本页讲的是把 OpenCode 这个编程助手作为客户端接到 Hoshimi。Hoshimi 自带的 opencode 渠道是反过来的:它连接 OpenCode Zen 的免费模型,提供给网关的所有客户端使用,见匿名入口。两者可以同时使用。
配置
写 opencode.json
在项目根目录的 opencode.json(只对这个项目生效)或全局配置 ~/.config/opencode/opencode.json 中添加:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"hoshimi": {
"npm": "@ai-sdk/openai-compatible",
"name": "Hoshimi",
"options": {
"baseURL": "http://127.0.0.1:10600/v1",
"apiKey": "{env:HOSHIMI_API_KEY}"
},
"models": {
"<model-id>": { "name": "显示名称" },
"<另一个-model-id>": { "name": "另一个显示名称" }
}
}
},
"model": "hoshimi/<model-id>"
}baseURL带/v1。apiKey用{env:HOSHIMI_API_KEY}从环境变量读取模型 API 密钥。models中的键是 Hoshimi 的模型 id(/v1/models中的id,或渠道/模型),值里的name是 OpenCode 中显示的名字。列在这里的模型会出现在 OpenCode 的模型列表中。- 顶层的
model是默认模型,格式为提供方/模型,这里的提供方是hoshimi。
设置密钥并运行
export HOSHIMI_API_KEY="你的模型 API 密钥" # 没有设置模型 API 密钥时随便填一个非空值
opencode单次运行或换模型:
opencode run "读一下 README 并总结"
opencode run -m "hoshimi/<另一个-model-id>" "读一下 README 并总结"推理强度
在模型的 options 中设置 reasoningEffort,OpenCode 会以 reasoning_effort 发送:
"models": {
"<model-id>": {
"name": "显示名称",
"options": { "reasoningEffort": "high" }
}
}可以写 low、medium、high 等,也可以写模型自己的级别名;Hoshimi 的换算规则见 OpenAI 兼容接口,各模型的级别见 模型 页。
工具调用
OpenCode 的读文件、搜索、执行命令等工具以 Chat Completions 的 function 工具发送,模型的调用原样转换回 OpenCode 执行。选择 模型 页标有 工具调用 的模型。
通过 OpenCode Zen 渠道使用免费模型
用 Hoshimi 默认启用的 opencode 渠道上的模型(如 /v1/models 中 owned_by 为 opencode 的那些)时,有两点和客户端有关:
- 匿名通道会按对话生成会话 ID,来源依次是请求体中的
session_id、conversation_id、user,都没有时取第一条用户消息。两个以相同开场白开始的独立对话会共用会话。 - 匿名通道会额外声明上游要求的
read、shell两个工具。客户端没有声明的工具,模型调用了也不会交给客户端:Hoshimi 会告诉模型这个工具不可用并让它继续回答。
渠道本身的协议细节、匿名与 API Key 账号的区别见匿名入口。