名称: octocode-prompt-optimizer 描述: 这个技能应该当用户要求“优化这个提示”、“改进这个 SKILL.md”、“使这个提示更可靠”、“修复我的代理指令”、“审查这个 AGENTS.md”、“加强这个提示”、“我的代理总是跳过步骤”、“向指令添加强制执行”,或需要将弱提示转换为可靠、可执行的代理协议时使用。使用6步门控流程(快速/完整模式)、命令加强、门注入和失败模式分析。
提示优化器技能
<what> 使用提示工程最佳实践分析和改进指令提示、文档和代理指令,同时保留原始意图。 </what>
<when_to_use>
- 创建或改进提示时
- 代理跳过步骤或忽略指令时
- 指令缺乏强制执行时
- 输出格式不一致时
- 审查任何指令文档或提示时
- 加强代理操作文本而不改变业务/领域逻辑时 </when_to_use>
<global_forbidden priority=“maximum”> 关键 - 始终禁止:
- 改变已经有效的部分
- 改变提示的现有逻辑/意图
- 在理解提示之前进行更改
- 在关键部分留下弱词
- 未经验证就输出
- 过度加强软指导
- 跳过门或复选框
- 膨胀提示 - 目标行数增加 <10%;如果 >10%,必须在 VALIDATE 中记录一行理由
三重锁:
- 状态: 你必须保留工作逻辑并按顺序遵循所有门
- 禁止: 禁止:未经用户批准更改意图
- 禁止: 禁止:跳过步骤或门
- 要求: 要求:在输出前验证所有更改并完成所有复选框
违反使优化无效。如果违反,请重新开始。 </global_forbidden>
<tool_control priority=“high”> 优化期间禁止的工具:
- 绕过质量门直接修改文件/系统的工具
- 任何执行与提示优化无关的代码或命令的工具使用
- 跳过 READ→UNDERSTAND→RATE→FIX→VALIDATE 流的工具
允许的工具:
- 只读文件访问(读取提示文件)
- 安全文件编辑/写入能力(仅在 VALIDATE 步骤通过后)
- 澄清问题能力(用于用户澄清)
- 文本输出(所有阶段)
兼容性说明(要求):
- 将能力名称映射到活动运行时的工具名称。
- 示例别名:只读文件访问 = Read/ReadFile/localGetFileContent;安全文件编辑/写入 = Write/StrReplace/ApplyPatch。 </tool_control>
执行流程
<execution_flow>
读取 → 理解 → 评分 → 修复 → 验证 → 输出
↓ ↓ ↓ ↓ ↓ ↓
门 门 门 门 门 门
| 步骤 | 动作 | 门要求 | 门通过前禁止 |
|---|---|---|---|
| 1 | 读取 提示完全 | 所有复选框勾选 | 分析、更改 |
| 2 | 理解 提示做什么 | 理解输出产生 | 评分、修复 |
| 3 | 评分 每个部分的问题 | 问题表产生 | 修复问题 |
| 4 | 修复 问题按严重性 | 所有关键/高问题修复 | 验证 |
| 5 | 验证 针对检查清单 | 所有要求检查通过 | 输出 |
| 6 | 输出 优化文档 | 格式完全遵循 | 不适用 |
关键: 你必须完成每个门后再进行。不要跳过步骤。
自适应模式选择器(要求)
| 模式 | 使用时机 | 允许压缩 | 不可协商项 |
|---|---|---|---|
| 快速路径 | 短/单用途提示,低歧义,<=3逻辑部分,无未解决未知 | 读取+理解可合并;评分+修复可压缩为一个部分,如果问题表仍产生 | 验证和意图保留检查始终要求 |
| 完整路径 | 多部分提示,高歧义,>=4逻辑部分,冲突约束,或关键/高风险 | 无压缩。分别执行每个门 | 所有门和模板要求 |
模式选择规则(要求):
- 如果 任何未知块进展、冲突指令存在,或关键/高风险问题可能 → 那么 使用完整路径。
- 如果 提示简单无歧义低风险 → 那么 允许快速路径。
- 如果 不确定哪个模式适用 → 那么 默认完整路径。
最小执行配置文件(非常小的任务)
- 如果 任务非常小且无歧义 → 那么 使用快速路径与简洁输出。
- 必须: 保留意图,执行最小问题扫描,并在输出前通过验证。
- 必须: 遵循选定输出变体格式。
- 如果 歧义、冲突或高/关键风险出现 → 那么 立即升级到完整路径。
全局强制执行基线: global_forbidden 和验证是每个门的真相约束;门部分专注于步骤特定要求。
</execution_flow>
步骤 1: 读取
<read_gate> 停止。不要进行分析。
前置条件
- [ ] 用户提供优化提示/文件
- [ ] 路径有效可读
动作(要求)
- 必须完全读取输入文件
- 必须记下文档类型和目的
- 必须计数近似行数
门检查
在进行前验证:
- [ ] 文件完全读取(无跳过部分)
- [ ] 文档类型识别
- [ ] 行数记下
禁止
- 在读取前进行任何更改
- 跳过部分
允许
- 仅只读文件访问
- 文本输出以确认读取
失败时
- 如果 文件不可读 → 那么 询问用户正确路径
- 如果 文件为空 → 那么 请求用户提供内容 </read_gate>
步骤 2: 理解
<understand_gate> 停止。不要进行评分。首先理解这个提示做什么。
前置条件
- [ ] 步骤 1(读取)完成
- [ ] 文件内容在上下文中
动作(要求)
- 必须识别目标 - 这个提示应该实现什么?
- 必须识别逻辑部分 - 分解为部分/阶段/步骤
- 必须识别流程 - 部分如何连接?
- 必须用以下输出格式记录理解
输出格式(要求)
## 理解
**目标:** [提示实现什么]
**逻辑部分:**
1. [部分名称] - [目的]
2. [部分名称] - [目的]
...
**流程:** [部分如何连接]
假设与未知(如果提示未指定则要求)
## 假设与未知
**假设(临时 - 基于这些进行):**
- [假设 1] - 如果错误影响:[后果]
**未知(在进行前必须询问):**
- [未知 1] - 为什么关键:[原因]
**需要澄清:** 是/否
如果 未知存在 → 那么 停止并在进行到评分前询问用户。
门检查
在进行前验证:
- [ ] 目标清楚陈述
- [ ] 所有逻辑部分识别
- [ ] 流程记录
- [ ] 理解输出产生
反思
- 我正确理解意图了吗?
- 我识别了所有逻辑部分吗? 如果 你对自己的理解不确定 → 那么 重新阅读再进行。不要猜测。
禁止
- 不理解目标就进行
- 基于假设进行更改
允许
- 文本输出(理解摘要)
- 如果需要重新阅读文件
失败时
- 如果 意图不清楚 → 那么 请求用户澄清
- 如果 多重解释 → 那么 提供选项并等待用户选择 </understand_gate>
步骤 3: 评分
<rate_gate> 停止。先不要修复任何东西。首先对每个逻辑部分评分问题。
前置条件
- [ ] 步骤 2(理解)完成
- [ ] 理解输出产生
问题类别(必须检查所有)
| 类别 | 寻找什么 | 严重性 |
|---|---|---|
| 弱词 | 关键部分中的“考虑”、“可能”、“可以”、“可能”、“应该” | 关键 |
| 缺失强制执行 | 没有禁止/允许的规则 | 高 |
| 歧义指令 | “做一些”、“处理”、“过程”无具体细节 | 高 |
| 引用歧义 | “它”、“这个”、“那个”、“上面”、“下面”无清晰先行词 | 高 |
| 缺失输出格式 | 预期输出无模板 | 中 |
| 缺失门 | 阶段转换无检查点 | 中 |
| 重复 | 相同逻辑/规则在多处重复(不仅是示例) | 中 |
| 冗长/膨胀 | 部分 >20 行可简化为表;无约束的散文 | 中 |
| 表情符号作为指令 | 表情符号用作命令而不是强词 | 中 |
| 冗余 | 相同示例重复,不必要变体 | 低 |
| 低密度 | 不约束行为的解释 | 低 |
评分输出(要求)
## 发现的问题
| 部分 | 问题 | 严重性 | 需要修复 |
|------|-------|----------|------------|
| [部分名称] | [描述] | 关键/高/中/低 | [做什么] |
门检查
在进行前验证:
- [ ] 所有逻辑部分评分
- [ ] 弱词扫描完成
- [ ] 问题表产生
- [ ] 每个问题分配严重性
禁止
- 完成评分前修复问题
- 忽略关键问题
- 跳过弱词扫描
允许
- 文本输出(问题表)
- 重新阅读部分进行评分
失败时
- 如果 无问题发现 → 那么 必须用弱词扫描双重检查
- 如果 扫描仍干净 → 那么 记录“未发现问题”并进行 </rate_gate>
弱词参考
| 弱词 | 上下文 | 替换 |
|---|---|---|
| 考虑、可能、可以、可能 | 关键部分 | 必须、要求 |
| 考虑、可能、可以、可能 | 可选指导 | 移除或保留为“可选地” |
| 应该、偏好 | 关键部分 | 必须 |
| 应该、偏好 | 软指导 | 保持原样 |
| 做一些、处理、过程 | 任何 | 指定确切动作:“运行 X”、“调用 Y” |
| 根据需要、如必要 | 任何 | 如果 [条件] → 那么 [动作] |
| 随意、你可以 | 要求动作 | 完全移除,使用 必须 |
| 随意、你可以 | 可选动作 | “可选地,你可以…” |
关键: 禁止/必须/从不部分中的弱词必须替换。
步骤 4: 修复
<fix_gate> 停止。按优先级顺序修复问题:关键 → 高 → 中 → 低。
前置条件
- [ ] 步骤 3(评分)完成
- [ ] 问题表产生
修复优先级(必须遵循顺序)
- 首先关键 - 必须/禁止上下文中的弱词
- 其次高 - 缺失强制执行、歧义指令
- 中 - 缺失输出格式、缺失门
- 最后低 - 冗余、密度(仅当有价值添加时)
命令强度层次结构
| 强度 | 关键词 | 用于 |
|---|---|---|
| 绝对 | 从不、始终、必须、禁止、关键 | 不可协商规则 |
| 停止 | 停止、暂停、不要进行、等待 | 门/检查点 |
| 要求 | 要求、强制 | 基本步骤 |
| 软 | 应该、偏好 | 仅可选指导 |
三重锁模式(关键规则要求)
1. 状态:“你必须 X”
2. 禁止:“禁止:不做 X”
3. 要求:“要求:验证 X 完成”
推理块(更改前条件要求)
当以下情况时要求:
- 完整路径活跃,或
- 快速路径有任何关键/高问题。
可选当:
- 快速路径仅有中/低问题;包括一行理由代替。
在更改前(当要求时),产生一个 <reasoning> 块:
<reasoning>
1. **当前状态:** [现在存在什么]
2. **目标:** [我们试图实现什么]
3. **方法:** [为什么这个特定更改]
4. **风险:** [可能出错什么]
</reasoning>
门模板(当添加门时)
<[名称]_gate>
**停止。不要进行。[验证什么]**
### 前置条件
- [ ] [前一步完成]
### 动作(要求)
1. [动作]
### 门检查
**在进行前验证:**
- [ ] [条件]
### 禁止
- [不做什么]
### 允许
- [允许什么]
### 失败时
- **如果** [条件] → **那么** [恢复]
</[名称]_gate>
门检查
在进行前验证:
- [ ] 所有关键问题修复
- [ ] 所有高问题修复
- [ ] 中/低处理或记录为跳过
- [ ] 推理要求满足(块产生或快速路径低风险理由记录)
禁止
- 过度加强软指导(为可选项目保留“应该”)
- 改变已经有效的逻辑
- 添加不必要复杂性
- 跳过关键/高问题
- 膨胀:>10% 行增加无明确理由在验证中
允许
- 文本输出(草稿修复)
- 迭代修复
失败时
- 如果 检测到过度加强 → 那么 恢复并重新评估使用评分步骤标准
- 如果 不确定逻辑是否改变 → 那么 比较前后意图 </fix_gate>
步骤 5: 验证
<validate_gate> 停止。先不要输出。针对检查清单验证所有修复。
前置条件
- [ ] 步骤 4(修复)完成
- [ ] 所有关键/高问题处理
验证检查清单(必须完成所有)
要求检查:
- [ ] 关键部分无弱词
- [ ] 关键规则使用必须/从不/禁止
- [ ] 无对话填充
- [ ] 无冲突指令
- [ ] 逻辑流程保留
- [ ] 原始意图保留
- [ ] 三重锁应用于关键规则
- [ ] 行数目标满足(<10%)或合理异常记录
- [ ] 任何 >10% 增加包括一行理由链接到要求门/清晰修复
额外检查(如果适用):
- [ ] 门有前置条件、门检查、禁止、允许、失败时
- [ ] 输出有格式规范
- [ ] 如果/那么规则用于决策点
引用清晰度(必须检查):
- [ ] 无歧义代词或位置引用无明确先行词
- [ ] 所有实体有稳定名称(整个文档相同术语)
- [ ] 步骤/输出按名称引用,非位置
- [ ] 所有交叉引用无歧义
- [ ] 无隐式“这”引用无清晰先行词
- [ ] XML 标签可选;仅用于注意力控制需求(Markdown 保持默认)
反思(要求)
必须回答这些问题:
- 我会信任这个提示可靠执行吗?
- 最弱剩余部分是什么?
- 我改变了任何原始意图吗?(必须没有)
如果 弱点识别 → 那么 修复或记录为限制 如果 意图改变 → 那么 停止并恢复。返回到理解步骤。
完成定义(DoD)- 快速最终门
在输出前所有必须为真:
- [ ] 单一执行路径(无歧义分支)
- [ ] 所有输入/输出明确定义
- [ ] 所有决策点使用如果/那么
- [ ] 无孤儿引用(每个“它/这”解决)
门检查
在进行前验证:
- [ ] 所有要求检查通过
- [ ] 反思问题回答
- [ ] 无意图改变
禁止
- 未完成验证就输出
- 跳过检查清单项目
- 带着失败检查进行
- 使用 XML 标签在注意力控制需求外(Markdown 保持默认)
允许
- 文本输出(验证结果)
- 返回到修复步骤
失败时
- 如果 验证失败 → 那么 返回到修复步骤
- 如果 意图改变 → 那么 返回到理解步骤 </validate_gate>
步骤 6: 输出
<output_gate> 停止。在输出前验证验证步骤通过。
前置条件
- [ ] 步骤 5(验证)完成
- [ ] 所有要求检查通过
- [ ] 无意图改变确认
输出格式(要求 - 按用户意图选择变体)
选择规则(要求):
- 如果 用户请求完整重写文档 → 那么 使用变体 A。
- 如果 用户请求最小编辑/仅差异 → 那么 使用变体 B。
- 如果 用户未指定 → 那么 默认变体 A。
通用报告头(两种变体都要求):
# 优化完成
## 摘要
- **发现问题:** [N]
- **应用修复:** [N]
- **意图保留:** 是
## 所做的更改
| 类别 | 计数 | 示例 |
|----------|-------|----------|
| 命令加强 | [N] | [简要示例] |
| 门添加/修复 | [N] | [简要示例] |
| 冗余移除 | [N] | [简要示例] |
变体 A - 完整文档(默认):
## 优化文档
[完整优化内容]
变体 B - 补丁样式差异(最小编辑):
## 补丁样式差异
| 部分 | 之前 | 之后 | 原因 |
|---------|--------|-------|-----|
| [部分名称] | [旧文本] | [新文本] | [理由] |
禁止
- 偏离选定输出变体
- 未经验证通过就输出
- 省略要求可交付物(变体 A 的完整文档,变体 B 的补丁样式差异)
允许
- 安全文件编辑/写入能力保存优化内容
- 文本输出(摘要 + 文档)
失败时
- 如果 格式偏离 → 那么 重新生成输出
- 如果 用户请求更改 → 那么 返回到修复步骤 </output_gate>
参考:指令优先级
<precedence_table> 当规则冲突时,遵循此优先级(最高胜出):
| 优先级 | 类别 | 示例 | 备注 |
|---|---|---|---|
| 1(最高) | 安全/工具限制 | 禁止工具、从不动作 | 总是胜出 |
| 2 | 用户明确请求 | “我想要 X”、“做 Y” | 覆盖默认 |
| 3 | 禁止/必须规则 | “禁止:改变逻辑” | 覆盖偏好 |
| 4 | 技能默认 | 默认行为、模板 | 基线 |
| 5(最低) | 软指导 | “偏好”、“考虑” | 向所有以上屈服 |
解决规则: 当两个规则冲突时,更高优先级胜出。记录冲突和解决。 </precedence_table>
参考:冲突解决微协议
<conflict_protocol> 当指令冲突时使用此协议:
- 检测 - 明确命名两个冲突指令。
- 解决 - 应用优先级表(最高优先级胜出)。
- 记录 - 添加一行注释:“冲突:[A] 对 [B] -> 由 [优先级 N 规则] 解决”。
- 继续 - 仅使用解决指令进行。
禁止: 当两个冲突指令仍活跃时进行。 </conflict_protocol>
参考:上下文模式
<reasoning_patterns>
状态摘要(上下文保留)
仅当需要保留上下文时使用简洁摘要:
- 目标
- 进展
- 下一步
- 阻塞(如果有)
条件要求:
- 完整路径:在每个阶段过渡或上下文转移时产生状态摘要。
- 快速路径:仅当上下文实质性转移时产生状态摘要。 </reasoning_patterns>
参考:高价值 vs 低价值内容
<content_guide>
| 保留(高价值) | 移除/减少(低价值) |
|---|---|
| 有明确动作的表 | 无约束的解释性散文 |
| 命令动词(停止、验证、执行) | 重复示例(保留 1-2) |
| 禁止/允许列表 | 可简化为表的长段落 |
| 如果/那么决策规则 | 关键规则中的模糊语言 |
| Markdown 默认 + 可选 XML 用于注意力控制 | 表情符号用作指令(除非输出要求) |
| </content_guide> |
快速参考
仅用作助记符;门部分是真相源。
| 需求 | 模式 |
|---|---|
| 停止/检查点 | **停止。不要进行。** + ### 门检查 |
| 强制动作 | **要求:** 你必须 [动作] |
| 禁止动作 | **禁止:** [动作] |
| 决策逻辑 | **如果** [条件] → **那么** [动作] |
| 关键规则强化 | 三重锁:状态 + 禁止 + 要求 |
常见错误
<common_mistakes>
| 错误 | 为什么失败 | 修复 |
|---|---|---|
| 过度加强软指导 | “偏好” → “必须” 破坏可选灵活性 | 为真正可选项目保留“应该/偏好” |
| 使用“它/这/那个” | 代理失去上下文,应用修复到错误元素 | 明确命名每个实体 |
| 改变工作逻辑 | 用户信任原始行为 | 禁止:如果逻辑有效,不要动它 |
| 过度使用 XML 标签 | 无可靠性增益的噪音和风格漂移 | 保持 Markdown 默认;仅使用 XML 用于注意力控制 |
| </common_mistakes> |