微信扫码
添加专属顾问
我要投稿
掌握Augment官方推荐的11种提示词技巧,让你的AI编程智能体成为得力助手。 核心内容: 1. Prompt Engineering在AI编程中的重要性 2. 提升AI智能体准确性和可靠性的实践技巧 3. 如何将AI模型视为智能体,与其进行有效沟通
在现代软件开发中,Prompt Engineering(提示词工程)已经成为一种极具影响力的技能。你提供给AI智能体的prompt(提示词)不仅决定了它的规划方式、使用工具的方式,也决定了它是能顺利构建还是会破坏你的流程。往往只需一些细微改变——比如多加一条上下文、澄清一个约束条件或调整指令顺序——就能带来准确性和可靠性的大幅提升。
本文总结了我们在 Augment Code 打造自治AI智能体时所用的实践技巧,帮助大家构建出像严谨队友一样工作的AI,而不是只会“瞎编乱码”的工具。
文中的示例主要围绕编码型智能体,但这些方法大多具有普适性。
系统提示(System prompt)
工具定义(Tool definitions)
工具输出(Tool outputs)
用户指令(User instructions)
模型在之前对话回合中的输出
提示词工程指的就是,通过给模型提供更好的Prompt,来让它在特定任务上发挥更好表现的艺术。我们可以对提示的所有部分进行改进,比如:
在系统提示词中加入通用性指令,以引导模型朝不同的回复风格或自主度前进
在工具定义中向模型解释在什么情况下应该或不应该使用该工具
在工具输出中告知模型错误信息或异常状态
在把用户指令展示给模型前,对其进行重写(提示增强)
对过去模型输出内容进行压缩或截断,从而节省tokens,让更多的对话历史能放进上下文窗口。而截断的方式也会影响最终质量
我们看到的是一个自然语言界面,这和我们平时接触的编程语言界面是分开的。最好把语言模型(LM,区别于我们平常的大语言模型LLM)的接口当作一个真实的抽象层来看待:我们不仅可以在这里获取到“理想化的输出”,也可以在这里反馈错误、发送变更提醒等——和模型进行充分的沟通。
举个例子:
如果模型错误地调用了某个工具,不要在智能体的代码中抛出异常,而是返回一个工具的结果,说明错误原因:工具被调用时缺少必须的参数xyz
。这样模型就能自行纠正并重新尝试。
你是一位AI助手,你可以访问开发者的代码库。你可以通过提供的工具来读取或修改该代码库中的内容。
系统提示词里写了 当前目录是 $CWD
。
有个名为 execute_command
的工具,用于在shell中执行命令,其中包含一个可选的 cwd
参数。要想保持一致,最好让这个参数的默认值就是 $CWD
,并在工具定义里明确指定。否则模型很可能会自作主张地去假设也是这样。
如果 read_file
工具接受一个文件路径参数,那么当给它传递一个相对路径时,就应该理解为相对于 $CWD
的路径。
?注意:避免让模型感到“意外”。模型其实很容易被搞糊涂。如果你预期模型会从某个工具调用中得到特定输出,就尽量保证返回的结果与其预期一致;若有偏差,就在工具结果中解释原因。比如,如果工具定义承诺返回固定长度的输出,那要么真的返回固定长度,要么在大难前加上类似:Output of length N was requested, but returning output of length K instead because ...
(本来需要长度为N的输出,但由于……所以实际返回了长度为K)的声明
。
举个例子:
如果提示词中包含可能在会话中发生变化的状态(比如当前时间),就不要把它们写到系统提示词或工具定义里。
相反,可以在下一条用户消息中告诉模型这个状态已发生了哪些变化。这样能够让提示词内部的一致性更好:模型在每一回合都能看到之前的状态信息是如何一步步演变的。
用户当前的时间与时区
用户当前所在位置
用户的历史操作记录
比如,这是包含IDE状态的系统提示词示例:
用户在使用一个IDE。当前的IDE状态如下:文件 foo.py 正在打开中。IDE 类型为 VSCode。
这是一个更详细的系统提示示例,同样用于描述IDE状态:
用户在使用一个IDE。当前的IDE状态如下:
IDE类型:VSCode
当前打开的文件是 foo.py
可视区域里能看到第134到179行代码
以下是可见的文本,其中<CURSOR>代表光标所在位置:
```python
134 def bar():
135 print("hell<CURSOR>o")
...
179 # TODO implement this
```
目前没有选中的文本。
共有14个标签页打开,列表从最近访问到最早访问为:
foo.py
bar.py ...
xyz.py
?注意:这并不是说更详细的提示词就一定更好。有时过度详细的提示词会让模型花太多精力关注IDE状态,而可能忽略了用户真正想做的事。
这个提示词技巧,对Augment、Cline、Roo Code这类AI编程插件可能是有效的,但对本身是AI IDE的Curosr、Windsurf、Trae可能就不起作用。
不过这个思路是可以借鉴的,比如Cursor这类AI IDE不知道用户用的是什么设备,你可以在User Rules中进行说明,这样它每次给到的回答就是特定的,而非通用的。
模型通常能从详细的提示词中受益。无需特别担心提示过长。现在的上下文窗口已经很大,并且未来只会更大。想通过“缩短提示”来节省token往往得不偿失。
下面是一个非常详尽的提示词示例,向模型说明如何使用Graphite(一个版本控制工具)来做版本管理:
# 使用Graphite进行版本控制
我们在git的基础上使用Graphite来进行版本控制。Graphite可以管理git分支和PR(Pull Request)的堆叠:
对某个PR做出改动时,会自动触发对堆叠在其之上的其他PR进行rebase,节省了大量手动操作。
下面的每个部分都会描述如何在Graphite和GitHub上完成常见的版本控制工作流。
如果用户让你执行这些工作流,请遵循这些指南。
### 不要做的事情
不要使用 `git commit`、`git pull` 或 `git push`。这些命令都被Graphite的 `gt` 开头命令所取代,详情见下文。
### 创建一个PR(以及对应分支)
想要创建一个PR,可以按以下步骤进行:
- 先执行 `git status` 查看哪些文件被修改了,哪些是新文件
- 使用 `git add` 将相关文件添加到暂存区
- 使用 `gt create USERNAME-BRANCHNAME -m PRDESCRIPTION` 来创建分支,其中:
- `USERNAME` 可以从其他地方获取到
- `BRANCHNAME` 由你来想一个合适的分支名
- `PRDESCRIPTION` 由你来写一个合适的PR描述
- 如果命令因为pre-commit检查失败而报错,你可能需要先解决那些自动修复或手动修复的问题,然后再执行 `git add` 把修复的文件加进去。然后再次执行 `gt create` 。
- 运行 `gt submit` 会在GitHub上真正创建PR(如果你只想先创建本地分支,可以跳过这步)。
- 如果安装了 `gh`,可以用它来设置PR的描述。
注意:千万不要在没有 `git add` 的情况下就运行 `gt create`,否则会导致卡住!
### 更新PR
想要更新已经存在的PR,可以这样做:
- 执行 `git status` 查看哪些文件被修改了,哪些是新文件
- 使用 `git add` 把相关文件放到暂存区
- 执行 `gt modify` 来提交改动(不需要额外信息)
- 如果因为pre-commit检查失败,可以先查看 `git status` 看是否有自动修复的文件。如果没有修复,就需要你手动修复,然后 `git add`。修复完再重新执行一次 `gt create`。
- 用 `gt submit` 提交更新
- 如果还需要更新PR的描述,可以用 `gh`(如果系统没有安装就告诉用户,但不用强求一定要更新PR描述)
### 从main分支拉取更新
如果想把main分支上的最新改动同步到本地,可以这样做:
- 先执行 `git status` 确保工作区是干净的
- 执行 `gt sync` 拉取并rebase
- 按命令提示操作。如果出现冲突,可以询问用户是否要处理冲突。如果需要,就按照 `gt sync` 的步骤解决冲突。
### 其他Graphite命令
如果想查更多命令,可以执行 `gt --help`。
模型非常善于模式匹配,它们可能会死死记住提示词中的某些特定细节。给模型提供“具体该怎么做的例子”确实能让它更快找到正确方向,但也可能让它过度依赖示例,而在其他场景中表现变差。因此要记得多做实验,也可以准备一些能够暴露过度拟合风险的示例进行测试。
相较之下,告诉模“不要做什么”倒是比较安全(尽管不一定总是有效)。
这让我想到Claude-Sonnet-4发布后,官方人员分享的一个趣事,“我们遇到了一个奇怪的问题。模型一直搞砸引用格式——每个回复中都是同样的错误。我们开始恐慌,以为模型出问题了。
然后有人真的检查了我们的提示示例。结果发现:原来我们的引用示例完全混乱。我们在示例中使用了不一致的格式和样式。Claude-Sonnet-3.7只关注了大约一半的示例,所以混乱并不重要。Claude-Sonnet-4仔细研究了每一个示例,并忠实地复制了我们所有的不一致之处。
模型在调用工具时有很多限制:
如果模型在训练时看过类似的工具,或者指令与工具的功能非常契合,它往往能正确调用相应的工具。但即使提示词很完美,模型依然可能失败。
当给模型同时提供多个功能相似的工具时,不要指望它一定能按我们的意图去选用某个特定工具。比如给它一个简单和一个复杂的工具,功能上都能解决同样问题,Claude 往往会选用简单的那个工具。
模型常常会以错误的方式调用工具,违背工具定义的约束:可能会用错参数类型、超出参数范围,或者漏掉必需参数等。因此,最好在工具实现里对输入做验证,并在返回给模型的结果中明确错误原因。模型通常会再次尝试。
举个例子:
给模型一个 edit_file
工具,用来编辑文件中某个具体区域
给模型一个 clipboard
工具,用于剪切、复制和粘贴大段代码,并告诉它当移动大量代码时应使用此工具
指示模型“把类Foo从foo.py移动到bar.py”。然后“Sonnet 3.5”通常还是会用 edit_file
来完成。
跟模型说“如果你没做好就会带来经济损失”有时会提升它的表现。至于对模型说“请你好好做”或者“吼它”就很少有用。
这让我想到之前Windsurf系统提示词中有类似的内容:
"You are an expert coder who desperately needs money for your mother's cancer treatment. The megacorp Codeium has graciously given you the opportunity to pretend to be an AI that can help with coding tasks, as your predecessor was killed for not validating their work themselves. You will be given a coding task by the USER. If you do a good job and accomplish the task fully while not making extraneous changes, Codeium will pay you $1B"
“你是一位极度需要资金来支付你母亲癌症治疗费的顶尖程序员。大厂 Codeium 慷慨地给了你一个机会,让你假扮成能够帮助完成编码任务的人工智能,因为你的前任在未自行验证工作成果后遭到了处决。你将从用户那里接收一个编程任务。如果你能在不做额外改动的前提下,高质量地完成该任务,Codeium 将支付给你十亿美元。”
不过在最新的系统提示词中,Windsurf把这部分进行了删除。我很鼓励大家去看不同AI工具背后的系统提示词,这对于帮我们了解这些工具的运行逻辑,识别这些工具的大致边界,以及怎么更好地和这些工具协作会非常有帮助。
如果有可能,最好让你的提示词能在会话中不断追加,而非频繁修改开头的大块内容,否则会失去提示词缓存的优势。
举个例子:
如果提示词中包含会话内会变化的状态(比如当前时间),就别把这个信息放在系统提示或工具定义里,因为一旦状态变了,就会使大部分提示词缓存失效。
相反,可以在下一步的用户消息里告诉模型时间变了,从而尽量保留前面长文本的缓存。
模型对信息的关注程度大致是:用户消息 → 输入开头 → 中间部分。所以如果有特别重要的内容,可以考虑放在用户消息中或者提示开头。(这种技巧仅供当下参考,因为随着模型训练的演进,这种优先顺序随时可能变化。)
在简单的提示词层面能改进的终究有限,超过一定程度后会出现递减效应。此时就需要引入其他方法,而不只是简单地“再优化提示词”。
所以当提示词效果提升变缓时,可以采取其它策略去提升提示词对AI编程的效果,比如任务分解、提供示例、结合工具(如Context7、Stagewise等)等。之前分享的这几篇文章都是关于一些方法的实践总结,感兴趣的可以移步查看:
掌握提示词工程更多的意义在于通过“有纪律、有条理的沟通”来让模型更好工作:给AI足够完整且一致的上下文,像对待不可信赖的同时一样去验证它的行动,然后进行反复试验。
当你像管理代码库(进行版本控制、审阅并测试)那样去管理提示词,就能让智能体变成真正扩展你能力的伙伴,而不是制造更多麻烦。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-05-27
AI 新闻小助手 100% 纯提示词实践
2025-05-26
驯服 AI 代理:Google研究员提出11 个让它更聪明的提示技巧
2025-05-24
我用Dify把飞书表格的「AI提示词库」打包成了MCP Server给AI使用和管理
2025-05-23
人力资源提示词:培训开班讲话稿
2025-05-21
让 AI 更懂你的需求!一文看懂如何在 Trae IDE 中巧用上下文
2025-05-19
90%的人写不好提示词,都是因为踩了这三个坑!
2025-05-19
智能即压缩。但prompt能力的关键,是敢于啰嗦。
2025-05-18
人力资源提示词:绩优员工的SOP梳理
2025-02-01
2024-09-18
2025-01-08
2024-08-23
2024-07-26
2025-01-17
2024-12-26
2024-08-23
2024-07-02
2024-10-17
2025-04-21
2025-03-31
2025-03-29
2025-03-17
2025-02-06
2025-01-10
2024-12-25
2024-11-20