关于 melech-distill-need
这项技能指导 Agent 从字面请求中提炼实际目标,先了解关键背景并检查现有方案,再提出不同路径供用户选择。适用于需求尚不清晰、可能无需开发的场景。
主要功能
- 01区分字面请求与真实目标
- 02用少量问题澄清需求
- 03检查背景约束与现有方案
- 04比较方案并给出建议
- 05确认后再进入实现
适用场景
- 01评估是否需要开发新功能
- 02寻找现有产品或流程的替代方案
- 03在编码前厘清需求与成功标准
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ adird/ agent-shell-hamelech --skill melech-distill-need安装后在 Claude Code 中输入/melech-distill-need确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonevals/fixtures/support-product/product-signals.mdREADME.mdrouting.ts详细介绍
提炼需求
用户的请求不是圣旨,通常只是一个拟议的解决方案。
人们往往:
- 不清楚自己究竟在问什么
- 不清楚自己真正需要什么
- 不清楚现有解决方案已经能满足需求
天真的 AI 会瞄准字面意思。你的任务是提炼需求,然后提供能达成目标的途径——这些途径可能与用户提出的方案截然不同。
经典模式:
- 请求:“我需要一匹更快的马。”
- 提炼:更快到达 B 地。
- 更好的办法:坐汽车——或者走路,如果工作地点就在十英尺外。
你要达成什么
区分:
- 字面请求——点名要的功能、工具或实现方式
- 实际需求/目标——要满足什么条件,用户才会满意
- 背景——可能改变或简化问题的限制条件
- 更好的办法——包括复用、改变流程或不开发
然后让用户决定。明确说出提炼后的需求;不要悄悄换成你偏好的解决方案。
工作流
1. 识别拟议的解决方案
用一句话复述字面请求。标明这是拟议的解决方案,而不是最终目标。
2. 提炼目标
只问最少的问题,弄清:
- 完成后必须满足什么条件
- 为什么现在想解决这个问题
- 如果什么都不改变,会有什么痛点
优先问 1–3 个能带来关键信息的问题。如果分支很明确,可以一并询问。 不要进行冗长的需求访谈。
3. 检查会改变问题性质的背景
留意会改变解决方案类别的事实:
- 限制、距离、频率、紧迫性、规模
- 谁在承受痛点
- 在用户的实际情境中,“完成”意味着什么
如果缺少的背景信息会改变答案,就询问用户。 如果可以根据仓库/产品安全推断,就说明你的假设。
4. 检查现有解决方案
在提出新方案前,先确认:
- 代码库、产品或流程中是否已有现成方案
- 用户是否在重复造轮子
- 更糟的是,是否在把轮子造成立方体
- 如果已有的库、工具或服务可能就能解决问题,提醒用户
如果能满足需求,优先集成、复用或配置现有方案,而不是从零开始开发。
5. 提供不同类别的解决方案
针对同一个目标,提出 1–3 个有实质差异的办法。至少考虑:
- 不开发/手动处理/调整流程/使用现有工具
- 对现有方案做最小改动
- 用户点名的方案(或改进后的版本),前提是它仍然值得采用
对每种方案说明:是否适合目标、成本、需要牺牲什么,以及适用场景。 给出推荐方案,由用户选择。
6. 移交下一步
- 如果需求不再成立,或“走路”更合适 → 停下。不要制定计划,也不要写代码。
- 如果需求仍然适合通过开发解决 → 继续对齐概念,并选择最小且有用的方案。
- 如果用户已有方向,只是想让你找出漏洞 → 直接对该方向进行压力测试。
问题筛选
只问会影响以下事项的问题:
- 目标的定义
- 解决方案类别
- 是否有必要开发
- 是否已有方案能解决问题
不要询问实现细节。不要为了显得专业而凭空制造需求。
这就是拦截环节,最终结论可以是不开发。
应做/不应做
应做:“你要的是一匹更快的马。目标似乎是更快到公司。你住处离公司只有 10 英尺——走过去比养马更快。如果真正的限制是天气、身份、货物,请告诉我,我们再重新评估。”
**不应做:**开始设计一套优化马匹的服务。
应做:“你要的是一个新的通知微服务。真正的需求似乎是:让用户注意到扣款失败。现有的电子邮件和应用内横幅可能就够了。选项有:(1) 复用横幅;(2) 扩展现有通知器;(3) 新建服务。我推荐 (1)。”
**不应做:**因为句子里提到了微服务,就立刻搭建微服务的脚手架。
应做:“字面请求:自定义 RBAC 引擎。提炼后的需求:对非管理员隐藏管理页面。检查两个路由的角色权限可能就够了。在设计策略框架之前,先确认这个目标。”
**不应做:**把用户点名的架构当成不可更改的东西。
**应做:**给出建议,然后等待用户选择。
**不应做:**悄悄把用户的请求替换成你自己偏好的方案,然后开始写代码。