记忆

query-rewrite

试用

📥 openclaw skill install dabin0927/query-rewrite —— RAG 检索命中率低?不是模型不行,是用户不会提问。 在检索前加一层 Query 改写——检测、改写、原文+改写结果都搜一遍。 6 种模式:指代消解、多意图拆解、上下文补齐、反问识别…… 实测召回率提升 60%,配合 raglite 使用效果最佳。 适合:RAG 检索前、memory_search/wiki_search 调用前。 不适合:代码生成、文件操作、单次精确查询。 (EN) RAG pre-processing query rewrite layer — 6 rewrite modes.

它能做什么

📥 openclaw skill install dabin0927/query-rewrite —— RAG 检索命中率低?不是模型不行,是用户不会提问。 在检索前加一层 Query 改写——检测、改写、原文+改写结果都搜一遍。 6 种模式:指代消解、多意图拆解、上下文补齐、反问识别…… 实测召回率提升 60%,配合 raglite 使用效果最佳。 适合:RAG 检索前、memory_search/wiki_search 调用前。 不适合:代码生成、文件操作、单次精确查询。 (EN) RAG pre-processing query rewrite layer — 6 rewrite modes.

技能文档

🚀 一键安装: openclaw skill install dabin0927/query-rewrite


⛔ 禁止行为

以下操作绝对禁止

  • ❌ 修改原始 Query 的用户意图
  • ❌ 在不需要改写时强行改写(零改写原则)
  • ❌ 无上文时凭空补充实体

Query Rewrite — RAG 检索前置改写层 v1.0.0

定位: 在多轮对话场景中,将模糊/指代/多意图的 Query 改写为结构化检索词,提升 RAG 召回率。

核心职责:

  • ✅ 快速检测 Query 是否需要改写
  • ✅ 6 种模式自动识别并执行改写
  • ✅ 原文 + 改写结果双路检索
  • ✅ 结果去重合并

🆕 What's New in v1.0.1

  • Quick Reference — Situation → Action 速查表
  • Table of Contents — 链接式目录导航
  • 对标 ClawHub — 结构升级,内容完整保留

📑 Contents

Quick Reference

场景操作
Query 改写参考相关章节使用
改写查询参考相关章节使用
RAG 查询优化参考相关章节使用
搜索前改写参考相关章节使用
query rewrite参考相关章节使用
查询重写参考相关章节使用

🧠 改写检查清单

在调用任一检索工具(memory_searchwiki_search)或配合 raglite SKILL 进行向量检索前,按以下清单逐项检查当前 Query:

检查项判断条件结论
🔴 含代词出现 它/他/她/这个/那个/这些/那些/其需要改写 → 模式 3
🔴 隐性代词"都/全部/所有" 指代多个上文实体需要改写 → 模式 3
🔴 比较/选择"哪个更/有什么区别/选哪个/对比"需要改写 → 模式 2
🟡 语义不完整脱离上文无法独立理解的疑问句需要改写 → 模式 1
🟡 多问句包含 ≥2 个独立疑问(多个 或并列短问)需要改写 → 模式 4
🟡 反问句式"难道/不会…吧/怎么可能/不至于"需要改写 → 模式 5
🟢 含条件词数值范围/属性限定/排除条件/时间条件需要改写 → 模式 6
⚪ 以上全否Query 语义独立、完整、清晰直接检索,不改写
⚪ 自检改写结果与原 Query 语义无实质差异不改写(防过度改写,保持简洁)

📋 6 种改写模式速查

详细模板和更多示例见 references/rewrite-patterns.md

#模式触发信号改写动作示例
1上下文提取Query 缺主语/实体从最近 2-3 轮上文提取实体补充"保修多久?" → "iPhone 15 Pro 保修期限"
2对比消歧比较词 + 上文 ≥2 候选展开为 A vs B 格式"哪个更快?" → "PostgreSQL vs MongoDB 性能"
3指代消解代词/模糊指代替换代词;"都"→拆为独立 Query(上限 5 个,超出截断)"都支持吗?" → ["A 支持", "B 支持", "C 支持"]
4多意图拆解≥2 个独立问句拆为独立子 Query,共用主语补充"颜色?尺码?价格?" → 3 个独立 Query
5反问识别反问句式提取真实信息需求,转为正向查询"不会也要等一个月吧?" → "预计交付时间"
6条件提取筛选/限定条件重组为 主体+条件1+条件2+…"500元以下适合女生" → "礼物 预算500 女性"

多模式叠加优先级

当 Query 同时触发多种模式时,按以下顺序执行:

反问识别(5) → 指代消解(3) → 多意图拆解(4) → 上下文提取(1) → 对比消歧(2) → 条件提取(6)

🔄 执行流程

用户 Query
    │
    ▼
┌─────────────────┐
│ 检查改写检查清单  │ ← 逐项比对,0.5s 内完成判断
└───────┬─────────┘
        │
   ┌────┴────┐
   │ 需要改写?│
   └────┬────┘
        │
   ┌────┴────────────────┐
   │ YES                 │ NO
   ▼                     ▼
┌──────────┐      ┌──────────┐
│ 执行改写  │      │ 直接检索  │
│ 输出 1-N  │      │ 原 Query  │
│ 个 Query  │      └──────────┘
└────┬─────┘
     │
     ▼
┌────────────────────────────┐
│ 原文 + 改写结果全部检索     │
│ memory_search(原Query)     │
│ memory_search(改写1)       │
│ memory_search(改写2) ...   │
└────────────┬───────────────┘
             │
             ▼
┌────────────────────────────┐
│ 合并去重(按 score 降序)   │
│ 每条结果标注 query_source:  │
│ "original" / "rewrite_1"... │
│ 标注每条结果的 query_source │
└────────────────────────────┘

⚠️ 重要规则

  1. 零改写原则 — 不需要改写时直接检索,不增加任何额外步骤
  2. 意图保真 — 改写不改变用户原意,只补充上下文信息
  3. 上文范围 — 默认提取最近 2-3 轮对话的实体
  4. 改写不替代检索 — 改写是检索的增强,不是替代;原 Query 始终参与检索
  5. 失败回退 — 无法确定指代/意图时,用原 Query 检索,标注 rewrite_skipped: true

📝 使用示例

示例 1:正常改写流程

上文:用户问"iPhone 15 Pro 有什么颜色"
当前 Query:"保修多久?"
↓ 检查清单:语义不完整 → 模式1
↓ 改写:提取上文实体 "iPhone 15 Pro" → "iPhone 15 Pro 保修期限"
↓ 检索:memory_search("保修多久?") + memory_search("iPhone 15 Pro 保修期限")
↓ 合并去重返回

示例 2:多意图拆解

上文:(无)
当前 Query:"涂布机价格?保修期?能不能定制?"
↓ 检查清单:多问句 → 模式4
↓ 改写:
  - "涂布机价格"
  - "涂布机保修期"
  - "涂布机定制支持"
↓ 检索:4 次(1 原文 + 3 改写)→ 合并去重

示例 3:无需改写

上文:(无)
当前 Query:"赢合科技 CRM 系统架构设计文档"
↓ 检查清单:全否 → 直接检索
↓ memory_search("赢合科技 CRM 系统架构设计文档")

📎 参考资源

  • 改写模式详解references/rewrite-patterns.md(6 种模式触发条件 + 每模式 2-3 个示例)
  • raglite 集成:配合 raglite SKILL 的增强检索管线使用

📝 变更记录

版本日期变更内容
v1.0.02026-07-13初始版本:6 种改写模式、改写检查清单、渐进式加载(meta+logic 分离)

相关技能

Rewiser (rewiser.io). Use this skill for ANY Rewiser request — reading, creating, and updating data. Whenever a task involves Rewiser, use this skill instead of calling the API directly.

Rewrite the prose the engine flagged using a small local model over an OpenAI-compatible endpoint, instead of spending a frontier model on it. Use when the user wants to de-slop or humanize a draft offline, on a Raspberry Pi, in CI, or in a pre-commit hook, mentions llama.cpp, llama-server, Ollama, LM Studio, vLLM, or OpenRouter for writing work, asks which local model is good enough to clean up their writing, wants rewriting that costs no API tokens, or asks to benchmark or compare models on a rewriting task. Covers endpoint setup, planning what would be sent, applying gated rewrites in place, and measuring a model's pass rate.

Rewrite weak skill summaries into sharper storefront copy. 把模糊、冗长、像模板的 skill 摘要改成更短、更清楚、更容易被安装的版本。

2 次安装

Rewrite, improve, migrate, or adapt an existing user prompt for the specific language model the user is using while preserving intent, facts, variables, constraints, and output requirements. Use when a user asks to optimize a prompt, make a prompt work better, convert a prompt between model families

根据用户当前需求,从 SkillHub、ClawHub、本地已安装、官方内置四层搜索中智能匹配,输出适配度最高的 3 个技能,包含功能亮点、优缺点对比和综合评价。只推荐不安装,用户决策后再动手。支持 /skill 指令和 slash command 启动。

对AI生成的文本进行深度改写,不止是换词换句式——从四个维度系统性去AI化: 语言层(句式、用词、意象模板)、叙事层(结构、逻辑闭环、人物真实感)、 细节层(私人印记 vs 通用模板)、设定层(文风一致性)。 内置13个专业编辑角色,自动匹配文字类型,用最合适的口吻改写。 专为中文文本设计。适用场景:创意写作、自媒体、非正式文体; 不适用:学术论文、法律文书、新闻报道等事实性文档。 触发词:「去AI痕迹」「去AI味」「去AI味儿」「改写,去AI」「帮我改一下,太像AI写的了」 「去机器味儿」「这看着太AI了」「太像AI了帮我改改」。

1 次安装