【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
上篇 blog
【Agent】【OpenCode】bash 工具提示词(专用工具)
继续分析了 bash 工具的使用说明,提到了四个细节:必选参数,超时设置,描述要求以及输出内容过多时的处理机制,其中最后一个是重点,OpenCode 会自动把完整的输出内容保存到一个临时文件,并给 AI 展示前面的一小部分,想查看完整内容的话,OpenCode 提供了专门的 Read 工具,可以配合 offset/limit 等参数可以读取特定段落,然后进一步强调了在日常操作中,AI 应该尽量选 OpenCode 提供的专业工具,而不是直接调用 Bash 命令去执行 Linux 的原生命令,并对比了一些安全高效的替代方案,主要是安全,这些专用工具在底层实现时会做大量的权限检查和路径校验,防止误删文件或越权操作等影响安全的行为,下面继续分析
OpenCode
继续看后面的提示词

这里主要有两点,首先第一点,如何发送多条命令:
- 能并行的就并行 :如果几条命令互不相干,比如同时查
git status和git diff,AI 应该一次性把多个请求打包发出去,而不是等一条命令跑完再发下一条 - 有先后顺序的用
&&:如果命令之间有依赖关系,比如必须先mkdir创建文件夹才能往里面cp复制文件,就要用&&把这些命令串起来,确保前一步成功了再走下一步 - 不在乎失败的命令用
;:如果不关系前面的命令是否执行成功,只想接着跑后面的命令,就用分号;连接多条命令 - 禁止用换行符:不能在命令之间直接敲回车换行,引号里的内容除外,OpenCode 客户端会自动处理命令的执行
下面是第二点,切换目录的规矩 ,其实这点前面的提示词说过,就是不能用 cd 命令切换工作目录去执行命令,要用 workdir 参数传递想要进哪个文件夹执行命令
下面看提交规则

这里的提示词用来规范 AI 帮助用户使用 Git 命令提交代码时的行为,防止 AI 自作主张改动 Git 仓库,或者执行一些可能导致代码丢失的危险操作,下面来具体看下
- 明确命令才动手,严禁主动提交:只有当用户明确要求 AI 创建 Git 提交(commit)时,AI 才能动手,如果指令模棱两可,AI 必须先问用户
- 不动配置文件 :永远不能修改用户的 Git 配置(
git config) - 不执行毁灭性命令 :除非用户明确要求,否则严禁执行任何不可逆,或者破坏性的命令,比如
git push --force强制推送,或者git reset --hard硬重置等,防止用户代码意外丢失 - 不绕过安全检查 :除非用户明确要求,否则不能跳过 Git 的钩子检查,比如
--no-verify
接着重点提到了使用 --amend 选项的注意事项,git commit --amend 可以用来修改最近一次的提交信息,但必须同时满足如下所有条件才能使用,否则一律创建新的提交:
- 前提 :要么是用户明确要求
amend,要么是提交成功后 Git 钩子(pre-commit hook)自动修改了文件,需要补录 - 归属 :最近一次提交(
HEAD)必须是 AI 在这次对话中刚刚创建的,这里会通过git log -1 --format='%an %ae'命令检查作者信息,这里%an表示作者的明泽(Author Name), - 状态 :这个提交还没有被推送到远程服务器,也就是
git status显示当前分支领先于远程分支
接着是两个关键的场景,如下两个场景禁止使用 --amend
- 失败处理 :如果提交失败,或者被钩子拒绝,此时不能再用
--amend,必须修复问题后,再创建一个全新的提交 - 已推送处理 :如果代码已经推送到远程,除非用户明确要求(因为需要用
git push --force),否则也不能用--amend
OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】bash 工具提示词(amend 风险)