77、【Agent】【OpenCode】bash 工具提示词(持久化)(一)
【声明】本博客所有内容均为个人业余时间创作所述技术案例均来自公开开源项目如GithubApache基金会不涉及任何企业机密或未公开技术如有侵权请联系删除背景上篇 blog【Agent】【OpenCode】用户对话提示词addtionalProperties 属性继续补充分析了addtionalProperties关键词提到了 OpenCode 设置成false是为了确保 OpenCode 前端界面只接收它能理解的参数防止 AI 传一些前端不支持的参数导致程序崩溃强迫 AI 传给工具的数据是纯净完全符合预期的此外addtionalProperties关键字也是 JSON Schema 标准中的内容专门用于控制对象中未在 properties 里明确定义的属性是否合法其值除了可以是布尔值还可以是一个子 Schema用来定义额外属性必须符合的格式然后继续分析了作为单个问题的完整数据结构接着继续分析了下一个工具bashOpenCode 定义的bash工具和在终端里直接输入 bash 命令本质上是一回事但这里的bash工具在安全性和便利性上做了很多包装可以理解为一个带着安全校验和导航功能的 Bash并对比了bash工具和终端 Bash 的区别下面继续分析OpenCode下面来继续分析bash工具这里规定了 AI 在后台执行终端命令时必须遵守的规则基础能力OpenCode 可以执行 Bash 命令并且是在一个持久会话中运行就像打开一个终端窗口一直没关上一个命令设置了某个环境变量下一个命令依然能生效状态是连贯的工作目录所有命令默认在${directory}也就是当前项目的根目录下运行如果需要在别的文件夹运行命令就必须使用工具的workdir选项填好路径来指定此外这里的提示词明确强调禁止使用cd ... command这种写法职责边界专门用来执行终端操作比如git代码管理npm安装依赖docker容器操作禁止用 Bash 命令来读写编辑或查找文件内容文件的增删查改有专门的文件工具去处理这里的 Bash 工具只负责发号施令跑程序对于普通终端来说一旦关掉窗口或者断开 SSH 连接当前会话和里面的环境变量运行状态就没了而上面提到了OpenCode 执行 Bash 命令是在一个持久会话中运行能做到关掉终端不丢失状态这会涉及到一些进程管理和会话保持的技术下面来分析下做这种持久化会话的一些大体方向在后台维护一个常驻的 Shell 进程Agent 程序在启动时可以通过代码比如subprocess模块创建一个真实的长期存活的 Shell 进程比如/bin/bash这个 Shell 进程会一直在后台默默运行不退出可以看到OpenCode 并没有每次执行命令都临时开一个一次性的 Shell而是统一维护一个或数个常驻的后台 Shell 进程当远端 AI 模型需要执行命令时OpenCode 就可以把命令源源不断地投喂给这个已经存在的 Shell 进程的标准输入 stdin然后读取它的标准输出 stdout而因为是同一个 Bash 进程在干活所以比如 AI 上一次设置的环境变量下一次命令在执行时依然能读取到守护进程与超时控制为了防止这个常驻的 Shell 变成僵尸进程或者无限期占用服务器资源可以将其作为守护进程Daemon来管理并加上超时Timeout机制从安全角度OpenCode 主程序会监控这个 Shell 进程如果长时间没有接收到远端 AI 模型新的命令主程序就可以把它安全关闭而如果 OpenCode 意外退出了也可以设置自动清零掉这些后台 ShellOK本篇先到这里如有疑问欢迎评论区留言讨论祝各位功力大涨技术更上一层楼更多内容见下篇 blog【Agent】【OpenCode】bash 工具提示词持久化二
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2601531.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!