72、【Agent】【OpenCode】用户对话提示词(系统快照)
【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
上篇 blog
【Agent】【OpenCode】用户对话提示词(完结)
分析了工具使用规则的剩余部分:工具调用得批量发送(一个回复中同时调用多个工具),强制并行执行 Bash 命令,让系统并行运行这些命令,而不是串行,然后提示词要求简短,接着是安全底线(对恶意代码零容忍),这里的提示词之前已经出现过,这里属于重复提示词,接着最后一段提示词规定了 AI 在引用代码时的格式标准,要求是必须带上【文件路径:行号】,目的是为了让用户能利用 IDE 的点击跳转功能,瞬间定位到代码位置,显得更严谨,像是在做代码审查,然后提到了在 /prompt 目录下还有其他供应商的提示词,这些供应商中的提示词和 qwen.txt 差不多,大同小异,应该是基于同一个模板写的,然后提到了这里光是给 AI 定规则,就花了有足足 9700 个字符,下面继续分析
OpenCode
接着回到代理日志,可以看到,除了 qwen.txt 中给 AI 定义的规则提示词之外,还有额外的部分(系统快照),下面来分析这里的内容

系统快照提示词在 opencode/src/session/system.ts 文件

这里定义了两个异步函数,用于向 AI Agent 提供运行环境信息和可用技能列表,这两个函数通常用于在对话开始前,或执行特定任务时,向 AI 注入上下文,使其了解所处的系统环境和具备的能力,下面来详细分析下
environment(提供系统环境快照):负责收集并返回当前运行环境的关键信息,帮助 AI 了解当前正在哪个项目,什么系统上工作

这里包含了当前系统的具体信息:
- 模型信息:告知 AI 当前使用的具体模型名称以及供应商标识
- 项目路径
- 工作目录(Working directory):当前 opencode 进程运行的目录
- 工作区根目录(Workspace root folder):项目的根文件夹
- 版本控制:检测项目目录是否为 Git 仓库
- 系统信息:运行平台(比如 Windows,Linux,maxOS)和当前日期
- 目录结构(当前被禁用):这里的代码中包含了一个被
false条件阻止的逻辑,原本意图是使用 Ripgrep.tree 工具列出工作目录的目录树(限制 50 行),但目前由于&& false的存在,这部分不会被执行
这些系统信息会被包裹在 <env> 标签内,而目录结构(当前没被启用)会被包裹在 <directories> 标签里
接下来解释下上面提到的工作目录,和工作区根目录的区别,这两个概念在 AI Agent 中很重要,简单来说,工作区根目录类似 /home,决定了 AI 的工作范围,而工作目录是脚下,决定了 AI 在哪里干活,下面用个表格对比下
| 概念 | 工作区根目录 | 工作目录 |
|---|---|---|
| 英文 | Workspace Root Folder | Working Directory(CWD) |
| 比喻 | 房子的围墙 | 当前所在房间 |
| 定义 | 项目的顶层文件夹,通常是 Git 仓库的根目录 | 当前进程(终端,命令等)正在运行的目录 |
| 作用 | 界定边界,定义了 AI 可活动的范围,通常限制 AI 只能在这个目录内读写文件,防止误删系统文件 | 定位参照,决定了相对路径的解析起点 |
| 变动性 | 相对固定,一旦项目打开,根目录通常不变 | 随时可变,AI 可以通过 cd 命令进入项目空间的子文件夹,工作目录就会随之改变 |
- 工作区根目录:安全围栏与项目锚点
- 工作目录:操作的基准点
OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】用户对话提示词(工作目录&工作区根目录)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)