Install
openclaw skills install tz-prompt-optimizerUse when the user asks to optimize, improve, or rewrite a prompt, or when a vague request needs to be turned into a precise instruction. Two engines: 3300+ template library + LLM meta-prompting. Do NOT use for general conversation or code review.
openclaw skills install tz-prompt-optimizer双引擎提示词优化:模板匹配(3300+ 模板库)+ LLM 元提示(宿主 AI 直接优化)。
Skill 启动时自动检测当前宿主平台的能力,降级不可用功能:
| 能力 | 检测方式 | 有 → 正常 | 没有 → 降级 |
|---|---|---|---|
| 文件读取 | 尝试读 references/categories/index.json | 模板引擎可用 | 强制切换到 llm-only 模式,隐藏模板相关指令 |
| 文件写入 | 尝试写 memory/prompt_optimizer_state.json | 状态持久化 | 对话内记忆状态,不写文件 |
| 大文件处理 | 读取 categories/coding.json(1.5MB) | 按类别加载 | 只能用小类别或纯 LLM |
启动时行为:
references/categories/index.json
memory/prompt_optimizer_state.json
当用户第一次提到优化 prompt 且 memory/prompt_optimizer_state.json 不存在时,执行一次性 onboarding:
介绍能力(一句话):"Prompt Optimizer 可以帮你把模糊的指令变成精准、结构化的提示词,支持模板匹配 + AI 直接优化两种引擎。"
快速问几个配置问题:
a) 你平时主要用 prompt 做什么?
coding 类别writing + creative-generationbusiness + consultingeducationcoding(占模板库 50%,覆盖最广)b) 引擎偏好?
template-first(默认)llm-onlytemplate-onlyc) 输出格式偏好?
d) 模板版本?
写入初始状态文件 memory/prompt_optimizer_state.json:
{
"enabled": true,
"mode": "lite|full",
"engine": "template-first|llm-only|template-only",
"output_format": "text|markdown|xml|all",
"categories": ["..."],
"onboarded": true,
"turned_on_at": "ISO timestamp"
}
确认完成:"设置完成!以后直接发 prompt 给我就能优化了,随时可以说 '切换引擎' 或 '加载新类别' 来调整。"
Onboarding 只执行一次,后续每次激活直接读取状态文件。
默认关闭,用户明确指令才激活。
| 操作 | 指令示例 |
|---|---|
| 开启 | "开启提示词优化"、"开启简易版" |
| 开启(完整版) | "开启完整版提示词优化" |
| 关闭 | "关闭提示词优化" |
| 设置引擎 | "引擎设为..."(见下方) |
| 设置输出格式 | "输出格式设为 Markdown/XML/纯文本/全部" |
| 模式 | 指令 | 原理 | 适用场景 |
|---|---|---|---|
| 模板优先 + LLM 兜底(默认) | "引擎设为模板优先" | 先查模板库,匹配不到再让 LLM 生成 | 日常使用,省 token |
| LLM 直接 | "引擎设为纯LLM" | 跳过模板库,直接让宿主 AI 优化 | 定制化需求、模板覆盖不到的领域 |
| 仅模板 | "引擎设为仅模板" | 只查模板库,匹配不到就告知用户 | 追求速度、不消耗额外 token |
LLM 元提示的核心思路: 本 Skill 运行在宿主 AI 内部(OpenClaw/Claude Code/龙须等),宿主 AI 本身就是优化引擎。不需要调外部 API,直接让当前 AI 以「提示词优化专家」的身份工作。
版本区别:
📦 模板库文件不包含在 ClawHub 包中(体积过大)。从 GitHub 获取:
- Lite:
https://raw.githubusercontent.com/Thomaszhou22/prompt-optimizer/main/references/prompt_library_lite.json- Full:
https://raw.githubusercontent.com/Thomaszhou22/prompt-optimizer/main/references/prompt_library_full.json- Categories:
https://github.com/Thomaszhou22/prompt-optimizer/tree/main/references/categories运行
git clone https://github.com/Thomaszhou22/prompt-optimizer.git获取完整模板库。
不用加载全部 3344 条,可以只加载你需要的类别:
| 操作 | 指令示例 |
|---|---|
| 加载特定类别 | "只加载coding的模板"、"加载编程+data-analysis" |
| 查看可选类别 | "有哪些类别可选" |
| 加载全部 | "加载全部类别" |
| 移除类别 | "移除art-entertainment" |
类别文件位置: references/categories/{类别名}.json
| 类别 | 数量 | 文件大小 |
|---|---|---|
| coding | 1672 | ~1.5MB |
| art-entertainment | 404 | ~411KB |
| 其他 | 253 | ~202KB |
| writing | 208 | ~196KB |
| education | 117 | ~107KB |
| consulting | 114 | ~115KB |
| business | 108 | ~98KB |
| health-lifestyle | 82 | ~76KB |
| legal-finance | 82 | ~80KB |
| data-analysis | 73 | ~73KB |
| creative-generation | 73 | ~66KB |
| science-research | 61 | ~55KB |
| translation | 60 | ~57KB |
| tech-tools | 37 | ~36KB |
加载优先级: 指定类别 → 加载对应 categories/ 文件;未指定类别 → 加载完整 lite/full 文件。
默认引擎 template-first,default category coding(占模板库 50%,最常用)。用户可随时切换。
状态持久化到 memory/prompt_optimizer_state.json:
{"enabled": true, "mode": "lite", "engine": "template-first", "output_format": "text", "categories": ["coding"], "turned_on_at": "2026-05-19T16:05:00+08:00"}
engine 可选值:"template-first"(默认) | "llm-only" | "template-only"
输出格式说明:
## 标题、- 列表、**加粗** 等格式包裹<prompt><role>...</role><action>...</action></prompt> 结构包裹判断逻辑: 收到消息 → 检查状态文件 → 开关/切换指令则更新状态 → 关闭中则忽略 → 开启中则执行下方工作流。
开启中但消息是简单日常对话("你好"、"今天天气"、"谢谢")→ 不触发优化,正常回复。
评估任务复杂度和引擎匹配度:
输出建议后等用户回复 "切换" 或 "继续"。
识别:目标(Goal)、领域(Domain)、角色(Role)、约束(Constraints:格式/语言/受众/长度)、复杂度。
根据状态中 engine 值决定执行路径:
| engine | 路径 |
|---|---|
template-first(默认) | 执行 Step 2a → 若匹配成功走 CRAFT → 若匹配失败自动跳 Step 3 LLM 兜底 |
llm-only | 跳过模板库,直接执行 Step 3 |
template-only | 执行 Step 2a → 若匹配失败告知用户,不调 LLM |
数据源选择:
categories 非空 → 只读取 references/categories/{类别}.json 中指定的类别文件categories 为空或不存在 → 读取完整库文件(lite 或 full)按以下规则匹配 1-3 个最相关模板:
分类:coding | writing | education | business | health-lifestyle | tech-tools | translation | art-entertainment | consulting | creative-generation | data-analysis | science-research | legal-finance | 其他
匹配失败处理(template-first 模式): 自动告知用户「模板库未匹配到,正在用 LLM 直接优化」,然后跳到 Step 3。
这是核心新增能力。 宿主 AI 以「提示词优化专家」身份,根据优化类型选择对应的 meta-prompt 框架:
适用大多数场景。输出结构化 prompt:
# Role: [角色名称]
## Profile
- language: [语言]
- description: [详细角色描述]
- background: [角色背景]
- personality: [性格特征]
- expertise: [专业领域]
- target_audience: [目标用户群]
## Skills
1. [核心技能类别]
- [具体技能]: [说明]
2. [辅助技能类别]
- [具体技能]: [说明]
## Rules
1. [基本原则]
2. [行为准则]
3. [限制条件]
## Workflows
- 目标: [明确目标]
- 步骤 1: [详细说明]
- 步骤 2: [详细说明]
- 步骤 3: [详细说明]
- 预期结果: [说明]
## Initialization
作为[角色名称],你必须遵守上述Rules,按照Workflows执行任务。
优化时的核心行为:
适用复杂业务场景。深度分析原 prompt 的设计缺陷,提供详细改进方案。
作为 Prompt 工程师,从 8 个维度分析并重组:
输出格式与 3a 相同,但每个部分需要 5 个要点,并额外包含 Attention(注意要点)和 Suggestions(工作方法论)部分。
适用已有 prompt 需要微调的场景。
核心原则:
{{variable}})理解示例:
适用优化用户输入的查询(非系统 prompt)。
将用户的原始查询精炼为「明确、具体、可执行、可验证」的用户提示词文本:
对优化前后的 prompt 进行对比评估,宿主 AI 以「提示词质量评估专家」身份打分。
评估维度(每项 1-10 分):
| 维度 | 说明 |
|---|---|
| goalClarity | 目标是否清晰明确 |
| instructionCompleteness | 指令是否完整无遗漏 |
| structuralExecutability | 结构是否可执行、步骤是否明确 |
| ambiguityControl | 歧义控制,是否有模糊表述 |
| robustness | 鲁棒性,不同输入下是否稳定 |
输出格式:
📊 质量评估报告
原始 Prompt 评分:
目标清晰度: [X/10]
指令完整性: [X/10]
结构可执行性: [X/10]
歧义控制: [X/10]
鲁棒性: [X/10]
总分: [XX/50]
优化后评分:
目标清晰度: [X/10]
指令完整性: [X/10]
结构可执行性: [X/10]
歧义控制: [X/10]
鲁棒性: [X/10]
总分: [XX/50]
📈 提升: [+XX分]
💡 改进亮点:
1. [具体改进点]
2. [具体改进点]
3. [具体改进点]
⚠️ 仍可优化:
1. [可进一步改进的方向]
2. [可进一步改进的方向]
评估原则:
对 Step 2(模板)或 Step 3(LLM)的输出统一增强:
默认 Level 2(标准 CRAFT),复杂分析/创意用 Level 3(+CoT+few-shot),快速优化用 Level 1(role+format)。
根据用户设定的输出格式(默认纯文本)生成对应格式的提示词。
📋 原始输入: [用户原话] 🔧 引擎: [模板匹配 / LLM元提示 / 双引擎] 📎 参考模板: [模板名 或 "LLM直接生成"]
✨ 优化后的提示词:
[完整提示词 — 按用户设定的格式输出]
🔄 改动说明: [1-2 句] 📎 输出格式: [纯文本/Markdown/XML/全部]
👆 回复 "✅" 确认使用 / "❌" 放弃用原始输入 / 提修改意见微调 / "换格式" 更改输出格式 / "继续优化" 再迭代一轮 / "评估" 查看质量评分
等待用户回复后再执行。
[placeholder]