77、【Agent】【OpenCode】bash 工具提示词(持久化)(一)

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

背景

上篇 blog
【Agent】【OpenCode】用户对话提示词(addtionalProperties 属性)

继续补充分析了 addtionalProperties 关键词,提到了 OpenCode 设置成 false,是为了确保 OpenCode 前端界面只接收它能理解的参数,防止 AI 传一些前端不支持的参数导致程序崩溃,强迫 AI 传给工具的数据是纯净完全符合预期的,此外,addtionalProperties 关键字也是 JSON Schema 标准中的内容,专门用于控制对象中未在 properties 里明确定义的属性是否合法,其值除了可以是布尔值,还可以是一个子 Schema,用来定义额外属性必须符合的格式,然后继续分析了作为单个问题的完整数据结构,接着继续分析了下一个工具 bash,OpenCode 定义的 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 意外退出了,也可以设置自动清零掉这些后台 Shell


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】bash 工具提示词(持久化)(二)

相关推荐
m0_638079626 分钟前
2026年AI论文写作辅助工具技术对比与使用观察
大数据·人工智能
商业数据派12 分钟前
日赚近1亿的网易,这个季度栽在了拼多多身上
大数据·人工智能
甲维斯13 分钟前
DeepSeek还是“睁眼瞎” ,最新视觉模型测试!
人工智能
悟天特斯14 分钟前
智慧楼宇边缘计算实战:从端侧自治到云边协同的算力下沉架构
人工智能·物联网·架构·边缘计算
long31630 分钟前
封装(Encapsulation)
java·人工智能·ai·ai编程
不灭的程序员阿澄39 分钟前
把多个 AI 网站装进一个常驻托盘的桌面窗口里,像切换原生 App 一样切换 AI
人工智能·chatgpt
长谷深风11141 分钟前
AI Tool 设计:粒度、参数与错误恢复怎么做
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计
张忠琳42 分钟前
【deepseek-harness】DSH 文档合辑 · 篇一:核心架构与概览
ai·agent·deepseek·harness
张彦峰ZYF1 小时前
从“打分模型”到“审计智能体”:Agent-as-a-Judge如何重构复杂AI系统的评测范式
人工智能·agent-as-judge·llm-as-a-judge·agentevaluation·deepswe·verifier·agentic search
peijiping1 小时前
AI多智能体解惑:父子子智能体 vs 团队智能体,为什么主流IDE默认只用前者?
人工智能·ai agent·claude code