步步糕升 发表于 7 天前

提示词美学:别写大段提示词 ——Firefox 项目带给 AI Agent 的设计启示

概要

流行观点:不要堆砌超长的系统提示词(Prompt),以 Firefox 浏览器项目的 AI Agent 实践作为范例。很多人的习惯是把全部规则、背景知识全部写进一段总提示词,不管执行什么小任务,Agent 每次都要完整读取全部内容,token 开销巨大,指令还容易过期失效。Firefox 采用作用域分层、按需加载、技能 Skill 化、工具优先的新思路,不把所有规则塞给 Agent,把指令拆成分散资产。
一、传统写提示词模式的弊病


[*]全部规则塞进一份大提示词:哪怕只是改一个错别字,Agent 也要通读整套庞大指令,消耗大量 token。
[*]提示词类似代码注释:没有编译器做校验,规则过期、文档更新之后,提示词不会自动报警,AI 依旧会信心满满地执行已经过时的旧规则。
[*]靠一大段文字规劝模型遵守规范,约束力弱,模型很容易忽略文字忠告。
二、Firefox 的 Agent 设计思路


[*]指令做作用域拆分,而不是写一份超长总提示词根目录只放全局通用的少量规则;不同子目录存放各自独立AGENTS.md。只有进入对应模块目录,才会加载该模块的专属指令。指令总文字量并没有变少,但是实现了按需读取,限定作用域。

[*]JavaScript 引擎模块、排版模块、WebRonder 模块,各自拥有自己简短的 AGENTS.md;
[*]文件不去完整复述内部原理,更多充当 “索引地图”,指向真正的参考文档,而不是把全部内容复制粘贴进来。

[*]优先做工具 / 命令,而不是靠文字劝说模型想要约束 AI 搜索代码,不要写一大段文字告诫 “谨慎搜索、限定路径、保持耐心”,而是直接给 Agent 提供专用搜索命令。
原则:让正确的行为变得容易,而不是靠语言劝模型做正确行为。

[*]Skill 技能包:按需加载能力把复杂工作(性能回退排查、翻译字符串迁移、提交拆分评审)封装成独立 Skill 文件夹:包含简短描述、脚本、参考资料。

[*]Skill 开头只加载简短描述,完整内容按需调入;
[*]明确标注使用边界:写明什么时候该用、什么时候不该用,限定允许运行的命令,类似函数签名;
[*]非通用的 Skill 不全局常驻,减少常驻上下文成本。

[*]Diff 自动触发对应指引配置轻量规则文件:检测代码改动属于哪一类目录 / 文件,自动加载对应的模块指引,不需要人记忆该启用哪套规则。
[*]引用使用名字,拒绝行号与位置描述文档引用尽量使用函数、文件的固定名称 + 版本链接,不写 “上面这个函数”、指定代码行号。代码文件会持续改动,行号会失效,但是名字、版本链接更加稳定。
三:那提示词完全不需要写吗?

并不是彻底抛弃提示词。适合写提示词的场景:源码、工具无法表达的隐性坑点、历史教训、特殊约束。例如:“默认截图不等于真实渲染器输出,不能仅凭截图判定渲染 bug 修复”、“没有明确批准,禁止直接提交补丁”。这类经验教训代码体系无法表达,适合写为提示规则。
四、额外收益:这套文件同时也是人类的项目学习资料

这套分层的 AGENTS.md、Skill 描述,不只是给 AI 看,也可供开发者阅读学习项目。从根目录通用规则,到模块索引地图,再到各个 Skill 说明,快速了解项目模块分工。
五、总结方法论


[*]不要无脑堆砌超长全局提示词;
[*]给指令划分作用域,做到按需加载;
[*]能用工具、脚本实现约束,就不要只用文字劝说模型;
[*]复杂业务封装 Skill 技能,写明适用 / 不适用边界;
[*]配置自动触发机制,根据代码变更自动加载对应指引;
[*]引用优先使用名称与版本链接,避免行号这种易失效信息;
[*]提示词只用来记录代码与工具无法承载的隐性踩坑经验。
核心:别写一大段提示词,而是构建指令该存放的地方。工具让正确行为变简单;技能承载长知识,需要再加载;根据改动差异自动启用指引。

页: [1]
查看完整版本: 提示词美学:别写大段提示词 ——Firefox 项目带给 AI Agent 的设计启示