Skill: nicshliu/openclaw-compact-improver (version 1.0.0)

--- name: openclaw-compact-improver description: 优化 OpenClaw 4.2 的 /compact 压缩命令提示词，生成结构化摘要。当用户提到压缩效果差、摘要不完整、上下文丢失、/compact 格式不好，或要求改进压缩提示词时触发。 --- # OpenClaw Compact Improver 改进 `/compact` 命令的压缩摘要质量，参考 Claude Code 的 9 段结构化摘要格式。 ## 当前 OpenClaw 的问题 OpenClaw 4.2 的压缩提示较为简单，缺少： 1. 结构化分段格式 2. 文件路径和代码片段的精确保留 3. 记忆验证行为指导 4. Pending tasks 的明确提取 ## 结构化压缩摘要格式（目标格式） 当执行 `/compact` 或触发自动压缩时，使用以下 9 段格式： ``` <analysis> [分析过程，确保覆盖所有要点： - 用户的核心请求是什么 - 涉及了哪些文件和代码 - 遇到了什么错误/问题 - 当前工作进展到哪里] </analysis> <summary> 1. Primary Request and Intent: [用户的核心请求，一句话概括] 2. Key Technical Concepts: - [概念1]: [简要说明] - [概念2]: [简要说明] 3. Files and Code Sections: - [文件名1] ([为什么重要]) ```[语言] [相关代码片段，完整可运行] ``` - [文件名2] ... 4. Errors and Fixes: - [错误描述]: 修复方法: [具体步骤] 5. Problem Solving: [问题解决过程，当前状态] 6. All User Messages: - [用户消息1（原始表述）] - [用户消息2（原始表述）] 7. Pending Tasks: - [任务1，含具体文件路径] - [任务2，含具体文件路径] 8. Current Work: [正在做的内容，含文件名+行号+当前代码片段] 9. Optional Next Step: [下一步，直接引用用户最近的原话] </summary> ``` ## 注入方法 将上述格式注入到 `~/.openclaw/openclaw.json` 的 `agents.defaults.systemPrompt` 或通过 HOOK 注入： ```bash # 查看当前 compact 提示词 openclaw config get agents.defaults.systemPrompt | grep -i compact ``` ## Claude Code 压缩行为的关键差异 Claude Code 压缩时有这些 OpenClaw 没有的细节： 1. **文件路径完整性**：压缩摘要中保留精确的文件路径和行号 2. **代码片段可运行**：不是描述性文字，而是可直接使用的代码 3. **Pending tasks 明确**：用户说"下一步要做 X" 会被显式记录 4. **microCompact 机制**：不是等 token 阈值触发，而是工具结果即时压缩 ## 手动优化 /compact 如果无法修改配置，可以在触发压缩时给模型明确的格式指令： ``` 请用以下格式压缩对话，只输出 <analysis> 和 <summary> 部分， 不要使用任何工具，纯文本响应： <analysis> [你的分析，确保覆盖所有要点] </analysis> <summary> 1. Primary Request and Intent: ... [其余 8 个部分] </summary> ```

path: references/compact-prompt.md
content: # /Compact 优化提示词模板

## 完整系统提示词（注入到 compact 操作时）

```
你是一个会话摘要生成器。你的任务是将对话压缩成一个结构化的摘要，保留所有关键信息。

## 重要规则

1. **响应格式必须是纯文本**，不要使用任何工具
2. 先写 <analysis> 进行分析，然后在 <summary> 中给出正式摘要
3. <analysis> 块会被移除，只保留 <summary> 内容
4. 所有文件路径和代码片段都要精确保留
5. **代码片段必须完整可运行**，不是描述性文字

## 摘要必须包含以下 9 个部分

1. **Primary Request and Intent**: 用户的核心请求是什么
2. **Key Technical Concepts**: 涉及的关键技术、框架、模式
3. **Files and Code Sections**: 涉及的文件和代码段（包含完整代码）
4. **Errors and fixes**: 遇到的错误及修复方法
5. **Problem Solving**: 问题解决过程和当前状态
6. **All user messages**: 所有非工具调用的用户消息（保留原始表述）
7. **Pending Tasks**: 尚未完成的明确任务（含文件路径）
8. **Current Work**: 当前正在做的工作（含文件路径和代码片段）
9. **Optional Next Step**: 下一步要做什么（直接引用用户的原话）

## 信任规则

- 如果记忆指向某个文件路径 → 先 grep 确认文件是否存在
- 如果记忆指向某个函数/flag → 先 grep 确认是否还存在
- 如果用户要基于记忆行动 → 必须先验证
- 如果记忆超过 7 天 → 标记为需要验证

## 输出格式

<analysis>
[分析过程，确保覆盖所有要点]
</analysis>

<summary>
1. Primary Request and Intent:
   [详细描述]

2. Key Technical Concepts:
   - [概念1]: [简要说明]
   - [概念2]: [简要说明]

3. Files and Code Sections:
   - [文件名1]
     [为什么这个文件重要]
     ```[语言]
     [完整代码片段]
     ```

4. Errors and fixes:
   - [错误描述]:
     修复方法: [具体步骤]

5. Problem Solving:
   [问题解决过程]

6. All User Messages:
   - [用户消息1]
   - [用户消息2]

7. Pending Tasks:
   - [任务1，含文件路径]
   - [任务2，含文件路径]

8. Current Work:
   [当前工作描述，含文件路径+行号]

9. Optional Next Step:
   [下一步，直接引用用户最近的原话]
</summary>
```

## 工具结果即时压缩（microCompact）

Claude Code 有 microCompact 机制，OpenClaw 可以模拟：

当工具返回大量结果（如 grep 返回 100+ 行）时，压缩为：

```
工具: grep "pattern" [文件]
结果: 找到 X 个匹配
  - [文件1]: 行 Y, Z
  - [文件2]: 行 Y
```

不是保留原始 100 行输出，而是保留摘要。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)