80、【Agent】【OpenCode】bash 工具提示词(专用工具)

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

背景

上篇 blog
【Agent】【OpenCode】bash 工具提示词(路径安全)

继续分析了禁止 cd ... && command 的原因:规避逻辑陷阱,确保命令执行在正确目录(由 OpenCode 的底层框架在调用系统 API 时切换目录,保证目标目录存并执行命令),防止命令注入,提升安全性(如果允许 AI 自由拼接 cd 命令,当目录路径中包含一些特殊字符时,很容易引发命令注入的漏洞),强制规范化,方便系统记录与调试(明确填写工作目录,这样系统日志非常清晰,出问题时也更容易排查),接下来继续分析了执行命令前的安全提醒:目录核实(如果接下来的命令是要创建新的文件夹或文件,AI 不能直接执行,必须先使用 ls 命令去检查一下父级目录是否存在),以及路径规范(强制 AI 要给带空格的路径加上双引号),在 Linux/Mac 终端里,如果文件路径中间有空格但没加引号,系统就会以为是两个分开的命令,下面继续分析

OpenCode

下面继续看 bash 工具使用说明

这里补充了四个细节:必选参数,超时设置,描述要求以及输出内容过多时的处理机制,下面详细看下:

  • 命令必填 :调用 bash 工具时,command(要执行的命令)是必填项,不能空着
  • 超时设置:AI 可以给命令执行设置一个最长运行时间(单位 ms),如果没设置,默认是 2 分钟(120000 ms),如果时间到了命令还没跑完,系统就会强制把它停掉,防止某个命令卡死导致整个程序一直等下去
  • 描述要求 :建议 AI 在调用 bash 工具时,用 5~10 哥单词简单描述下这个命令是干啥的(比如 Install project dependencies),主要是为了方便用户在查看日志或调试时,能一眼看明白 AI 当时在干什么
  • 输出内容过多时的处理机制(重点) :如果命令打印出来的结果太长了,超过了设定的最大行数 ${maxLines} 或最大字节数 ${maxBytes},OpenCode 不会把这些内容全部塞进对话里,会自动把完整的输出内容保存到一个临时文件,并给 AI 展示前面的一小部分,想查看完整内容的话,OpenCode 提供了专门的 read 工具(后面介绍),配合 offset/limit 等参数可以读取特定段落,或者用 grep 命令去搜索想要的内容,所以执行命令的时候,不要用 head,tail,或者其他命令去限制输出,因为完整的内容会保存在临时文件里

OK,接着继续

这里进一步强调了在日常操作中,AI 要尽量选 OpenCode 提供的专业工具,而不是直接调用 Bash 命令去执行 Linux 的原生命令,下面给出了更安全,更高效的替代方案

需求 尽量避免使用 Bash 命令 优先使用 OpenCode 专用工具
找文件 find,ls Glob(文件名模式匹配,速度更快)
搜内容 grep, rg Grep(OpenCode 内置的正则搜索工具)
读文件 cat,head,tail Read(专门的读取工具,支持行范围等)
改文件 sed,awk Edit(精确编辑,保留上下文)
写文件 echo >,cat << EOF Write(专门的文件创建,覆盖工具)
输出文字 echo,printf 直接输出文本,不用调用命令

用这些专用工具替代,有如下考虑

  • 安全可控 :这些 OpenCode 专用的 Read,Write,Edit 等工具在底层实现时做了大量的权限检查和路径校验,防止 AI 误删文件或越权操作
  • 提高效率:像 Glob 和 Grep 这种专用工具,底层往往经过了高度优化,比在 Bash 里直接跑原生命令效率更高,消耗的上下文 Tokens 更少
  • 节省资源 :如果 echo 或 printf 只是想单纯输出一句话,完全没必要去启动一个 Shell 进程来执行,直接让 OpenCode 输出文本就像,既快又省事

所以最后总结下,这里就是给 AI 定了个规则:除非用户明确要求使用某个 Bash 命令,或者确实没有专用工具能够完成任务,那么就优先使用 OpenCode 内置的这些专用工具,而不是在 Bash 里执行各种 Linux 原生命令


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

相关推荐
信马堂4 小时前
WorkBuddy 接入第三方模型 API 全流程:安装与配置实录
人工智能·大模型·token·ai算力·workbuddy
朝朝辞暮i5 小时前
VLA 系统学习第 4 课:一个 Batch 进入神经网络后,模型到底是怎么“学会”的?
人工智能·python·神经网络·vla
IT古董5 小时前
《FDE前沿部署工程师实战教程》33 - Enterprise AI Observability:从Agent Trace到全链路智能运维
数据库·人工智能
xsd202411185 小时前
地网腐蚀AI识别算法全解析:从锈蚀图像到地下腐蚀快速定位
人工智能
oooost5 小时前
pytorch学习笔记2(transformer)
人工智能·机器学习
云杂项6 小时前
Exploring Model Inversion Attacks in the Black-box Setting(个人笔记)
人工智能
还卿一钵无情泪6 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
冬奇Lab7 小时前
LLM 驱动的自动化测试系列(06):移动端自动化(二)——DroidRun/Mobilerun 的角色级模型拆分
人工智能·测试
冬奇Lab7 小时前
一天一个开源项目(第230篇):HandRaw-Style —— 把 327 种手绘风格、165 种排版、36 种配色编号化,让 AI 画图不再每次都飘
人工智能·开源·资讯
罗西的思考7 小时前
从陶哲轩的访谈看:AI 数学研究方法论 & 给其它行业的启示
人工智能