先说几个血淋淋的教训:在豆包里写Shell脚本提示词,如果你不把角色、输入格式、输出格式、边界条件、禁止行为这些要素死死锁住,那AI大概率会自由发挥,自动跳过你设的所有约束,甚至擅自帮你补全逻辑。最后拿到的脚本,能不能跑不说,搞不好还得花更多时间去查错。
明确指定脚本运行角色
第一步其实很简单:在提示词开头用一句话给豆包定死身份。比如“你是一个严格遵循Shell语法的Linux运维脚本生成器”。注意,别说什么“你可以帮忙写脚本”这种模棱两可的话。身份不明确,豆包就会默认用通用AI那套逻辑响应,结果就是混进来一堆Python伪代码或者自然语言解释,你看着都头大。
第二步更关键——直接告诉它“只做三件事”:只接收纯文本命令行输入、只输出可以直接粘贴执行的.sh文件内容、绝不添加任何注释或说明文字。这一步是收束权限,让它没法偷懒。
锁死输入与输出格式
方法一:用具体示例把输入样式框死。你得要求用户必须按这种格式提交请求:“【目标】清理/home下7天前的.log文件;【路径】/home;【保留天数】7”。如果豆包收到“删掉旧日志”这种模糊输入,直接拒绝执行,而不是自己瞎猜。
方法二:强制输出格式为纯脚本。在提示词末尾加一句:“输出内容必须以#!/bin/bash开头,以exit 0结尾,中间不能出现任何中文、空行、Markdown符号,更不能有‘注意’‘示例’这些引导性文字。”
列出不可逾越的限制条件
① 禁止使用交互式命令。read、select这些别想了,连echo提示语都不要有,脚本必须从头到尾静默执行。
② 禁止依赖外部工具。除非你明确声明环境中已经装了jq、yq、curl,否则豆包很可能自作主张加这些,结果目标服务器根本用不了。
③ 所有路径都必须支持变量替换。比如写成${LOG_DIR},别硬编码/home/admin/logs。
④ 遇到权限不足或路径不存在时,统一用echo "[ERROR] xxx"然后exit 1退出。千万别让它尝试sudo或者mkdir -p补救。
这一步是整段提示词的命门。每一条限制,背后都对应一个真实踩坑场景。就拿第二条来说,很多人没写,结果豆包在脚本里加了个jq解析JSON,部署上去发现目标服务器根本没装jq,整个流程直接崩掉。

