Opencode 设置思考和回答语言为中文:AGENTS.md 与配置文件实操指南

📅 发布时间:2026/10/8 17:40:39
Opencode 设置思考和回答语言为中文:AGENTS.md 与配置文件实操指南
1. 为什么 Opencode 的中文输出总是不稳定很多人第一次用 Opencode 跑 Agent 任务时会遇到一个很别扭的现象明明在对话里说了“请用中文回答”单轮对话确实回中文了可一旦进入多步 Agent 流程——比如让它读文件、改代码、再跑测试——中间那些思考过程Thinking又悄悄变回英文了。更麻烦的是有些工具调用后的总结也会切成英文导致你在一堆中英混杂的日志里找关键信息效率反而比手写还低。这个问题的根源不在模型本身而在于 Opencode 的 Agent 工作流是分层读取指令的。你在聊天框里输入的那句话只作用于当前这一轮对话的上下文而 Agent 在规划任务、拆解步骤、调用工具时参考的是另一套更“底层”的配置——也就是项目里的AGENTS.md和全局配置文件。这两者如果没有显式声明语言偏好模型就会按自己的默认习惯走通常是英文。所以真正要解决的不是“怎么让某一轮回答变中文”而是“怎么让整个 Agent 会话的思考与回答语言固定为中文”。这需要两个动作配合一是用 Markdown 写清楚语言约束二是把约束放到 Opencode 会稳定读取的位置。前者靠AGENTS.md后者靠配置文件路径。下面我会把这两块拆开讲并给出可以直接复制的片段。适合读这篇的人正在用 Opencode 做 Agent 编排、习惯用 Markdown 管理工作流、希望思考链和最终回答都保持中文的开发者。如果你只是偶尔问一两个问题改聊天提示就够了但只要你开始跑多步任务就值得把语言配置固化下来。2. AGENTS.md 与全局配置文件Opencode 中文语言设置的前置准备在动手改配置之前先把 Opencode 读取指令的逻辑理清楚不然你改了文件却没生效会以为是配置写错了其实是放错了地方。Opencode 的 Agent 在启动一个任务时会按优先级加载几类指令来源。最贴近当前任务的是项目根目录下的AGENTS.md它描述这个项目里 Agent 应该遵守的规则包括代码风格、目录约定、以及我们关心的语言偏好。再往上一层是全局配置通常放在用户目录下的.config/opencode里Windows 上是C:\Users\你的用户名\.config\opencodemacOS 和 Linux 则是~/.config/opencode。全局配置影响你在这台机器上所有项目的默认行为。这里有个容易踩的坑很多人只改了项目里的AGENTS.md但 Agent 在读取某些系统级提示时仍然走全局默认于是思考过程还是英文。反过来只改全局配置项目里如果有自己的AGENTS.md覆盖了语言设置也会失效。稳妥的做法是两层都写项目层负责具体任务的语气和格式全局层负责兜底的语言基线。另外要区分两个概念AGENTS.md是给 Agent 看的自然语言指令用 Markdown 写而配置文件比如opencode.json或config.toml是给 Opencode 程序本身读的结构化参数。语言偏好主要靠AGENTS.md表达因为“用中文思考”本质是一条行为指令不是程序开关。配置文件更多用来指定模型、API 端点、超时这些。把语言要求写进配置文件反而可能不被识别这是新手常犯的错。如果你还没配好 Opencode 的模型接入可以先用 TaoToken 把 API 通道打通再去调语言。接入入口在 TaoToken APIKey 在 API Keys 页面 生成。模型对话调试可以用 模型对话 先验证通道是否通再回到 Opencode 里做语言配置。这样排障时能分清是“通道问题”还是“配置问题”。3. 可复制配置AGENTS.md 片段与 Opencode 配置文件实操这一节是核心我直接把能用的片段给你你按路径放进去就行。先讲AGENTS.md再讲配置文件最后讲两者怎么配合。3.1 项目级 AGENTS.md 的中文语言片段在项目根目录新建或编辑AGENTS.md加入下面这段。注意标题层级和措辞Opencode 对 Markdown 结构是有感知的用二级标题分区比一大段散文更稳。## 交互要求 - Thinking 思考过程必须用中文表述不要用英文。 - Reply 最终回答必须用中文包括总结、解释和报错说明。 - 工具调用后的结果解读也用中文不要中英混杂。 - 代码、命令、文件路径、报错原文保持原样不要翻译。 - 如果某段内容没有合适的中文表达保留英文术语并在括号内补充中文说明。这里有几个细节值得说。第一我特意把“代码、命令、路径保持原样”写进去因为有些模型会过度翻译把npm install翻成“节点包管理器安装”反而没法用。第二加上“没有合适中文表达时保留英文并补充说明”是给模型一个出口避免它为了凑中文硬造词。第三用“必须”而不是“请”指令强度更高Agent 在多步任务里更不容易漂移。如果你希望项目里所有 Agent 都遵守就把这段放在AGENTS.md靠前的位置。Opencode 读取时越靠前的规则权重通常越高。3.2 全局配置目录与语言兜底全局配置放在用户目录下。Windows 路径是C:\Users\你的用户名\.config\opencodemacOS / Linux~/.config/opencode在这个目录里除了程序配置文件你也可以放一个全局的AGENTS.md作为所有项目的语言兜底。内容可以比项目级更简洁## 全局语言偏好 - 默认使用中文进行思考和回答。 - 项目级 AGENTS.md 如有更具体规定以项目级为准。这样即使某个项目忘了写语言要求全局也会兜住。注意最后一句“以项目级为准”避免全局和项目冲突时行为不可预测。3.3 配置文件里的模型与端点字段语言靠AGENTS.md但模型和端点得在配置文件里写。以 JSON 格式为例路径同样是全局配置目录下的opencode.json{ model: claude-sonnet-4-20250514, provider: { baseURL: https://taotoken.net/api, apiKey: 你的_TaoToken_Key }, timeout: 120000 }如果你用的是 TOML 风格配置等价写法是model claude-sonnet-4-20250514 timeout 120000 [provider] baseURL https://taotoken.net/api apiKey 你的_TaoToken_Key这里baseURL和apiKey是接入 TaoToken 的关键model填你要用的模型 ID。三件套——Base URL、Key、Model ID——缺一不可这也是后面排障时首先要核对的。Key 从 API Keys 拿模型 ID 可以参考 接入文档 里的列表。3.4 两层配置的配合关系把上面的内容串起来全局AGENTS.md定语言基线项目AGENTS.md定具体任务的语言和格式opencode.json定模型和通道。三者各司其职不要混着写。我见过有人把“用中文回答”写进opencode.json的某个自定义字段结果程序不认白折腾半天。配置改完后Opencode 需要重启才会重新加载。重启前先确认文件编码是 UTF-8中文注释和中文指令在非 UTF-8 下会乱码导致 Agent 读到一堆问号语言设置自然失效。4. 验证请求重启后确认中文思考与回答真的生效配置写完不代表生效得用具体动作验证。我一般分三步先验证通道再验证单轮语言最后验证多步 Agent 的思考链。4.1 重启 Opencode 并确认配置加载改完AGENTS.md和opencode.json后完全退出 Opencode 进程再重新启动。不要只关窗口后台进程可能还持有旧配置。重启后先跑一个最简单的请求确认模型能正常响应opencode run 用一句话说明当前项目是做什么的如果这一步就报错先别管语言去看第 5 节的排障。能正常返回说明通道和模型没问题。4.2 检查思考过程是否为中文接下来触发一个需要多步思考的任务比如让它读一个文件再总结opencode run 读取 README.md用中文总结这个项目的三个核心功能观察输出里的 Thinking 部分。如果配置生效思考过程应该是中文的比如“我需要先读取 README 文件然后提取功能点……”。如果还是英文说明AGENTS.md没被读到或者放错了目录。这时候检查项目根目录下是否真的有AGENTS.md以及全局目录路径是否正确。4.3 检查最终回答与工具调用解读最终回答部分应该也是中文。重点看工具调用后的解读比如它执行了cat README.md之后对结果的说明是不是中文。有些配置只影响最终回答不影响中间解读这种半生效的情况最容易被忽略。你可以用一个带工具调用的请求来测opencode run 列出当前目录的文件并用中文说明每个文件可能的用途如果文件列表是原样英文这是对的路径不翻译但说明是中文就说明配置正确。如果说明也是英文回到AGENTS.md检查措辞把“必须用中文”写得更明确。4.4 用模型对话做交叉验证如果 Opencode 里怎么调都不对可以先用 模型对话 单独测一下模型本身对中文指令的响应。在对话里贴同样的语言要求看模型是否稳定输出中文。如果模型对话里正常、Opencode 里不正常问题就在 Opencode 的配置读取如果两边都不正常可能是模型选择或通道的问题。这样能快速定位故障层。5. 本篇常见错排查401、local proxy failed 与语言不生效配置过程中最容易卡住的几类问题我按报错现象整理出来你对号入座。5.1 401 报错Key 或端点不对现象是请求直接返回 401 Unauthorized。先核对三件套Base URL 是不是https://taotoken.net/apiKey 是不是从 API Keys 复制的完整字符串Model ID 是不是文档里存在的。常见错误是 Key 复制时带了空格或者 Base URL 多写了斜杠。改完重启再试。5.2 local proxy failed本地代理配置冲突这个报错通常和本地网络环境有关。检查配置文件里有没有残留的代理字段或者系统环境变量里有没有指向本地端口的代理设置。Opencode 会读取环境变量如果环境里有冲突的代理配置就会报 local proxy failed。清理掉无关的代理环境变量只保留 TaoToken 的端点配置重启即可。5.3 reading choices 报错响应结构不匹配出现reading choices相关错误一般是模型返回的结构和 Opencode 预期的不一致。先确认 Model ID 写对了不同模型的响应格式可能有差异。其次检查opencode.json里有没有多余的自定义字段干扰解析。把配置精简到只有 model、provider、timeout 三项再逐步加回能定位到是哪个字段引起的。5.4 OAuth 相关报错认证方式混用如果你同时配了 OAuth 和 API Key可能触发认证冲突。Opencode 接入 TaoToken 用 API Key 就够了不需要 OAuth 流程。检查配置里有没有 OAuth 相关的字段删掉它们只保留apiKey。这类报错信息里通常带 OAuth 字样看到就优先排查认证方式。5.5 语言设置不生效的三种原因排除了通道问题后如果中文还是不生效按这个顺序查第一AGENTS.md是否在 Opencode 会读取的目录项目根目录和全局目录都要确认第二文件编码是否 UTF-8非 UTF-8 会导致中文指令乱码第三指令措辞是否够强把“请用中文”改成“必须用中文”并明确区分 Thinking 和 Reply。我试过把语言要求写在AGENTS.md最末尾结果被前面的规则稀释挪到靠前位置后就稳定了。5.6 配置片段速查表配置项位置作用语言指令项目/全局 AGENTS.md控制思考与回答语言Base URLopencode.json provider.baseURL指定 TaoToken 端点API Keyopencode.json provider.apiKey认证Model IDopencode.json model选择模型timeoutopencode.json timeout避免长任务超时把这张表存下来下次换机器或换项目时照着配能省不少时间。6. 把中文语言配置固化进你的 Agent 工作流配置一次只能解决一个项目。如果你同时维护多个仓库或者经常换开发机建议把语言配置做成可复用的模板。我的做法是在全局AGENTS.md里放一份完整的语言基线项目里只写差异部分比如某个项目需要更正式的语气或者某个项目要求保留特定英文术语。这样既保证中文思考与回答的稳定性又不用每个项目重复写一遍。另外如果你打算长期跑 Agent 任务比如让 Opencode 自动处理 issue、生成周报、做代码审查语言一致性会直接影响你读日志的效率。思考过程是中文你扫一眼就知道它卡在哪一步如果中英混杂排查成本会翻倍。这也是为什么值得花十分钟把配置固化下来。对于需要长期编码和 Agent 编排的场景可以了解一下 Coding Plan它在通道稳定性和额度上更适合持续任务。配置细节和模型列表都在 接入文档 里遇到字段不确定时优先查文档比在社区里翻旧帖快。最后提醒一个实操细节每次改完AGENTS.md用opencode run跑一个带工具调用的短任务验证别等跑了半小时的长任务才发现语言没生效。验证成本很低但能避免大量返工。