76、【Agent】【OpenCode】用户对话提示词(addtionalProperties 属性)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Agent】【OpenCode】用户对话提示词(question 工具)

继续分析了 question 工具的 parameters 参数,其中 properties 字段下面有个 required 参数,这个参数是个 array 类型,里面只有一个字段 questions 属性,这里强调属性中的 questions 字段是必须提供的,然后开始分析核心属性 questions,这里是 AI 真正需要填写的部分,另外,该属性是个 array 数组类型,意味着 AI 可以一次性向用户提出多个问题,接着开始分析具体的问题项 items 信息,其中 required 规定了每个问题必须包含三个必填字段:question(完整问题),header(短标签),options(选项列表),接着重点分析了 additionalProperties 关键词,该字段决定了数据对象中,除了 OpenCode 明确列出的字段之外,是否还允许出现 OpenCode 未定义的额外字段,下面继续分析

OpenCode

上篇 blog 分析了 addtionalProperties 关键词,下面再补充分析下

可以看到,在 OpenCode 的工具定义中,都设置了 addtionalProperties: false,这是为了防止 AI 幻觉或乱填参数,确保 OpenCode 前端界面只接收它能理解的参数(比如这里的 labeldescription),防止 AI 传一些前端不支持的参数(比如 onClickcustomClass 等其他乱七八糟的参数)导致程序崩溃,强迫 AI 传给工具的数据是纯净,且完全符合预期的

当然,这个 addtionalProperties 关键字是 JSON Schema 标准中的内容,专门用于控制对象中未在 properties 里明确定义的属性是否合法,官方链接 JSON Schema Docs: additionalProperties

此外,additionalProperties 的值除了布尔值(true/false),还可以是一个子 Schema,用来定义额外属性必须符合的格式

OK,下面看 question 工具中几个比较关键的属性

这里定义了作为单个问题的完整数据结构,下面详细看下

  • question(完整问题):这是展示给用户的主要文本,一般是完整的问句,会详细描述 AI 想要问的内容,比如【您希望使用哪种数据库?】
  • header(短标题):一个非常简短的标签,提示用,在界面紧凑的地方,比如侧边栏,步骤条等显示,让用户能快速了解这个问题是什么,比如【数据库选择】,最多 30 个字符
  • options(选项列表):用户可以选择的答案列表,数组类型,里面可以包含多个对象,每个对象代表一个选项
  • label:选项上显示的简短文字
  • description:对该选项的详细结束
  • multiple(是否多选,可选项):控制用户能不能选多个答案,布尔值,默认单选

OK,接下来看下一个工具 bash


bash 工具的描述路径在 opencode/packages/opencode/src/tool/bash.txt

OpenCode 这里定义的 bash 工具和在终端里直接输入 bash 命令本质上是一回事,但这里的 bash 工具在安全性和便利性上做了很多包装,可以理解为一个带着安全校验和导航功能的 Bash ,下面来简单分析下 bash 工具和终端 Bash 的区别

维度 终端 Bash 命令 bash 工具
执行方式 用户输入什么,终端就执行什么 先检查,后执行 ,比如 bash 工具会先检查目录是否存在,路径是否有空格等
工作目录 需要手动 cd 切换工作目录 自动定位 ,默认在 ${directory} 运行,或者可以指定目录,不需要手动输入 cd 命令
安全性 如意误操作,比如误删文件 有防护 ,被明确禁止用于文件读写(其他专用工具的活儿),只负责运行命令,比如 gitnpm
路径处理 容易忘记给带空格的路径加引号 强制规范,提示词强制要求给带空格的路径加双引号,防止报错
持久性 每次新开窗口都是新的环境 持久会话 ,在一个 persistent shell session 中运行,意味着上一次命令设置的环境变量,在下一次打开该会话时还能用

OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog

相关推荐
久违 °6 小时前
【AI-Agent】TagMatrix 数据标注工具开发
人工智能·数据分析·go·agent·数据隐私
AI360labs_atyun7 小时前
腾讯推出电子牛马Marvis,好用吗?
人工智能·科技·ai
Dfreedom.7 小时前
Windows、虚拟机、开发板组网通信原理及调试通联步骤
人工智能·windows·部署·边缘计算·开发板·模型加速
3DVisionary7 小时前
蓝光三维扫描:医疗制造的精度焦虑怎么解
人工智能·算法·制造·蓝光三维扫描·医疗制造·三维检测·义齿检测
Are_You_Okkk_7 小时前
基于MonkeyCode解析AI研发新模式,根治开发低效痛点
大数据·人工智能·开源·ai编程
好评笔记7 小时前
机器学习面试八股——常用损失函数
人工智能·深度学习·算法·机器学习·校招
weixin_468466857 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
weixin_468466857 小时前
工业相机成像原理新手入门指南
人工智能·自动化·机器视觉·工业相机·光学·光学系统·成像原理
回眸&啤酒鸭7 小时前
【回眸】CSDN新增功能测评——AI数字营销之内容创作
人工智能
小糖学代码7 小时前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络