agentpace 是做什么的?
使用时机:当有人询问软件工作需要多长时间,或者以天、周或月为单位给出代理将执行的工作的时间线时。
产出:一个测量的 P50/P80/P90 范围及其关键路径,人工部分单独成行,以及任何引用的时间线(如果给出)作为未经验证的旁注显示。
回答“这需要多长时间?”时,使用来自真实代理运行的测量范围,并单独说明人工部分。不要引用人工团队的时间线,也绝不要给出单一数字。
此技能由自然语言问题触发。/pace-estimate 是用于给定计划的明确命令。
检查工具
运行 agentpace --version。如果失败,告诉用户安装命令并停止。未经询问,不要安装任何东西:
uv tool install agentpace
如果他们不想安装任何东西,请改用 assets/portable-prompt.md。
估算
- 除非用户另有说明,否则假定代理执行实现。如果不清楚且答案会因此改变,请询问一次。
- 将工作分解为代理可以独立运行的任务。
- 为每个任务分配一个
id、一个kind和一个risk,以及当其必须等待另一个任务时的depends_on。将agent_cap设置为同时运行的代理数量。 - 将计划写入文件并运行估算器。
{
"agent_cap": 3,
"model": "claude-opus-5-5",
"tasks": [
{ "id": "schema", "kind": "feature", "risk": "normal" },
{ "id": "api", "kind": "feature", "risk": "normal", "depends_on": ["schema"] },
{ "id": "review", "kind": "review", "risk": "low", "depends_on": ["api"] }
]
}
agentpace estimate plan.json
种类:feature、bugfix、refactor、migration、tests、docs、review、other。
风险:low、normal、high。对于迁移和难以撤销的工作,使用 risk: high。model 是可选的。
重新回答人工引用的时间线
当对话中已经存在一个以天、周或月为单位的时间线(来自用户、文档或之前的回答)时,仍然估算该计划,并将该引用原样传递,使用它被给出的措辞:
agentpace estimate plan.json --quoted "3 months"
输出随后会在总数下方显示一行 Quoted:,将该引用标记为日历时间、已引用且未经验证。照原样传递该行,显示在测量范围旁边。切勿将该引用转换为代理时间,切勿将其除以或乘以一个常数,也切勿将其与范围进行比较或给出它们之间的比率:唯一代理时间是测量范围,人工部分保持独立成行。切勿说明引用的范围与测量范围之间的差异,也切勿称其为人工部分:这将是从代理时间推导出人工部分。也切勿说明该引用具体计算了什么:没有任何东西验证过它。
如果用户想稍后查看哪个数字是准确的,提供相同的命令并添加 --record。工作完成后,agentpace score <id> --session <ref> 会将两者与代理实际花费的时间进行比较。
报告结果
- 以计划总范围开头:P50、P80 和 P90,基于会话时钟。建议将 P80 用于规划。
- 按照 CLI 打印的方式传递会话时钟行和人工部分行。第一行说明运行之间的间隔会计入总时间,直至空闲上限,因此用户端的短暂等待包含在其中。对于未测量的情况,人工部分行说明未添加用于审查、测试、决策和代理轮次之间等待的余量。对于通过
agentpace turns测量的情况,它会引用用户每次人工轮次的等待时间,来自其本地历史。无论哪种方式,都不要从代理时间中为其推导出数字,也不要将每次轮次的等待时间乘以猜测的轮次数。如果用户给出自己的数字,则重复它并将其标记为用户的数字。如果他们说明了自己的审查能力,例如“每天审查 4 个 PR”,则使用--review-capacity "<figure>"原样传递,按原样传递Review capacity:行,切勿将其转换为时间线。 - 指出关键路径和有效并行度。
- 传递每一条警告。警告意味着某个单元运行次数太少,因此该范围依赖于更广泛的数据。
- 即使被追问,也不要给出单一数字。如果有人需要一个数字来进行规划,请给出 P80 并将其称为 P80。
适当时说明的限制
- 种子数据来自一个人的工作流程,因此可能无法代表用户的情况。
agentpace ingest会将用户自己的运行数据与其合并;--data ~/.agentpace/runs.jsonl则仅使用用户的数据。Gemini CLI、OpenCode 和 Cline 适配器是实验性的,尚未在真实会话上验证,因此当估算依赖于它们的行时请说明。 - 在不读取提示的情况下,元数据无法区分功能开发与错误修复或重构,因此这些类型可能共享数据。
- 除非传递了
--use-size,否则忽略size,因为存储的大小是在运行之后测量的。除非用户要求,否则不要传递它。
有关估算工作原理的详细信息,请参阅 references/method.md。