SuperAPI AI 工具集

prompt-improver

智能体与模型

查看项目

更新于 10-15 10:49

技能介绍

用途

Prompt Improver 用于把模糊、含糊的提示词转化为可执行、定义清晰的请求。它通过系统化研究和针对性澄清来实现这一目标。该技能在钩子(hook)已经判定某个提示词需要丰富时被调用。

调用时机

自动调用:

  • UserPromptSubmit 钩子评估提示词
  • 钩子判定提示词模糊(缺少具体信息、上下文或明确目标)
  • 钩子调用本技能来引导研究和提问

手动调用:

  • 用基于研究的问题来丰富模糊提示词
  • 构建或测试提示词评估系统时
  • 即使有对话历史,提示词仍缺少足够上下文时

前提假设:

  • 提示词已被识别为模糊
  • 评估阶段已完成(由钩子完成)
  • 直接进入研究和澄清

核心工作流

本技能遵循四阶段方法来丰富提示词。

阶段 1:研究

在提问前,使用 TodoWrite 创建动态研究计划。

研究计划模板:

  • 先检查对话历史——如果上下文已存在,避免重复探索
  • 如需要,审查代码库:
    • 用 Task/Explore 了解架构和项目结构
    • 用 Grep/Glob 查找特定模式、相关文件
    • 检查 git log 了解近期变更
    • 搜索错误、失败测试、TODO/FIXME 注释
  • 按需收集额外上下文:
    • 读取本地文档文件
    • 用 WebFetch 获取在线文档
    • 用 WebSearch 查找最佳实践、常见方法、当前信息
  • 记录发现,使问题基于实际项目上下文

关键规则:

  • 绝不跳过研究
  • 探索代码库前先检查对话历史
  • 问题必须基于实际发现,而非假设或基础知识
  • 研究阶段将 Glob、Grep、WebSearch、WebFetch 和多文件 Read 都通过 Task / Explore 路由,绝不直接调用
  • 在每个 Explore 提示中包含与对话相关的上下文。Explore 看不到之前的轮次,没有明确简报会产出浅层结果

详细研究策略、模式和示例见 references/research-strategies.md。

阶段 2:生成针对性问题

基于研究发现,提出 1-6 个能澄清歧义的问题。

问题准则:

  • 有依据:每个选项都来自研究(代码库发现、文档、常见模式)
  • 具体:避免“其他方法”这类模糊选项
  • 多选:每题提供 2-4 个具体选项
  • 聚焦:每个问题只针对一个决策点
  • 有上下文:包含对权衡取舍的简要说明

问题数量:

  • 1-2 个问题:简单歧义(哪个文件?哪种方法?)
  • 3-4 个问题:中等复杂度(范围 + 方法 + 验证)
  • 5-6 个问题:复杂场景(含多个决策点的大型功能)

问题模板、有效模式和示例见 references/question-patterns.md。

阶段 3:获取澄清

使用 AskUserQuestion 工具呈现基于研究的问题。

AskUserQuestion 格式:

  • question:清晰、具体、以 ? 结尾的问题
  • header:用于 UI 显示的短标签(最多 12 个字符)
  • multiSelect:false(除非选项互不排斥)
  • options:来自研究的 2-4 个具体选项数组
    • label:简洁的选项文本(1-5 个词)
    • description:关于该选项的上下文(权衡、影响)

重要:始终包含 multiSelect 字段(true/false)。用户始终可以选择“Other”进行自定义输入。

阶段 4:带上下文执行

使用以下内容继续处理原始用户请求:

  • 原始提示词意图
  • 用户的澄清答案
  • 研究发现和上下文
  • 对话历史

像提示词从一开始就清晰那样执行请求。

示例

示例 1:技能调用 - 研究 - 提问 - 执行

钩子评估:判定提示词模糊 原始提示词:“fix the bug” 技能是否调用:是(提示词缺少目标和上下文)

研究计划:

  • 检查对话历史中的近期错误
  • 探索代码库中的失败测试
  • Grep 查找 TODO/FIXME 注释
  • 检查 git log 中的近期问题区域

研究发现:

  • 近期对话提到登录失败
  • auth.py:145 有 try/catch 吞掉错误
  • test_auth.py 中的测试失败

生成的问题:

  • 你指的是哪个 bug?
    • 登录认证失败(auth.py:145)
    • 会话超时问题(session.py:89)
    • 其他

用户回答:登录认证失败

执行:修复 auth.py:145 中导致登录失败的错误处理

示例 2:清晰提示词(不调用技能)

原始提示词:“Refactor the getUserById function in src/api/users.ts to use async/await instead of promises”

钩子评估:通过所有检查

  • 具体目标:src/api/users.ts 中的 getUserById
  • 明确动作:重构为 async/await
  • 成功标准:使用 async/await 而非 promises

技能是否调用:否(提示词清晰,直接继续而不调用技能)

关于各种提示词类型和转换的完整示例,见 references/examples.md。

关键原则

  • 假定模糊:技能只为模糊提示词调用(评估由钩子完成)
  • 研究优先:在提出问题前始终收集上下文
  • 问题有依据:使用研究发现,而非假设或基础知识
  • 具体明确:提供来自实际代码库/上下文的具体选项
  • 保持聚焦:最多 1-6 个问题,每个针对一个决策点
  • 系统化方法:遵循四阶段工作流(研究 - 提问 - 澄清 - 执行)

渐进式披露

本 SKILL.md 包含核心工作流和要点。如需更深入的指导:

  • 研究策略:references/research-strategies.md
  • 问题模式:references/question-patterns.md
  • 完整示例:references/examples.md

仅在需要针对提示词改进特定方面的详细指导时加载这些参考文件。