Skip to main content

将某功能 Prompt 的 ACU 消耗从 42 降到 12

逐步分析一个在分页任务上消耗了预期 3 倍 ACU 的真实会话,找出三个根本原因,并重写 Prompt 以节省 70% 的消耗。
AuthorCognition
CategoryDevin 优化
FeaturesAdvanced
1

触发本次调查的会话

一位开发者让 Devin 为一个 API 端点添加分页功能。这个提示词很简短,看起来也很合理:这次会话顺利完成——测试通过,拉取请求(pull request,PR)看起来也不错。但它消耗了 42 ACU,而这本该是一个 约 12 ACU 的任务。成本是预期的三倍半,而这个功能在代码库的其他地方已经有可复用的实现模式。下面介绍如何找出问题所在,并确保这种情况不再发生。
2

从 Session Insights 入手

每个已完成的会话都会附带一次免费的 Session Insights 分析。点击任意已完成会话顶栏中的 灯泡图标 即可打开,无需高级会话。对于这个分页会话,Session Insights 标记了:
  • Issue Timeline — 在第 14 分钟和第 28 分钟处有红色标记,表示 Devin 在这些时间点完全更换了实现思路。
  • Issues Detected — “错误的代码库假设:在 src/utils/paginate.ts 已经存在的情况下仍从零实现分页功能”和 “错误的实现类型:使用了游标分页,但测试期望的是基于偏移量的分页。”
  • Improved Prompt — 填补了缺失上下文的重写版本,可直接复制使用。
  • ACU Usage — 使用了 42 个 ACU,被标记为相对于任务范围而言不成比例。
对于许多会话来说,这就足够了。复制改进后的提示词,开启新会话并对比结果。但如果你希望看到按阶段划分的完整成本拆解,可以进一步深入查看。
3

借助 Advanced Devin 获得逐阶段的拆解分析

在 Session Insights 面板中点击 Investigate with Devin,即可启动一个预加载了原始会话完整历史的 Advanced Devin 会话。你也可以手动启动一个新的 Advanced 会话:从 session dropdown 中选择该会话,并描述你希望分析的内容:Advanced Devin 会审查原始会话中的每一步操作,并找出 Devin 花费异常长时间或采用低效方法的地方:
会话分析 | 任务:为 GET /api/users 添加分页功能
实际消耗:42 ACUs | 预期消耗:~12 ACUs

已发现的低效问题:

1. 不必要的探索 — 调查阶段耗时异常过长
   Devin 浏览了 23 个文件以寻找分页辅助工具。
   它从头构建了分页功能,随后才发现
   src/utils/paginate.ts,不得不重构所有内容。
   修复建议:在提示词中提及现有的工具函数。

2. 方向错误 — 整个实现不得不重写
   Devin 实现了基于游标的分页。测试失败,
   因为该 API 使用的是基于偏移量的分页方式。它从头
   重写了整个实现。
   修复建议:在提示词中明确指定"基于偏移量"。

3. 环境问题 — 反复安装失败
   由于私有注册表缺少 .npmrc 配置,npm install 失败了两次。
   Devin 通过变通方法重试。
   修复建议:将注册表配置添加到仓库初始化设置中。
三个根本原因,其实只要改进提示词或代码仓库配置就都能避免。
4

重写提示并进行比较

你可以让 Advanced Devin 直接使用改进后的提示词开启一个新会话——无需手动复制粘贴。分析会生成一个结构化的提示词,准确包含之前缺失的上下文:将这两个提示词并排对比:
原始版本优化版本
Pagination type未指定”offset-based”
Existing utility未提及src/utils/paginate.ts
Reference pattern”same as GET /api/projects”
Response shape未指定明确的响应 schema
Testing criteria”Run the tests”具体的边界情况
ACU result42 ACUs~12 ACUs
优化后的提示词消除了上述三大根本原因。Devin 无需再探索 23 个文件,一开始就选对分页类型,并且遵循经过验证的模式。
5

将发现转化为永久修复

单次提示重写只能在一个会话中节省 ACU。把这些结论转化为永久配置,则可以在所有后续会话中节省 ACU。把会反复使用的上下文添加到 Knowledge 分页分析揭示了 Devin 会反复需要的两点信息——分页类型和工具函数的位置。把它们添加为 Knowledge 条目,这样每个会话都会自动从这些上下文开始:
  • “所有 API endpoint 都使用基于 offset 的分页。公共工具函数位于 src/utils/paginate.ts。参考实现见 GET /api/projects。”
  • “使用 npm test 运行测试。使用 npm run typecheck 运行类型检查。”
Repo Setup 中修复 workspace 问题。 npm install 失败浪费的 3 个 ACU 是由于私有 registry 缺少 .npmrc 配置导致的。将 registry 配置添加到仓库设置中,可以防止后续的每个会话再遇到这个错误。批量分析以发现团队范围的共性模式。 如果多名开发者都出现 ACU 消耗很高的会话,把它们一起分析以找出共同的根本原因: