64、【Agent】【OpenCode】用户对话提示词(推理链)
【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
上篇 blog
【Agent】【OpenCode】用户对话提示词(示例)
继续分析了 OpenCode 在用户对话中提供的示例,可以看到消除了自然语言冗余,示例中所有回答均为纯结果,确保输出可直接用于管道,然后分析了list files和watch files两个示例的区别,首先list files是个简单,常识性的问题,不需要额外工具或上下文,助手可以直接基于内置知识回复,所以直接输出了命令,没有多余解释或工具调用,而watch files并没有一个统一的标准命令,具体实现取决于项目配置,需要结合项目上下文给出一个推测性答案,两个示例清晰展示了 OpenCode 在处理简单事实查询,和需要上下文推理的开发任务的不同之处,接着解释了watch files的含义,是指监视文件或目录的变化,并在变化发生时,自动执行某些操作,比如前端开发中的热重载,TypeScript 自动编译代码等,下面继续分析
OpenCode
之前 blog 分析了watch files指的是监视文件或目录的变化,并在变化发生时,自动执行某些操作,下面再补充一下watch files的典型场景
- 重启 Node.js 服务:开发 Node.js 应用时,经常会用到
nodemon,比如
nodemon app.js该命令会监视 JS 文件,一旦被保存修改,就会自动重启服务器,省去手动停止再启动的麻烦
- 构建工具监听:比如 Webpack,Rollup,Gulp 等工具都支持
--watch选项,用于持续构建资源文件(比如 CSS,JS 打包等)
总结一下,操作系统提供了文件系统事件的通知机制,比如 Linux 的 inotify,macOS 的 FSEvent,Windows 的 ReadDirectoryChangsW,开发工具可以利用这些机制来监听文件的修改变化,而不需要轮询,效率很高,而watch files就是监控文件变换 + 自动响应,是现代开发中提升效率的关键功能
OK,再回到这两个示例
可以看到 AI 回复中带了比较显眼的方括号[ ],这种方括号[...]的用法是一种提示工程中的特殊标记方式,在 OpenCode 这类面向代码生成或开发助手的系统中很常见,这里的[...]并不是给最终用户看的输出内容,而是给 AI 模型自己看的思考过程和推理步骤,属于内部推理链的显式表达方式
这些内部推理链有如下作用:
- 模拟工具调用和进行上下文分析:展示分析过程,模型被训练成在回答复杂问题前,先分析需要哪些信息,比如列出当前目录文件
ls,再查看是否有 README.md,docs/,或 package.json 等文件,从中找出项目定义的监控命令(比如npm run dev) - 区分推理过程和最终答案:
[...]里的内容是推理过程,可以用于调试或引导模型行为,而换行后的npm run dev才是真正返回给用户命令 - 适配工具调用框架:在如 OpenCode,Cursor,CodeLlama 工具链等 AI 开发助手系统中,这种写法可以被 Agent 进一步解析为:
第一步:调用ls工具
第二步:读取某个文档文件
第三步:输出最终命令
虽然当前示例没有真实调用工具,但示例格式预留了这种能力
这种过程就像在学校解数学题时,只写答案是拿不了满分的,还需要把解题步骤完整地写下来,比如有题目如下
2x + 3 = 7,求 x
- 回答:[两边减 3 得 2x = 4,再除以 2 得 x = 2]
- 所以 x = 2
这里[...]就是答题的思考过程,最后才是答案
总结下,方括号[...]是模型内部的推理步骤说明,适配reasoning选项,用来引导 AI 如何结合工具和上下文得出答案,而真正的用户回复是括号之后的内容,这也是高级提示工程中常用的功能
OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
