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 工具提示词(专用工具)

相关推荐
Joseph Cooper2 小时前
AI Agent 记忆系统深度调研 2026:从基础原理到企业级方案
人工智能·长期记忆
代码AI弗森2 小时前
GGUF、GPTQ、AWQ、EXL2、MLX、VMLX...运行大模型,为什么会有这么多格式?
人工智能
团象科技2 小时前
跨境合规压力加剧,海外云风控筑牢 AI 出海安全底座
大数据·人工智能
测试_AI_一辰2 小时前
AI产品测试框架:从官方规范反向推导测试用例
人工智能·功能测试·自动化·prompt·测试用例·ai编程
七夜zippoe2 小时前
OpenClaw 上下文管理:Token 优化策略
大数据·人工智能·深度学习·token·openclaw
Bode_20022 小时前
AI时代下构建制造企业的创新模式
人工智能·制造
Mr数据杨2 小时前
【CanMV K210】显示交互 触摸屏画图与 LCD 轨迹绘制
人工智能·硬件开发·canmv k210
Zfox_2 小时前
【LangGraph】持久化(Persistence)
开发语言·人工智能·redis·langchain·ai编程·langgraph
_Evan_Yao2 小时前
计算机大一新生如何选择方向(前端/后端/AI/运维)?
运维·前端·人工智能·后端