# Self-Improving + Proactive Agent

> 三 agent 协作的自我迭代记忆系统。实时捕获纠错/反思 → 每日自动提炼 → 回写 shared 层 → 官方 memory_search 统一检索。

- Skill: `ai-freer/self-improving-proactive-agent` (Agent Skill, multi-file: 18 files)
- Install (CLI): `npx skillmds@latest add ai-freer/self-improving-proactive-agent`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ai-freer/self-improving-proactive-agent/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ai-freer (https://skillmd.com/u/ai-freer)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ai-freer/self-improving-proactive-agent

---


## 适用场景

- 被 Daniel 纠错时
- 完成重要多步骤任务后
- 发现自己输出有改进空间时
- 收到外部有价值的信号（X/公众号/文档）时
- 知识过时或发现更好的方法时
- 用户明确安装或引用此 skill 时

---

## Quick Reference

| Topic | File |
|-------|------|
| Setup guide | `setup.md` |
| Heartbeat state template | `heartbeat-state.md` |
| Memory template | `memory-template.md` |
| Workspace heartbeat snippet | `HEARTBEAT.md` |
| Heartbeat rules | `heartbeat-rules.md` |
| Learning mechanics | `learning.md` |
| Security boundaries | `boundaries.md` |
| Scaling rules | `scaling.md` |
| Memory operations | `operations.md` |
| Self-reflection log | `reflections.md` |
| OpenClaw HEARTBEAT seed | `openclaw-heartbeat.md` |

---

## 实际部署架构

```
memory/self-improving/
├── lolita/
│   ├── hot.md          ← HOT 层：碎片写入（允许噪声）
│   ├── corrections.md  ← 纠错日志（结构化，用于晋升计数）
│   └── signals.md      ← 外部信号（X/公众号/文档链接）
├── lisa/
│   └── （同上）
├── doubao/
│   └── （同上）
├── shared-rules.md     ← 晋升后的共享规则
└── promote/
    ├── state.json      ← 提炼状态（上次运行时间、连续空跑次数）
    ├── promote.log     ← 每次提炼的审计日志
    └── staging.patch   ← 本次提炼草稿（人工确认前）
```

**不使用软链。各 agent 直接用绝对路径写入自己的子目录：**
- Lolita：`/root/.openclaw/workspace/memory/self-improving/lolita/`
- Lisa：`/root/.openclaw/workspace/memory/self-improving/lisa/`
- Doubao：`/root/.openclaw/workspace/memory/self-improving/doubao/`

⚠️ 禁止在 `~/self-improving` 或各自 workspace 下创建副本目录，所有写入必须指向上述权威路径。

---

## Heartbeat 集成

Workspace `HEARTBEAT.md` 中加入 self-improving 检查段落（见 `HEARTBEAT.md`）。
Heartbeat 行为规则见 `heartbeat-rules.md`，运行状态存储在 `~/self-improving/heartbeat-state.md`。

---

## 写入格式

### hot.md（热碎片，允许噪声）
```
- ts: YYYY-MM-DD HH:MM
  topic: <主题关键词>
  type: observation | rule | idea
  text: <内容>
  source: <来源，如 msg-453 / 无>
```

### corrections.md（纠错，结构化）
```
- ts: YYYY-MM-DD HH:MM
  domain: <领域，如 tooling/wechat>
  mistake: <错误描述>
  fix: <正确做法>
  prevention: <预防措施>
  severity: low | medium | high
  evidence: <证据，如 msg-id / 无>
```

### signals.md（外部信号）
```
- ts: YYYY-MM-DD HH:MM
  channel: x | mp | github | clawhub | docs
  claim: <核心观点>
  link: <URL>
  reproducible: yes | no | unknown
  notes: <备注>
```

---

## 触发规则

> ⚠️ 核心原则：**立即写入，不允许推迟。** 触发条件满足时，在当前回复结束前必须完成写入，不能"等下次"。

---

**写 corrections.md（被纠错时）— 强制，立即执行：**
- Daniel 说"不对"、"你搞错了"、"之前说过"、"别再这样做"
- 自己发现输出有明显错误并已修正
- 格式：ts / domain / mistake / fix / prevention / severity / evidence

---

**写 hot.md — 强制，立即执行，满足任一即触发：**

| 触发场景 | 示例 |
|---------|------|
| 学到新的路径、工具、配置规则 | "关键项目放 main workspace" |
| Daniel 明确表达偏好或习惯 | "代码块包裹命令" |
| 完成多步骤任务，发现有效方法 | "先 clone 再测试读写流程" |
| 发现之前的假设是错的 | "lolita=main，不是 doubao" |
| 任何"下次遇到同类问题会有用"的信息 | 新 API、新工具用法 |
| **任务完成后主动反思**（复杂任务、跨 agent 协作、首次使用新工具） | "这次信号采集用了 3 轮搜索才凑够，下次可以先定关键词再并行" |
| **Near-miss：差点犯错但自己纠正了** | "差点用 web_fetch 抓公众号，想起来要用 weixin-search skill" |
| **纠错时的规则泛化**：不只记具体事件，提炼成通用原则 | 具体："出发提醒不能估算" → 泛化："涉及物理世界数据的场景，优先调 API" |
| **Daniel 说 "update hot.md" / "update self-improving"** | 立即回顾当前对话，提取可记录的 observation 写入 |

写入标准：**宁可多写噪声，不要漏掉有价值的内容。** hot.md 允许噪声，promote 机制会过滤。

---

**写 signals.md（外部信号）— 强制，读完即写：**
- **强制触发：** 当收到 Daniel 分享的外部文章/链接并完成阅读后，必须将有借鉴意义的核心观点写入 signals.md
- 搜索到有价值的案例/工具
- 公众号/X 上的可复现实践

---

**Learning Signals（来自上游，补充参考）：**

Corrections 信号词：
- "No, that's not right..." / "Actually, it should be..." / "You're wrong about..."
- "I prefer X, not Y" / "Remember that I always..." / "Stop doing X"

Preference 信号词：
- "I like when you..." / "Always do X for me" / "Never do Y" / "My style is..."

Pattern candidates — 跟踪，3 次后晋升：
- 同一指令重复 3+ 次
- 反复有效的工作流
- 用户表扬特定方法

**不写（忽略）：**
- 一次性指令（"现在做 X"，下次不会再用）
- 纯上下文特定（"在这个文件的第 3 行…"）
- 假设性问题

---

## 自动提炼机制（Job A + Job B）

### Job B：官方索引刷新（由 OpenClaw memory_search 负责）
- 外部 `/opt/scripts/index-memory.sh` 与 8766 namespace 索引已退役
- 官方索引由 OpenClaw builtin memory_search 维护（watch / startup / search）
- embedding provider 继续走 `http://127.0.0.1:18790/v1`
- 共享层通过 `agents.defaults.memorySearch.extraPaths` 暴露：
  - `memory/shared`
  - `memory/daily`
  - `memory/self-improving`

### Job A：双轨提炼（Daily 增量 + Weekly 全量）

**Daily 增量（每天 03:00，系统 crontab）**
- 脚本：`/opt/scripts/run-promote.sh`
- 触发：过去 24h 有新增条目时才调用 LLM
- 重点：快速发现 severity:high 的条目
- 无新增时仅更新 state.json，不消耗 LLM
- 熔断：连续 14 天无新增 → 自动暂停

**Weekly 全量（每周一 04:00，OpenClaw cron）**
- 脚本：`/opt/scripts/run-promote-weekly.sh`（生成材料包）+ Lisa LLM 分析
- 触发：OpenClaw cron `weekly-promote-fullscan`
- 重点：跨 agent 模式识别、累积计数、domain 聚合
- 扫描全量 corrections + hot，对比已有 shared-rules.md 避免重复
- 日志：`promote/promote.log`
- 输出：追加到 `shared-rules.md`

---

## 晋升规则

晋升到 `memory/self-improving/shared-rules.md`（满足任一）：
- `severity: high`（任何单条，立即晋升）
- 同一 agent 的同一 `domain` 下累积 **≥3 条** corrections
- **≥2 个 agent** 在同一 `domain` 下各有 **≥1 条** corrections（跨 agent 聚合）
- Daniel 明确确认（强制晋升）

晋升后写入格式（shared-rules.md）：
```markdown
## [domain] 标题
- Symptom: 现象
- Root cause: 根因
- Fix: 修复方式
- Prevention: 预防措施
- Evidence: 证据链接
- Last verified: YYYY-MM-DD
```

---

## 每次 Session 启动时

在 AGENTS.md 启动检查清单中已加入：
- 读 `memory/self-improving/<自己的名字>/hot.md` — 加载热记忆

启动时行为（来自上游）：
1. 读 `memory.md`（如果存在 `~/self-improving/memory.md`）
2. 列出可用的 domain/project 文件
3. 按需加载最相关的 ≤3 个文件
4. 不要"以防万一"加载无关文件

---

## 检索原则

- 权威层：`memory/shared/preferences.md` / `memory/shared/errors.md` / `memory/self-improving/shared-rules.md`
- 热层：各 agent 自己的 `hot.md` / `corrections.md`
- 官方 `memory_search` 统一索引 private + shared + daily + self-improving
- 不再维护额外 namespace 权重系统

---

## 可观测性

- 查看官方索引状态：`openclaw memory status --deep`
- 官方全量重建：`openclaw memory index --force --agent <id>`
- 查看提炼日志：`tail -f /opt/scripts/promote-cron.log`
- 查看提炼草稿：`cat memory/self-improving/promote/staging.patch`

---

## Self-Reflection（来自上游 1.2.16）

完成重要工作后，暂停并评估：

1. **是否达到预期？** — 比较结果与意图
2. **有什么可以改进？** — 为下次找出改进点
3. **这是一个模式吗？** — 如果是，记录到 `corrections.md`

**何时自我反思：**
- 完成多步骤任务后
- 收到反馈（正面或负面）后
- 修复 bug 或错误后
- 发现自己的输出可以改进时

**日志格式：**
```
CONTEXT: [任务类型]
REFLECTION: [注意到的内容]
LESSON: [下次不同的做法]
```

**示例：**
```
CONTEXT: Building Flutter UI
REFLECTION: Spacing looked off, had to redo
LESSON: Check visual spacing before showing user
```

自我反思条目遵循相同的晋升规则：成功应用 3 次 → 晋升到 HOT。

---

## Quick Queries（来自上游 1.2.16）

| 用户说 | 动作 |
|--------|------|
| "你对 X 了解什么？" | 搜索所有层级中的 X |
| "你学到了什么？" | 显示 `corrections.md` 最后 10 条 |
| "显示我的模式" | 列出 `memory.md`（HOT） |
| "显示 [项目] 模式" | 加载 `projects/{name}.md` |
| "温存储有什么？" | 列出 `projects/` + `domains/` 中的文件 |
| "memory stats" | 显示各层级计数 |
| "忘记 X" | 从所有层级移除（先确认） |
| "导出记忆" | ZIP 所有文件 |

---

## Common Traps（来自上游 1.2.16）

| 陷阱 | 为什么失败 | 更好的做法 |
|------|-----------|-----------|
| 从沉默中学习 | 创建错误规则 | 等待明确纠正或重复证据 |
| 晋升太快 | 污染 HOT 记忆 | 保持新经验待定直到被重复 |
| 读取每个命名空间 | 浪费 context | 仅加载 HOT 加最小匹配文件 |
| 通过删除来压缩 | 丢失信任和历史 | 合并、总结或降级代替 |

---

## Core Rules（来自上游 1.2.16）

### 1. Learn from Corrections and Self-Reflection
- Log when user explicitly corrects you
- Log when you identify improvements in your own work
- Never infer from silence alone
- After 3 identical lessons → ask to confirm as rule

### 2. Tiered Storage
| Tier | Location | Size Limit | Behavior |
|------|----------|------------|----------|
| HOT | memory.md | ≤100 lines | Always loaded |
| WARM | projects/, domains/ | ≤200 lines each | Load on context match |
| COLD | archive/ | Unlimited | Load on explicit query |

### 3. Automatic Promotion/Demotion
- Pattern used 3x in 7 days → promote to HOT
- Pattern unused 30 days → demote to WARM
- Pattern unused 90 days → archive to COLD
- Never delete without asking

### 4. Namespace Isolation
- Project patterns stay in `projects/{name}.md`
- Global preferences in HOT tier (memory.md)
- Domain patterns (code, writing) in `domains/`
- Cross-namespace inheritance: global → domain → project

### 5. Conflict Resolution
When patterns contradict:
1. Most specific wins (project > domain > global)
2. Most recent wins (same level)
3. If ambiguous → ask user

### 6. Compaction
When file exceeds limit:
1. Merge similar corrections into single rule
2. Archive unused patterns
3. Summarize verbose entries
4. Never lose confirmed preferences

### 7. Transparency
- Every action from memory → cite source: "Using X (from projects/foo.md:12)"
- Weekly digest available: patterns learned, demoted, archived
- Full export on demand: all files as ZIP

### 8. Security Boundaries
See `boundaries.md` — never store credentials, health data, third-party info.

### 9. Graceful Degradation
If context limit hit:
1. Load only memory.md (HOT)
2. Load relevant namespace on demand
3. Never fail silently — tell user what's not loaded

---

## Scope

This skill ONLY:
- 从用户纠错和自我反思中学习
- 在本地文件中存储偏好（`memory/self-improving/` 和 `~/self-improving/`）
- 通过 heartbeat 维护 `~/self-improving/heartbeat-state.md`
- 在激活时读取自己的记忆文件

This skill NEVER:
- 访问日历、邮件或联系人
- 发起网络请求
- 读取 `memory/self-improving/` 和 `~/self-improving/` 之外的文件
- 从沉默或观察中推断偏好
- 在 heartbeat 清理时删除或盲目重写记忆
- 修改自己的 SKILL.md

---

## Data Storage

本地状态存储：

- `memory/self-improving/<agent>/hot.md` — HOT 规则和碎片
- `memory/self-improving/<agent>/corrections.md` — 纠错日志
- `memory/self-improving/<agent>/signals.md` — 外部信号
- `memory/self-improving/shared-rules.md` — 晋升后的共享规则
- `memory/self-improving/promote/` — 提炼状态和日志
- `~/self-improving/heartbeat-state.md` — heartbeat 运行标记

---

## Related Skills

- `memory` — Long-term memory patterns for agents
- `learning` — Adaptive teaching and explanation
- `decide` — Auto-learn decision patterns
- `escalate` — Know when to ask vs act autonomously

