最近 MattPocock 的 skills 工具集又更新了。
他加入了一个新的 Skill:/wayfinder。Matt 对这个 skill 的定义是:负责规划和消除不确定性,不负责实现最终交付物。
安装
如果你没有安装过 mattpocock/skills,可以运行:
npx skills@latest add mattpocock/skills
或者也可以单独安装 wayfinder:
npx skills add mattpocock/skills --skill=wayfinder
wayfinder 顾名思义就是用来探索路径的。他会默认当前处于“迷雾“中,到达目标的路径尚未显现。所以需要构建一份共享地图,记录问题并逐一解决,直到道路清晰。
使用场景
举个业务相关例子:
我准备重构产品的权限系统。 现在的角色、资源和组织关系互相耦合,还需要支持企业自定义角色、审计记录和数据迁移。 我知道目标是什么,但暂时无法直接写出可靠的规格和实施计划。
这个任务显然超过了单词 Agent 会话能够稳定处理的范围。此时直接使用 grill-me 或 /to-spec,很多内容只能依靠猜测,容易把尚未确定的产品架构决策伪装成开发任务。
当方向已经清楚时,可以直接使用 /to-spec;当计划已经整理完成,只需要拆分可实施任务时,可以使用 /to-tickets。
/wayfinder 则处于这些流程的上游。只有当目标大致存在,但通往目标的路线仍然模糊时,才适合调用 /wayfinder。
具体的使用方式
01 定义目标
调用 /wayfinder 后,它首先会要求定义 Destination(目标)。
你需要准确描述“任务完成后应该得到什么”。它可以是一份能够交给 /to-spec 的清晰方案,可以是一项架构决策,也可以是一次数据结构迁移。
Destination 会限制整个地图拓展工作的范围,与结果无关的工作会排除(Out of scope),不会无限扩张成新的研究方向。
如果初步梳理后发现路线其实已经清晰,任务也能够在一次会话内完成,/wayfinder 会停止探索。
02 创建地图
/wayfinder 会创建一个带有 wayfinder:map 标签的主 Issue。这个 Issue 是所有工作的索引,通常包含四部分:
- 目标 Destination
- 笔记 Notes
- 目前为止的决策 Decisions so far
- 尚未做出的决策 Not yet specified
- 超出探索范围 Out of scope
真正需要解决的问题会被创建为主地图的子 Issue。以上面的提出的业务问题为例:
- 权限判断应该以角色为中心,还是以策略为中心?
- 自定义角色的能力边界是什么?
- 旧权限数据如何映射到新模型?
- 授权结果是否需要支持可解释性?
随着已有问题被解决,原先模糊的区域会逐渐变得清晰,再被提升为新的待解决问题。
03 一次解决一个问题
地图创建后,可以把地图链接或编号交给新的会话,再次调用 /wayfinder。如果没有指定具体问题,它会从 Frontier 中选择一个问题。(Frontier 指的是所有已经开放、没有被其他问题阻塞、也尚未被其他会话领取的问题)
待解决问题大致分为 4 类:
grilling用于需要我参与回答的问题,也是最常见的类型。prototype用于先制作低成本原型,通过具体产物帮助我判断行为或界面应该是什么样子。research用于阅读外部文档、API 或知识库,可以交给/research子 Agent 并行处理。task用于必须先完成某项实际操作才能继续决策的情况,例如申请测试账号、导出数据或开通环境。
问题解决后,Agent 会标记解决并关闭问题,并在主地图的 Decisions so far 中加入链接和结论摘要。新的问题可能随之出现,旧问题也可能因为最新决策被删除、修改或划出范围。地图会根据实际情况动态变化。
Superpowers 还是 mattpocock
最近我看到越来越多开发者开始讨论用 mattpocock/skills 替换 Superpowers。
Superpowers 提供的是一套完整而强约束的软件开发方法。它会自动触发 brainstorming、工作树、详细计划、子 Agent 开发、TDD 和代码评审等流程,强调 Agent 必须按照规定的方法工作。
Matt 的 Skills 更像一组可以自由组合的工程工具。它包含需要用户主动调用的编排型 Skill,以及模型可以自行调用的纪律型 Skill。开发者可以只安装部分 skill,让流程适应现有团队,而不是让团队整体适应一套框架。
对我来说,这两套方案代表了不同取舍。
Superpowers 适合希望 Agent 默认遵循完整纪律的人,mattpocock/skills 更适合希望自己掌握流程控制,根据任务选择工具,并持续修改工作方式的人。
/wayfinder 正好体现了后一种思路。它不会试图接管整个开发流程,而是只在任务过大、实现路径模糊的具体时刻提供一套足够精确的方法。