【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如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】用户对话提示词(工作目录&工作区根目录)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐