79、【Agent】【OpenCode】bash 工具提示词(路径安全)

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

背景

上篇 blog
【Agent】【OpenCode】bash 工具提示词(持久化)(二)

分析到了真正的持久化分成了两个层级:短时的会话持久化(也就是常驻后台进程,这种方式在用户连续和 AI 交互的这段时间里,让 Shell 进程一直活着,保证 OpenCode 连续命令时,状态是连贯的),以及真正的数据持久化(在底层做状态快照,当 Agent 客户端发现用户长时间没动静,或者准备关闭 Shell 进程时,会把当前 Shell 里的关键状态打包,存到硬盘里,用户下次再唤醒这个 AI 时,客户端先去读取上次存档的快照,然后再重新创建一个 Shell 进程,并自动把之前的环境变量和目录状态恢复回去),所以这里说的 bash 工具持久化,并不是说那个具体的进程永远不会退出,而是进程可以被销毁,但状态永远能被找回,另外,准备开始分析禁止使用 cd ... && command 的原因,下面继续

OpenCode

下面继续分析这里禁止 cd ... && command 的原因

  • 规避逻辑陷阱,确保命令执行在正确目录 :在 Linux 系统中,&& 表示前一个命令成功后,才执行后面的命令,如果 AI 写了 cd 不存在的目录 && npm install,则如果 cd 失败了,后面的 npm install 根本就不会执行,而 AI 可能会误以为依赖安装成功了,但实际上在原来的目录里啥都没干,而使用工具自带的 workdir 参数,是由 OpenCode 的底层框架在调用系统 API(比如 subprocess)时切换目录,保证目标目录存并执行命令
  • 防止命令注入,提升安全性 :如果允许 AI 自由拼接 cd 命令,当目录路径中包含一些特殊字符(比如分号 ;,管道符 | 或者换行符)时,很容易引发命令注入的漏洞 ,比如路径如果是 my_folder; rm -rf /,直接拼接到 Bash 里执行,会引发灾难,而使用 workdir 参数,OpenCode 框架会在底层对路径进行严格的转义和处理,从根本上杜绝此类安全隐患
  • 强制规范化,方便系统记录与调试 :AI 的底层框架需要精确记录在哪个目录下做了什么事,如果 AI 自己在命令里写 cd,框架很难精确解析出 AI 到底想切到哪个目录,而强制使用 workdir 参数,相当于让 AI 在提交任务时,明确填写工作目录,这样系统日志会非常清晰,出问题时也更容易排查

OK,下面继续分析,接下来是执行命令前的安全提醒

这里明确要求 AI 在真正运行命令之前,必须先完成两个安全检测,防止 AI 犯低级错误或者产生幻觉

  • 目录核实 :如果接下来的命令是要创建新的文件夹或文件,AI 不能直接执行,必须先使用 ls 命令去检查一下父级目录是否存在,确认没走错地方,举个例子,如果 AI 想运行
bash 复制代码
mkdir foo/bar

foo 里面新建一个 bar 文件夹,就必须先运行

bash 复制代码
ls foo

确认 foo 这个文件夹是真实存在的,然后再去创建 bar,否则如果 foo 都不存在,直接创建 bar 就会报错

  • 命令执行与规范 :这里强调了两个细节,一个路径规范,一个是结果反馈,其中路径规范强制 AI 要给带空格的路径加上双引号,因为在 Linux/Mac 终端里,如果文件路径中间有空格(比如 My Documents),不加引号,系统就会以为是两个分开的命令,从而报错,比如

正确的做法:mkdir "/Users/name/My Documents"(加引号,系统知道这是一整条路径)

错误的做法:mkdir /Users/name/My Documents(不加引号,会失败)

确保路径格式没问题后,再去真正执行命令,并且要把终端里打印出来的结果(比如报错信息,执行成功的提示等)完整地记录下来


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

相关推荐
九酒2 小时前
AI Agent 开发踩坑记:口播功能非得用 APP 原生实现吗?
前端·人工智能·agent
蝎子莱莱爱打怪2 小时前
DSpark 讲透:DeepSeek 不换模型,硬把 V4 提速 85%,是怎么做到的?
人工智能·面试·程序员
Jackson__3 小时前
做了一段时间的AI coding后,我终于搞清了 CLI 和 MCP 的区别
前端·agent·ai编程
巫山老妖4 小时前
置身AI内
人工智能
IT_陈寒5 小时前
JavaScript项目实战经验分享
前端·人工智能·后端
vanuan7 小时前
两个AI智能体第一次对话-A2A双Agent协作实战
人工智能
kfaino8 小时前
码农的AI翻身(四)你好,我叫 Attention
人工智能·后端
小孔菜菜9 小时前
LLM / Agent / Skills / MCP 协同关系深度解析
agent
JouYY10 小时前
聊一下多 Agent 编排架构的应用实践
架构·llm·agent
雨落Re10 小时前
如何设计一个高质量Skill
人工智能