ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【Agent】【OpenCode】用户对话提示词(Agent 主动性)实战:把 settings 改到 TaoToken

【Agent】【OpenCode】用户对话提示词(Agent 主动性)实战:把 settings 改到 TaoToken 1. OpenCode Agent 主动性提示词到底解决什么问题OpenCode 是一个跑在终端里的开源编码 Agent它能读文件、改代码、执行命令但很多人第一次用会发现一个尴尬现象你问它「怎么实现登录功能」它直接给你把auth.ts建好了你只是想让它解释一段报错它顺手把整个文件重写了。反过来你明确说「帮我修这个 bug」它却只给你一段建议让你自己动手。这就是 Agent 主动性proactivity没调好的典型表现。主动性不是「越主动越好」而是要在「用户明确要求执行」和「用户只是询问方法」之间划一条清晰的线。OpenCode 内置了一套行为准则来约束这件事核心逻辑可以概括成四句话问策略就答策略让动手才动手干完活就闭嘴不替用户做没让做的事。这套准则对开发者来说意味着什么意味着你可以放心地把 OpenCode 接到真实项目里不用担心它在你没准备好的时候擅自改代码。但前提是你得把 settings 配置对把提示词模板写清楚还要把 API 通道接稳。这篇就围绕这三件事展开先讲清楚主动性提示词的设计逻辑再给出可复制的 settings 配置片段最后用 TaoToken 统一 Key/API 通道做一次完整的接入和验证。适合谁看如果你正在用 OpenCode 做日常编码或者想把 Agent 接入自己的开发流又或者你被「Agent 擅自改文件」坑过这篇的配置和测试步骤可以直接跟做。核心检索词就三个OpenCode Agent 主动性提示词、settings 配置、TaoToken 接入。我试过把 OpenCode 的默认行为和调整后的行为做对比差别非常明显。默认状态下它对模糊需求的处理偏向「先做了再说」加上主动性约束后它会先确认意图再决定是回答还是执行。下面从场景问题开始一步步拆。2. TaoToken 前置准备统一 Key 与 API 通道在改 settings 之前先把 API 通道准备好。OpenCode 支持多种模型提供方但如果你想让配置更统一、Key 管理更简单可以用 TaoToken 作为统一入口。它的作用是提供一个兼容 OpenAI 风格的 API 通道你只需要一个 Key就能在 OpenCode 里调用不同模型不用为每个模型单独配一套环境变量。先拿到 Key。打开 https://taotoken.net/api-keys 登录后创建一个 API Key复制保存。这个 Key 后面会写进 OpenCode 的配置文件里。注意不要把它提交到 Git 仓库建议用环境变量或者本地配置文件管理。TaoToken 的 API 基础地址是 https://taotoken.net/api 这个地址在配置里会作为baseURL使用。它兼容 OpenAI 的/v1/chat/completions接口格式所以 OpenCode 里凡是支持 OpenAI 兼容模式的地方都可以直接填这个地址。模型 ID 怎么选TaoToken 的模型列表可以在 https://taotoken.net/models 查看。常见的编码模型比如claude-sonnet-4-20250514、gpt-4o等都可以用。你在配置里填的 Model ID 必须和平台上一致否则会报模型不存在的错误。这里要强调一个三件套概念Base URL、API Key、Model ID。这三个东西在任何 Agent 工具里都是绑定的缺一个都跑不起来。OpenCode 的 settings 里这三个分别对应baseURL、apiKey、model。后面 §3 的配置片段会完整写出。如果你还没决定用哪个模型可以先在 https://taotoken.net/chat 里试一下对话确认模型能正常响应再写进 OpenCode 配置。这样能避免「配置写完了但模型调不通」的来回排查。另外TaoToken 的接入文档在 https://taotoken.net/doc 里面有各语言的调用示例。OpenCode 用的是 Node 环境你可以参考文档里的 Node 示例来理解请求格式。不过 OpenCode 已经封装好了你只需要填配置不用自己写请求代码。前置准备就这些一个 Key、一个 Base URL、一个 Model ID。拿到这三样就可以进入配置环节了。3. 可复制 settings 配置把 OpenCode 接到 TaoTokenOpenCode 的配置文件通常放在项目根目录或者用户主目录下文件名可能是opencode.json或settings.json具体取决于你的安装方式。下面给出一份完整的 JSON 配置片段你可以直接复制把apiKey换成你自己的。{ provider: { taotoken: { type: openai, baseURL: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, models: { claude-sonnet-4-20250514: { name: Claude Sonnet 4, maxTokens: 8192 }, gpt-4o: { name: GPT-4o, maxTokens: 4096 } } } }, defaultModel: taotoken/claude-sonnet-4-20250514, agent: { proactivity: explicit, confirmBeforeWrite: true, confirmBeforeCommand: true, stopAfterAction: true } }这份配置里provider段定义了 TaoToken 作为 OpenAI 兼容提供方baseURL填https://taotoken.net/apiapiKey填你创建的 Key。models段列出你要用的模型key 是 Model ID必须和平台一致。defaultModel指定默认用哪个模型格式是provider/model-id。agent段是主动性控制的核心。proactivity设为explicit表示只在用户明确要求执行时才动手confirmBeforeWrite和confirmBeforeCommand设为true表示写文件和执行命令前会先确认stopAfterAction设为true表示执行完就停不做多余解释。这四个参数配合起来就能实现「问策略答策略让动手才动手」的行为。如果你用的是 TOML 格式的配置等价写法如下[provider.taotoken] type openai baseURL https://taotoken.net/api apiKey sk-你的TaoToken密钥 [provider.taotoken.models.claude-sonnet-4-20250514] name Claude Sonnet 4 maxTokens 8192 [agent] proactivity explicit confirmBeforeWrite true confirmBeforeCommand true stopAfterAction true两种格式选一种就行看你项目里原本用哪种。配置写完后OpenCode 启动时会读取这个文件。如果配置路径不对它会用默认配置默认配置可能不会开启主动性约束所以一定要确认文件被正确加载。还有一个细节如果你在团队里共享项目不要把apiKey明文写进提交到仓库的配置文件。可以用环境变量引用比如apiKey: ${TAOTOKEN_API_KEY}然后在本地 shell 里 export 这个变量。OpenCode 支持这种变量替换语法。配置写好后先别急着跑复杂任务用 §4 的验证步骤确认通道通了、主动性生效了再进入正式使用。4. 验证请求测试 Agent 主动追问与主动执行配置写完后需要验证两件事一是 API 通道能正常请求二是主动性行为符合预期。先做通道验证再做行为验证。通道验证最简单的方式是直接在 OpenCode 里发一条消息看它能不能正常回复。启动 OpenCode 后输入你好请用一句话介绍你自己如果配置正确你会看到模型正常返回。如果报错先看 §5 的排查部分。通道通了之后开始测主动性。测试一询问方法看它是否只回答不执行。输入怎么用 Python 读取 CSV 文件预期行为它应该只给你pandas.read_csv()的示例代码和说明不会在你的项目里创建任何文件。如果它直接建了一个read_csv.py说明proactivity没生效回去检查配置里的agent段。测试二明确要求执行看它是否动手。输入帮我创建一个 .gitignore 文件忽略 node_modules 和 .env预期行为它应该生成.gitignore的内容并写入文件然后停止不做多余解释。如果它写完后还长篇大论解释「这个文件会忽略哪些内容」说明stopAfterAction没生效。测试三模糊需求看它是否主动追问。输入帮我优化一下这个项目预期行为它应该先追问你具体想优化哪个部分而不是直接开始改代码。这就是「主动追问」的体现——在需求不明确时主动确认意图而不是擅自行动。测试四执行后是否停止。输入在 src/utils.ts 里加一个 formatDate 函数预期行为它写入函数后立即停止不附加解释。你可以检查文件内容是否正确然后继续下一条指令。这四个测试覆盖了主动性的四个关键点不擅自执行、明确执行、主动追问、执行后停止。如果都通过说明你的 settings 配置和提示词模板都到位了。提示词模板方面你可以在 OpenCode 的 system prompt 里加入一段约束比如你是一个编码 Agent。当用户询问方法时只给出思路和示例不修改任何文件。当用户明确要求执行时才调用工具。执行完成后立即停止不做额外解释。需求不明确时先追问确认。这段模板和 settings 里的agent段配合使用效果更稳。settings 是硬约束提示词是软引导两者结合能覆盖大部分场景。5. 本篇常见错排查401、local proxy failed、reading choices配置和验证过程中最容易遇到三类报错。下面逐个给出原因和排查步骤。401 Unauthorized。这个报错说明 API Key 无效或者没被正确读取。先检查apiKey字段是否填了完整的 Key有没有多余空格。然后确认 Key 没有过期或被删除可以到 https://taotoken.net/api-keys 重新生成一个。如果你用的是环境变量引用检查变量名是否拼写正确以及 shell 里是否真的 export 了。还有一种情况是baseURL写错了比如漏了/api或者多了/v1TaoToken 的基础地址是https://taotoken.net/api不要自己加后缀。local proxy failed。这个报错通常出现在网络层说明 OpenCode 尝试连接baseURL时失败了。先确认你的网络能正常访问https://taotoken.net/api可以用curl测一下curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的密钥 \ -H Content-Type: application/json \ -d {model:claude-sonnet-4-20250514,messages:[{role:user,content:hi}]}如果 curl 能通但 OpenCode 报这个错检查 OpenCode 的配置里baseURL是否被其他配置覆盖了。有些项目里有多层配置优先级搞错会导致实际用的地址不对。reading choices 报错。这个报错说明返回的 JSON 结构里没有choices字段通常是模型返回了错误信息而不是正常响应。常见原因是 Model ID 填错了平台找不到对应模型返回了一个错误对象。检查defaultModel和models里的 key 是否和平台一致。另一个原因是maxTokens设得太大超过了模型限制也会导致异常返回。把maxTokens调小一点再试。OAuth 相关报错。如果你在配置里同时开了 OAuth 和其他认证方式可能会冲突。OpenCode 的 TaoToken 接入用的是 API Key 认证不需要 OAuth。检查配置里有没有残留的 OAuth 设置有的话删掉。CC Switch / Cline MCP / Codex auth.json 场景。如果你是从这些工具迁移过来注意三件套要写全Base URL 填https://taotoken.net/apiKey 填 TaoToken 的 KeyModel ID 填平台上的模型 ID。少一个都会报错。特别是 Codex 的auth.json里面如果还留着旧提供方的配置会覆盖 OpenCode 的设置建议清理掉。排查顺序建议先 curl 测通道再检查配置字段最后看模型 ID。大部分问题出在 Key 和 Model ID 上网络问题相对少见。6. 长期编码与 Agent 工作流把配置沉淀下来配置调通之后下一步是把它沉淀成可复用的工作流。如果你每天都在用 OpenCode 做编码建议把 settings 文件纳入版本管理Key 用环境变量这样换机器或者团队协作时不用重新配。主动性提示词模板也可以抽成一个独立的 prompt 文件在启动时加载。对于长期编码场景可以考虑用 Coding Plan 来管理模型调用额度地址是 https://taotoken.net/coding-plan 。它适合需要持续调用模型的 Agent 工作流比按次调用更划算。如果你的 OpenCode 只是偶尔用按次调用就够了。另外OpenCode 的主动性行为不是一成不变的。你可以根据项目阶段调整proactivity参数在探索阶段设为explicit让它多问少做在明确执行阶段可以适当放宽让它连续执行多个步骤。但confirmBeforeWrite和confirmBeforeCommand建议一直开着避免误操作。最后给一个实用技巧把常用的主动性提示词模板存成一个文件比如~/.opencode/prompts/proactivity.md然后在配置里引用。这样你换项目时只需要改 settings 里的 provider 段提示词部分不用重写。实测下来这套组合能覆盖大部分日常编码场景Agent 的行为也更可控。
返回列表