news 2026/5/16 8:20:02

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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命令去搜索想要的内容,所以执行命令的时候,不要用headtail,或者其他命令去限制输出,因为完整的内容会保存在临时文件里

OK,接着继续

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

需求尽量避免使用 Bash 命令优先使用 OpenCode 专用工具
找文件findlsGlob(文件名模式匹配,速度更快)
搜内容grep,rgGrep(OpenCode 内置的正则搜索工具)
读文件catheadtailRead(专门的读取工具,支持行范围等)
改文件sedawkEdit(精确编辑,保留上下文)
写文件echo >cat << EOFWrite(专门的文件创建,覆盖工具)
输出文字echoprintf直接输出文本,不用调用命令

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

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

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


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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 8:18:03

千问 LeetCode 2360.图中的最长环 public int longestCycle(int[] edges)

这道题的关键在于利用每个节点最多只有一条出边这个特殊性质&#xff0c;这样图就由若干条链 环组成&#xff08;基环内向树&#xff09;。最优雅的解法是时间戳法&#xff0c;一次遍历即可&#xff0c;不需要拓扑排序或DFS递归。Java 实现&#xff1a;class Solution {public…

作者头像 李华
网站建设 2026/5/16 8:13:03

嵌入式驱动调试与移植实战:从硬件原理到Linux内核的完整方法论

1. 项目概述&#xff1a;从“能跑”到“跑得稳”的驱动调试之路在嵌入式开发和系统底层软件的世界里&#xff0c;驱动调试与移植&#xff0c;绝对算得上是让工程师们又爱又恨的“硬骨头”。爱的是&#xff0c;当你把一个陌生的硬件驱动成功点亮&#xff0c;或者将一个驱动从A平…

作者头像 李华
网站建设 2026/5/16 8:11:11

二次元游戏模组管理革命:XXMI启动器一站式解决方案完全指南

二次元游戏模组管理革命&#xff1a;XXMI启动器一站式解决方案完全指南 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器是一个专为二次元游戏玩家设计的开源模组管理平…

作者头像 李华
网站建设 2026/5/16 8:09:03

Cordova+BLE+Arduino:Web技术快速构建iOS传感器数据监控App

1. 项目概述与核心价值如果你手头有一个Arduino项目&#xff0c;里面用到了像BNO055这样的九轴传感器来采集姿态数据&#xff0c;而你希望把这些数据实时地、无线地显示在iPhone上&#xff0c;但又不想花几个月时间去啃Swift或者Objective-C&#xff0c;那么这个项目就是为你量…

作者头像 李华