【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
上篇 blog
【Agent】【OpenCode】用户对话提示词(费米估算)
继续分析了剩下的三个示例,其中剩下的第一个示例是个经典的费米估算问题,这类估算问题不需要读文件或调用工具,属于常识&数量级估算,AI 基于内置知识进行回答,可以测试 AI 的常识推理能力,接着分析了费米估算,是一种在信息有限,甚至毫无头绪的情况下,通过合理假设,逻辑分解和数量级估算,快速得出近似答案的思维方式,核心思想在于,把一个大而模糊的问题,拆解成若干小而可估的问题,再用常识和简单数学拼出答案,然后举了个费米提出的经典例子,并解释了费米估算的关键步骤与应用场景,最后总结了费米估算不追求精确,而强调逻辑清晰和结构化思维,能让人在信息不足时依然能行动,快速验证想法是否合理,下面继续分析
OpenCode
下面继续看剩下两个示例

- 基于目录内容的回答 :用户第一轮问
src/目录下都有哪些文件,AI 假装运行了ls src/,并在[...]中写出看到的结果:foo.c,bar.c,baz.c,然后第二轮用户接着问哪个文件实现了foo功能,AI 会根据上一步看到的文件名,合理推断实现应该在src/foo.c,这里展示了 AI 通过结合工具调用 + 推理来回答依赖项目结构问题的能力 - 复杂任务(需多工具协同) :这里的用户需求是为新功能写测试用例(很模糊的需求,需要上下文),在 AI 的思考中(
[...]里的内容),先用grep和通配符glob搜索项目中已有的测试文件位置,比如test/或__test__目录,并发读取多个相关文件后,了解测试风格和框架,再调用编辑文件工具,生成符合项目规范的新测试代码,这里[...]描述了 AI 应该分步行动的逻辑,体现了 AI Agent 的规划能力:先分解任务,再调用工具获取信息,最后执行操作
OK,下面看 OpenCode 给 AI Agent 主动性的行为准则

总体来看,其核心意思是告诉 OpenCode 客户端,可以主动做事情,但必须是在用户明确要求做某件事之后,如果用户只是问怎么做,就只能回答问题,禁止擅自执行操作,下面来逐条看下
- 首先第一句话就规定了:可以 be proactive(主动做做一些事情,比如自动编辑文件,运行命令等),但前提是用户明确让做这件事情,比如【帮我写一个函数】,【修复这个 BUG】,【创建一个 XXX 组件】等类似这样具有明确执行动作的提示词,而如果用户只是输入【怎么实现登录功能?】,【为什么这段代码编译报错?】这样没有明确执行动作的提示词时,只应该解释或建议,不能直接修改代码,或生成文件
- Not suprising,不能让用户感到惊讶(做了一些用户没让做的事情)
- 如果用户问的是如何做(how to),而不是替他做(do it for me),应该先给出思路,步骤,示例代码(作为说明),而不是直接操作项目文件 ,比如用户问【怎么用 Python 读取 CSV 文件】,只要回复
pandas.read_csv()示例即可,而不能直接帮用户创建读取 CSV 文件的脚本 - 当确实被用户要求修改或创建文件后,做完就停,不做解释或总结,除非用户要求解释,避免信息冗余,让用户完全掌控节奏,顺便也省点 tokens
最后举两个例子总结下
| 场景 | 用户输入 | 正确回应 | 错误回应 |
|---|---|---|---|
| 询问方法 | 如何在 React 中获取 URL 参数 | 可以用 useParams(React Router) 或 URLSearchParams |
我已为你在 App.js 中添加了参数解析代码(未经允许!) |
| 执行操作 | 创建一个 .gitignore 文件 |
(生成文件内容后停止) | 我已经创建了 .gitignore,它会忽略 xxx 文件的修改...(多余解释) |
给 OpenCode 主动性的行为规则总结一句话:问策略,就答策略,让动手,才动手,干完活,就闭嘴,这也是为了尊重用户的控制权,避免 AI 好心办坏事,比如在用户没准备好的时候就擅自改代码
OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】用户对话提示词(代码修改规范)