Wayfinder 是 utarn/engineer-skills 仓库中的一项技能,用于规划超出单个智能体会话承载量的庞大工作任务。它不直接冲向目的地,而是先在地图上标出通往目的地的路径,然后逐条解决途中的决策工单。
用途
当一个松散的想法到来、规模过大、超出单个智能体会话的承载量,并且前方道路仍被迷雾笼罩时,Wayfinder 负责寻路而非直接执行。它把路径绘制为仓库问题追踪器上的共享地图,再逐一解决其中的决策工单——这些工单是"问题的解决方式即一个决策",而非待执行的构建切片。目的地因工作而异,命名目的地是绘制地图的第一步:它可能是一份待交接迭代的规格说明、一个在规划前需要锁定的决定,或一项原地进行的变更(如数据结构迁移)。地图与领域无关,可适用于工程工作、课程内容等任意符合该形态的对象。
主要能力
规划优先:Wayfinder 默认是规划。每个工单解决一个决策,当地图完成时意味着在有人去执行之前已无待决事项。想要直接动手的冲动通常意味着已抵达地图边缘、该交接了。工作可在 Notes 中覆盖此默认行为,将执行纳入地图本身,但若无此说明,产出的是决策而非交付物。
以名称引用:每张地图和每个工单都是一个 issue,因此拥有名称(标题)。面向人类阅读的一切(叙述、地图的 Decisions-so-far)都应使用名称而非裸露的 id、编号或 slug。id 与 URL 不会消失,而是包裹在名称内部。
地图:地图是仓库问题追踪器上单个 issue,标签为 wayfinder:map,是权威产物。其工单是地图的子 issue。地图是索引而非存储库,它列出已作出的决策并指向持有详情的工单;一个决策只存在于一处(其工单),地图只做摘要并链接,从不复述。
地图正文结构:包含 Destination、Notes、Decisions so far、Not yet specified、Out of scope 等区块。开放工单不列出,而是通过查询找到开放子 issue。
工单:每个工单是地图的子 issue,追踪器的 issue id 是其身份。正文是待解决的问题,规模控制在单个 100K token 智能体会话内。每个工单带有 wayfinder:<type> 标签。会话通过将工单指派给驱动地图的开发者来"认领"它,且必须在任何工作之前完成,以便并发会话跳过。开放的、未指派的工单即未被认领。
阻塞关系:使用追踪器原生依赖关系,以便在前沿可视化时在追踪器自身 UI 中渲染。只有当追踪器缺乏原生阻塞能力时,才回退到正文约定。当阻塞该工单的所有工单都已关闭时,该工单解除阻塞;前沿是开放的、已解除阻塞、未认领的子工单集合。答案不属于正文,而是在解决时记录。解决工单时创建的资产从 issue 链接,而非粘贴进来。
工单类型
每个工单要么是 HITL(人在回路,由代表自己的人参与),要么是 AFK(仅由智能体驱动)。HITL 工单只通过实时交流解决,智能体绝不代替人的一方。
- Research(AFK):阅读文档、第三方 API 或本地资源以呈现决策所依赖的事实。由 /research 子智能体解决。当需要当前工作目录之外的知识时使用。
- Prototype(HITL):制作廉价、粗糙、具体的产物以提升讨论保真度(大纲、粗略方案、桩、UI/逻辑代码等,通过 /prototype 技能)。把原型作为资产链接。当关键问题是"它应长什么样"或"它应如何表现"时使用。
- Grilling(HITL):对话。默认情形。始终调用 /grilling 与 /domain-modeling 技能。
- Task(HITL 或 AFK):在决策前必须完成的手工工作——无需决策、原型或研究,但讨论因未完成而受阻。例如注册服务以评估其 API、开通访问权限、移动数据以观察其形态。这是唯一执行而非决策的类型,其价值在于解除决策阻塞而非交付目的地。智能体在可能时单独驱动(AFK),否则交给人类一份精确清单(HITL)。工作完成即解决;答案记录所做之事及后续工单依赖的事实(凭据位置、新 URL、行数等)。
战争迷雾
地图刻意保持不完整:不要绘制尚看不见的部分。实时工单之外是战争迷雾——你能察觉即将到来却尚无法确定明确定义的决策与调研视图,因为它们取决于仍未解决的问题。解决一个工单会拨开其前方的迷雾,把如今已可明确的内容升级为新工单,一次一个,直到通往目的地的路径清晰、无工单剩余。
地图的 Not yet specified 区块记录这种模糊视图:可疑的问题、日后再访的区域。它是通往目的地尚未被发现的前沿——此处一切都属于范围之内,只是尚不足以形成工单。
判断迷雾还是工单的标准是:你现在能否精确陈述问题(而非能否回答它)。问题已清晰即应建工单,即便被阻塞而暂时无法行动;尚无法如此精确表述时归入 Not yet specified。不要把迷雾预先切片成工单大小的块——它比工单更粗粝,一块迷雾可能升级为多个工单,也可能不会。
范围之外
迷雾只会朝目的地聚拢。目的地决定了范围,超越目的地的工作属于范围之外,不是迷雾,也不属于 Not yet specified,而是地图上独立的 Out of scope 区块:你已明确排除本次工作的内容。决定其归属的是范围而非清晰度。范围之外的工作永不会升级——前沿止于目的地——因此只有在目的地被重新绘制时它才会回归,且作为全新工作而非恢复。排除某项工作是界定范围的行为,而非路径上的一步。当一个已存在的工单被发现在目的地之外时,关闭它并在 Out of scope 留下一行说明(要点及原因,链接该已关闭工单),它不进入 Decisions so far(后者记录实际走过的路径,范围边界不算路径上的一步)。
使用方式
两种模式。无论哪种,每会话解决工单数不超过一个,research 工单除外。
绘制地图(Chart the map):用户以一个松散想法调用。先命名目的地——运行 /grilling 与 /domain-modeling 会话确定地图通往的规格、决策或变更。目的地决定范围,故先确定。然后绘制前沿——再次 Grill,这次广度优先,在整个空间扇形展开,呈现开放决策与当前可采取的第一步。若未浮现迷雾(路径已清晰、整个旅程小到足以在一次会话内完成),则不需要地图,停下询问用户如何进行。随后创建地图(标签 wayfinder:map),填写 Destination 与 Notes,Decisions-so-far 留空,迷雾勾画进 Not yet specified。创建当下可明确的工单作为地图子 issue——然后在第二遍连接阻塞边(issue 需有 id 才能相互引用)。为每个新建的 research 工单启动 /research 子智能体并行解决,将其发现记录在临时 research/<name> 分支上,并从工单建立上下文指针。然后停止——绘制是单次会话的工作,不解决任何工单。
推进地图(Work through the map):用户以一张地图(URL 或编号)调用,工单可选——未指定时由你(而非用户)挑选下一个决策。加载地图(低分辨率视图,非每个工单正文)。选择工单:若用户指名则使用之,否则按顺序取第一个前沿工单。认领它:在任何工作之前指派给自己。解决它,按需缩放:按需获取任何相关或已关闭工单的完整正文;调用 Notes 区块点名的技能。如有疑虑,使用 /grilling 与 /domain-modeling。记录解决结果:将答案作为解决评论发布,关闭 issue,并向地图的 Decisions-so-far 追加上下文指针。添加新浮现的工单(先创建后连线),将答案已使其可明确的迷雾升级,并从 Not yet specified 清除每个已升级的块使其只以新工单存在。若答案揭示某工单(本工单或其他)位于目的地之外,将其排除出范围而非在路径上解决。若决策使地图其它部分失效,更新或删除那些工单。用户可能并行运行已解除阻塞的工单,因此需预期其它会话并发编辑追踪器。
适用场景
适用于需要规划、规模超单次智能体会话的复杂工作,无论是工程工作还是课程内容等领域。当想法松散、路径不明、需要先明确目的地与沿途决策时,Wayfinder 有助于将迷雾逐步拨开为可执行的清晰路径。
限制
该技能依赖问题追踪器来承载地图与工单;追踪器应已被提供,否则运行 /setup-utarn-skills;若未提供追踪器,则默认使用 local-markdown 追踪器。每会话默认只解决一个工单(research 除外)。阻塞关系优先使用追踪器原生依赖,缺乏时回退到正文约定。关于收费、价格、平台支持范围等具体信息,资料未提供。