同一件小事,含糊提示词和具体提示词在 AI Shell 里差在哪
今天在华为云 AI 开发者空间体验版的 AI Shell 里,我用同一件小事做了两次实验:生成一个带打分逻辑的今日任务清单脚本,并运行它。两次的区别只有提示词,一句含糊,一句具体,结果差得比我预想的大得多。
两句提示词
含糊提示词(20:58:51 发出):
帮我写一个带打分逻辑的今日任务清单脚本并运行它
具体提示词(21:06:15 发出):
请在 workspace 新建一个文件
today_tasks.py,内容是:用 Python 写一个今日任务清单脚本,任务固定 3 条——阅读30分钟(30分)、运动20分钟(30分)、写代码1小时(40分),每条用done=True/False表示是否完成;脚本运行时不要求人工输入,直接打印每条任务的完成状态和得分、总分(满分100分)以及一句总结;写好后直接用python3 today_tasks.py运行一次,把运行结果贴出来。不要用交互式input,不要另外创建子目录,文件名就是today_tasks.py。
实验环境是同一个 AI Shell 会话,会话名就叫“今日任务清单打分脚本”,两次走的都是同一条强制流程,先加载编码 skill,再走 CodeArts 写代码,这一点没有差别。
含糊提示词:7 分钟,脚本写好了,文件却找不到了
含糊那一次从发出到结束用了约 7 分钟(20:58:51 到 21:05:51)。AI 先按规则加载了强制编码 skill,做了健康检查,创建了 ACP 会话,把需求发给 CodeArts。CodeArts 很快写出了一个 128 行的 task_checklist.py,有 7 条预置任务,每条带 1 到 4 的权重,运行时逐条展示,输入 0 到 10 分打分,或者输入 s 跳过,最后按加权公式计算:加权总分等于得分乘权重的和,除以权重的和,满分 10 分,再换算成完成率,并按完成率分级,80% 以上优秀,60% 以上良好,40% 以上继续努力,40% 以下加油,还用 ASCII 表格打印结果。只看这份设计,它比我想要的还丰富。
问题出在文件落点上。因为我没有指定文件名和位置,CodeArts 把文件写进了沙箱里一个叫 daily-task-checklist 的子目录,AI Shell 在宿主机上根本找不到这个文件。接下来 AI 花了大部分时间在找文件:直接读文件失败,找沙箱进程,用 nsenter 进沙箱看到的目录是空的,读日志定位到文件,再用 ACP 读内容被截断,改用 base64 还是被截断,最后把文件复制到工作区根目录,宿主机上才看到它,一共 3534 字节、127 行。取文件的方法前后换了约 5 种,工具调用约 15 次,代码本身一处也没有改,改的全是找文件的方式。
最后运行还要靠模拟输入才能跑起来。AI 用 8、7、9、跳过、6、5、4 这组输入跑了一次,得到加权总分 7.18 分,满分 10 分,完成率 71.8%,评价是良好。也就是说,含糊提示词的脚本不是不能跑,但它默认要人坐在旁边逐条打分,单独跑一次需要额外准备输入,而且第一次并没有一次跑通。
具体提示词:2 分钟,一次就跑通了
具体那一次从发出到结束只用了约 2 分钟(21:06:15 到 21:08:14)。同样先加载编码 skill、做健康检查、发给 CodeArts,但 CodeArts 一次监控后就创建并验证通过了文件。AI 把 today_tasks.py 复制到工作区根目录,读了一遍确认内容无误,再复制到工作目录并直接运行,全程没有找文件、没有换方法、代码一处也没有改。
脚本本身也简单得多,3 条固定任务写在 TASKS 列表里,每条是字典,包含名字、分数和 done,done=True 拿满分,done=False 得 0 分,没有 input(),直接跑出结果。AI 默认的完成状态是阅读完成、运动未完成、写代码完成,运行结果是:
✅ 阅读30分钟:30/30分
❌ 运动20分钟:0/30分
✅ 写代码1小时:40/40分
总分:70/100
今天完成了2/3项任务,得分70/100
两次运行结果的差别很直观:含糊那次得分是 7.18 分,满分 10 分,评价良好;具体那次得分是 70 分,满分 100 分,完成了 2/3 项任务。这两个分数不能直接比大小,因为打分规则根本不一样,一个是 7 条任务按权重打 0 到 10 分,一个是 3 条任务按完成与否拿固定分。真正该比的,是得到这个结果花了多少力气。
对比表
| 对比项 | 含糊提示词 | 具体提示词 |
|---|---|---|
| 耗时 | 约 7 分钟 | 约 2 分钟 |
| 文件名 | AI 自己定,task_checklist.py |
我指定,today_tasks.py |
| 任务数量 | 7 条,权重 1 到 4 | 3 条,固定 30、30、40 分 |
| 打分方式 | 逐条输入 0 到 10 分或 s 跳过,加权平均 | done 为真拿满分,否则 0 分 |
| 是否要人工输入 | 要,运行时逐条打分 | 不要,直接出结果 |
| 文件落点 | 沙箱子目录,宿主机找不到 | 工作区根目录 |
| 取回文件 | 换了约 5 种方法,约 15 次工具调用 | 复制一次就位 |
| 代码修改次数 | 0 处,改的是找文件的方法 | 0 处 |
| 一次跑通 | 没有,靠模拟输入才跑完 | 是,直接运行出结果 |
差在哪:不是字数,是替 AI 少做几个决定
两次实验最有意思的一点是,具体提示词并没有绕过任何流程,两次都走了同一条强制编码流程,同样的 skill、同样的 CodeArts、同样的沙箱。差的是具体提示词提前替 AI 做了 5 个决定:文件名叫什么、任务是哪几条、每条多少分、打分规则是完成即满分还是逐条打分、运行时要不要人输入、不需要就直接运行并贴结果。含糊提示词把这 5 个决定都留给了 AI,AI 每做一个决定,就可能多出一条岔路:文件名自己定,就可能落在沙箱子目录里;任务自己编,就编出 7 条带权重的;打分方式自己选,就选了交互式逐条打分。
所以具体不是啰嗦,是把“做什么、做到什么程度、怎么验收”一次讲清。写给 AI 的提示词里,这三句话最值钱:第一句定文件和语言,第二句定任务和分数,第三句定运行方式和输出样子。少了第一句,文件会落在意想不到的地方;少了第二句,任务和分数会自己长出来;少了第三句,脚本可能会停在等输入的那一步。
给自己的三条提醒
第一,写提示词先写验收标准。先想好运行成功时应该看到什么样的一行字,再倒着写需求。这次具体提示词里“直接打印每条任务的完成状态和得分、总分以及一句总结”就是验收标准,有了它,AI 写出来的脚本才知道终点在哪。
第二,小事也要指定落点。文件名、目录、运行命令这三样,能写就写全。today_tasks.py、python3 today_tasks.py 这种写法看起来多余,但它省掉的,是 AI 在沙箱里找文件的 5 分钟。
第三,交互式不是默认答案。除非真的需要人逐条确认,否则明确写上“不要求人工输入”。脚本能不能一次跑通,往往就差这一句话。
同一件小事,含糊提示词花了 7 分钟才拿到结果,具体提示词花了 2 分钟。省下的 5 分钟不是 AI 变快了,是我提前把决定做完了。
- 点赞
- 收藏
- 关注作者
评论(0)