Quack 是一个显式用户调用的路由技能,隶属于 Rubber Duck 工作流集合。它的设计目标是在保留安全与审批约束的前提下,为用户提供可控的工作流路由,而不是根据系统推断的意图自动激活。只有在用户主动输入 “quack” 或 “quack <intent>” 时才会生效。
用途 Quack 用于将类工作流的请求路由到合适的子技能。它强调用户决策所有权,所有路由动作都基于用户的显式调用和意图输入。
主要能力
- 显式激活:仅响应用户明确输入的 quack 调用,不从推断意图自动激活。
- 意图归一化:去除 quack 后的分隔符(:, -, —)、外层成对引号以及句尾标点(?!.;:)。
- 裸调用(心跳路径):当归一化后的意图为空或仅含空白时,读取 heartbeat 资源并随机选择一条心跳行,同时逐字完整输出 quick-help 内容(不做摘要),最后给出提示 “What would you like to route?” 并停止。
- 子代理覆盖解析:支持通过 use <subagent>、with <subagent> 或 via <subagent> 指定子代理,并对照平台子代理列表校验;若无效则提出一个纠正问题后停止,例如提示未知子代理并询问是否使用 duckling 或 general。
- 默认子代理:若未解析到覆盖,默认使用 duckling。
- 路由执行策略:区分 inline-default(duck-design、duck-teach、duck-debug、duck-debt)与 delegated-default(duck-patch、duck-refactor、duck-risk、duck-review、duck-triage、duck-simplify);用户覆盖会强制委派,不论默认策略如何。
- 技能解析:若输入中包含完整技能名,则直接解析并执行该路由;否则加载 route-aliases 并进行不区分大小写的匹配。
- 关键词优先级:当多个技能匹配时,根据意图中的关键词调整排序,例如风险信号(rollback、breaking、compatibility、failure、impact)优先 duck-risk,复杂度信号(overengineered、complexity、simpler、too many、bloated)优先 duck-simplify,学习信号(why、how、explain、teach me)优先 duck-teach 而非 duck-debug,测试信号(test、coverage、before PR)优先 duck-triage,设计信号(choose、tradeoff、approach、option)优先 duck-design。优先级只用于辅助排序,仍会呈现备选项。
- 平局处理:多个别名匹配且优先级无法区分时,按精确匹配 > 最长别名 > 提出一个澄清问题的顺序处理。
- 路由执行:从 subagent-runbook 加载角色说明。若为 inline-default 且无用户覆盖,则先内联执行该技能,执行失败则提出一个纠正问题并停止,内联执行完成后才输出 “Routing: <skill>.”。否则(delegated-default 或存在用户覆盖)通过平台原生派发工具委派给有效子代理,传入 skill_name 参数;派发失败则提出一个纠正问题并停止,派发成功后才输出 “Routing: <skill> via <subagent>.” 或 “Routing: <skill>.”。
- 别名未命中时的消歧:检测意图片段并只提出一个针对性问题,例如 debug 类询问是 debug、trace 还是 review,风险类询问是风险评审还是设计权衡,代码变更类询问是 review、patch、refactor 还是 simplify,技术债类询问是债务审计还是 simplify,未知类则询问具体适合哪条路由。等待用户澄清后重试别名解析。
使用方式 用户需要显式输入 “quack” 或 “quack <intent>”,可选择通过 use/with/via 指定子代理。若无意图则走心跳路径。若别名无法唯一匹配,则回答一个澄清问题后重试。
适用场景 适用于需要将工作流请求路由到具体子技能(如调试、评审、设计、风险评估、简化、教学、分诊等)的场景,且希望由用户显式掌控路由过程。
限制
- 不会从推断意图自动激活。
- 若某项变更会削弱信任边界验证、安全控制、数据丢失预防、无障碍要求或明确的用户要求,则拒绝该变更,仅提供保留约束的安全替代方案。
- 在没有明确且有界批准的情况下,不执行会改变工作区状态的编辑、变更命令或子代理委派。
- 当上下文不完整时,会提出 1-3 个针对性澄清问题;缺少证据时会明确说明假设。
以上内容依据现有资料整理,其他细节暂未提供。