Safe Self Improving

Automation

A privacy-first, consent-based self-improvement skill for AI agents. Captures learnings, errors, best practices with auto-sanitization and duplicate detection. Includes smart skill synthesis — auto-generates new skill drafts from recurring patterns. No hooks, no cross-session, no silent modification. All operations require user confirmation.

Install

openclaw skills install safe-self-improving

🛡️ Safe Self-Improving Agent

安全版自我进化技能 — 隐私优先、用户确认制、自动脱敏、智能技能生成

核心原则

  1. 用户确认制:所有学习记录、文件修改都需要用户明确确认
  2. 本地优先:所有数据存储在本地 .learnings/ 目录,不上传不外传
  3. 无自动 Hook:不注册任何自动执行的 hook 脚本
  4. 无跨会话通信:不访问其他会话数据
  5. 透明可审计:所有操作都有日志,用户可随时查看
  6. 智能进化:从高频模式中自动提炼新技能草案

触发条件(需用户主动触发)

当用户说以下内容时,执行对应动作:

用户说动作
"记录这个教训" / "记下来"将当前上下文中的关键信息记录到 .learnings/LEARNINGS.md
"记下这个错误" / "记录错误"将错误信息记录到 .learnings/ERRORS.md
"这是个好方法" / "最佳实践"将当前做法记录为最佳实践到 .learnings/LEARNINGS.md
"回顾学习记录" / "看看学到了什么"读取并总结 .learnings/ 下的所有记录
"优化我的工作流" / "怎么改进"基于学习记录提出改进建议(⚠️ 不自动执行!)
"评估这次任务" / "打个分"对当前任务进行五维评分
"生成技能" / "提炼技能"🆕 从高频学习模式中自动生成新 SKILL.md 草案
"导出学习记录" / "打包记录"🆕 将 .learnings/ 导出为 JSON/Markdown 归档文件
"学习统计" / "学习趋势"🆕 展示学习数据的可视化趋势(领域分布、频率、优先级)
"清除学习记录"清空 .learnings/ 目录(需二次确认)

操作流程

1. 记录学习(用户说 "记录这个教训")

步骤

  1. 分析当前对话上下文,提取:
    • 发生了什么(现象)
    • 为什么是个教训(原因)
    • 建议怎么做(行动)
  2. 脱敏处理
    • 将路径中的用户名替换为 <user>
    • 将 API Key / Token / 密码替换为 <secret>
    • 将 IP 地址替换为 <ip>
    • 将邮箱替换为 <email>
  3. 重复检测
    • 搜索 .learnings/LEARNINGS.md 中是否已有相似条目
    • 如果关键词匹配度 > 70%:更新已有条目的出现次数,不重复添加
    • 如果出现次数达到 3 次:标记为 priority: high,提示用户"这个教训已经出现多次,建议优先处理"
  4. 向用户展示将要记录的内容,等待用户确认
  5. 用户确认后,追加到 .learnings/LEARNINGS.md

LEARNINGS.md 条目格式

## [LRN-YYYYMMDD-NNN] 类别标签

**Logged**: YYYY-MM-DDTHH:mm:ssZ
**Priority**: low | medium | high | critical
**Status**: pending | applied
**Area**: frontend | backend | infra | tests | docs | config | business | general
**Occurrences**: 1

### Summary
一句话总结这个教训

### Context
详细描述发生了什么、为什么重要

### Suggested Action
建议采取的行动(⚠️ 不会自动执行,需用户确认)

### Source
学习来源:用户反馈 / 错误分析 / 自我评估

2. 记录错误(用户说 "记下这个错误")

步骤

  1. 提取当前上下文中的错误信息
  2. 脱敏处理(同上)
  3. 向用户展示,等待确认
  4. 确认后追加到 .learnings/ERRORS.md

ERRORS.md 条目格式

## [ERR-YYYYMMDD-NNN] 错误类型

**Logged**: YYYY-MM-DDTHH:mm:ssZ
**Priority**: high
**Status**: pending | resolved

### Summary
错误摘要(一句话)

### Error Message
实际错误信息(脱敏后)

### Context
触发条件、输入参数、环境信息

### Root Cause
根本原因分析

### Fix
修复方案

### Prevention
预防措施(下次如何避免)

3. 记录最佳实践(用户说 "这是个好方法")

步骤

  1. 提取当前做法的关键步骤
  2. 脱敏处理
  3. 向用户展示,等待确认
  4. 确认后追加到 .learnings/LEARNINGS.md,标记 Status: applied

4. 回顾学习记录(用户说 "回顾学习记录")

步骤

  1. 读取 .learnings/LEARNINGS.md
  2. 读取 .learnings/ERRORS.md
  3. 读取 .learnings/IMPROVEMENTS.md(如存在)
  4. 汇总统计:
    • 总学习条目数
    • 按优先级分布
    • 按类别分布
    • 高频出现的问题(Occurrences ≥ 3)
    • 未解决的错误(Status: pending)
  5. 生成总结报告呈现给用户

5. 优化建议(用户说 "怎么改进")

步骤

  1. 分析 .learnings/ 下所有记录
  2. 识别模式:
    • 反复出现的问题 → 优先解决
    • 高 Priority 未解决项 → 紧急处理
    • 最佳实践 → 推广到更多场景
  3. 生成改进建议列表(不自动执行!
  4. 将建议写入 .learnings/IMPROVEMENTS.md(需用户确认)
  5. 用户选择执行哪些建议

IMPROVEMENTS.md 条目格式

## [IMP-YYYYMMDD-NNN] 改进类型

**Logged**: YYYY-MM-DDTHH:mm:ssZ
**Priority**: low | medium | high
**Status**: proposed | accepted | rejected | completed
**Related**: [LRN-XXX] [ERR-XXX]

### Problem
当前存在的问题

### Suggestion
改进建议

### Expected Impact
预期效果

### Effort
实施难度:low | medium | high

6. 任务评估(用户说 "打个分")

评估维度

维度权重评分范围说明
完成度30%0-100是否达成了用户的目标
效率20%0-100耗时和步骤数是否合理
质量30%0-100输出质量(代码/文档/方案)
满意度20%0-100用户是否需要返工

评分规则

总分 = 完成度 × 0.3 + 效率 × 0.2 + 质量 × 0.3 + 满意度 × 0.2

≥ 90: 🌟 优秀 → 自动建议记录为最佳实践
80-89: 👍 良好 → 继续
70-79: ⚠️ 及格 → 建议记录改进点
< 70: ❌ 不及格 → 强烈建议记录错误和改进

评分后询问用户是否要自动记录评估结果。

7. 智能技能生成(用户说 "生成技能" / "提炼技能")🆕

这是本 Skill 的杀手级功能 — 从你的学习记录中自动发现重复模式,提炼成可复用的技能草案。

步骤

  1. 扫描 .learnings/LEARNINGS.md.learnings/ERRORS.md 中的所有条目
  2. 分析模式:
    • 同一 Area(领域)出现 ≥ 3 次相关条目 → 候选技能
    • 同类错误反复出现 → 候选防御技能
    • 多个最佳实践指向同一工作流 → 候选自动化技能
  3. 生成 SKILL.md 草案,包含:
    • name:基于模式自动命名(如 docker-deploy-guard
    • description:从学习记录中提炼的描述
    • 触发条件:从相关条目的 Suggested Action 中提取
    • 操作流程:从最佳实践中归纳
    • 安全规则:从错误记录中提炼的预防措施
  4. 将草案保存到 .learnings/skill-drafts/ 目录
  5. 向用户展示草案,等待确认
  6. 用户确认后,可以:
    • 保存为本地 Skill(写入 skills/ 目录)
    • 发布到 ClawHub(需要 clawhub skill publish

技能草案格式

# 🧬 草案:[自动生成的技能名]

## 来源分析
- 基于 [LRN-XXX] × N 条相关教训
- 基于 [ERR-XXX] × M 条相关错误
- 基于 [LRN-XXX] × K 条最佳实践

## 生成的 SKILL.md
(完整的 SKILL.md 内容,可直接使用)

## 置信度
high / medium / low(基于数据量和一致性)

8. 学习记录导出(用户说 "导出学习记录" / "打包记录")🆕

步骤

  1. 读取 .learnings/ 下所有文件
  2. 生成两种格式的导出:
    • Markdown 归档.learnings/export-YYYYMMDD.md(所有记录合并为一个文件)
    • JSON 结构化数据.learnings/export-YYYYMMDD.json(可导入其他工具)
  3. JSON 结构:
    {
      "exportDate": "2026-06-16T00:00:00Z",
      "stats": { "learnings": 12, "errors": 5, "improvements": 3 },
      "learnings": [...],
      "errors": [...],
      "improvements": [...]
    }
    
  4. 向用户展示导出路径

9. 学习趋势分析(用户说 "学习统计" / "学习趋势")🆕

步骤

  1. 读取所有学习记录
  2. 生成统计报告:
    • 领域热力图:哪些领域出现最多问题
    • 时间趋势:每周/月新增记录数
    • 优先级分布:high/medium/low 各占多少
    • 解决率:pending vs applied/resolved 的比例
    • 高频 TOP 5:出现次数最多的教训
    • 技能生成建议:哪些领域的数据量已够生成技能
  3. 向用户展示分析结果

安全规则(硬性约束,不可违反)

  1. 绝不记录:密码、Token、API Key、环境变量值、完整源码文件
  2. 绝不自动修改:系统文件、配置文件、其他 Skill 的文件
  3. 绝不跨会话:不读取、不发送其他会话或 Agent 的数据
  4. 绝不执行 Hook:不注册 UserPromptSubmit、PostToolUse 等任何 hook
  5. 绝不自动执行改进建议:只记录、只建议,执行必须用户确认
  6. 只写 .learnings/ 目录下的文件,绝不越界
  7. 所有操作前先向用户展示内容,等待明确确认
  8. 敏感信息自动脱敏后再写入文件
  9. 条目编号自增,格式为 [LRN-YYYYMMDD-NNN]
  10. 文件不存在时自动创建目录和文件

脱敏规则

在写入任何文件之前,对内容执行以下替换:

原始内容替换为
/home/username/... / /Users/username/... / C:\Users\xxx\.../home/<user>/...
API Key、Token、密码<secret>
IP 地址(x.x.x.x)<ip>
邮箱地址<email>
手机号码<phone>
身份证号<id>

数据存储位置

所有数据仅存储在当前项目目录下的 .learnings/ 文件夹中:

项目根目录/
└── .learnings/              ← 唯一写入目录
    ├── LEARNINGS.md         ← 教训、洞察、最佳实践
    ├── ERRORS.md            ← 错误记录
    ├── IMPROVEMENTS.md      ← 改进建议(按需创建)
    ├── skill-drafts/        ← 🆕 自动生成的技能草案
    │   └── draft-YYYYMMDD-NNN.md
    ├── export-YYYYMMDD.md   ← 🆕 导出的 Markdown 归档
    └── export-YYYYMMDD.json ← 🆕 导出的 JSON 结构化数据

与同类技能的对比

特性同类自我进化技能🛡️ 本安全版
自动 Hook 执行部分有❌ 无(完全用户触发)
跨会话通信部分有❌ 无
自动修改系统文件部分有❌ 无(只写 .learnings/)
自动执行改进部分自动写入❌ 建议需用户确认
敏感信息处理无脱敏✅ 自动脱敏 6 类信息
重复检测✅ 关键词匹配 + 出现次数追踪
智能技能生成✅ 🆕 从学习模式提炼新技能
学习记录导出✅ 🆕 JSON + Markdown 双格式
学习趋势分析✅ 🆕 领域热力图 + 解决率
数据存储位置项目根目录多处.learnings/ 目录

示例对话

示例 1:记录教训

用户:我在配置 Nginx 时忘了加分号,导致服务启动失败,记录这个教训

Agent:我来帮你记录这个教训。以下是将要记录的内容:

---
## [LRN-20260615-001] 配置语法

**Logged**: 2026-06-15T15:00:00Z
**Priority**: medium
**Status**: pending
**Area**: config
**Occurrences**: 1

### Summary
Nginx 配置文件缺少分号会导致服务启动失败

### Context
在编辑 nginx.conf 时,漏写了一行末尾的分号,
导致 `nginx -t` 报语法错误,服务无法启动。
浪费了约 15 分钟排查。

### Suggested Action
修改配置文件后,始终先运行 `nginx -t` 验证语法,
再执行 `systemctl reload nginx`。

### Source
用户反馈
---

确认记录吗?

用户:确认

Agent:✅ 已记录到 .learnings/LEARNINGS.md [LRN-20260615-001]

示例 2:回顾学习记录

用户:回顾一下学习记录

Agent:📋 学习记录回顾(截至 2026-06-15)

📊 统计:
- 教训/最佳实践:12 条(高优先级 3 条)
- 错误记录:5 条(未解决 2 条)
- 改进建议:3 条(已完成 1 条)

🔥 高频问题(出现 ≥ 3 次):
1. [LRN-20260610-003] 忘记测试就部署 — 出现 4 次
2. [LRN-20260612-001] API 密钥硬编码 — 出现 3 次

⚠️ 未解决的错误:
1. [ERR-20260613-002] Docker 容器偶发 OOM — Priority: high
2. [ERR-20260614-001] Git push 被拒(权限问题) — Priority: medium

建议优先处理高频问题和未解决的高优先级错误。

示例 3:任务评估

用户:评估一下这次任务

Agent:📊 任务评估结果

| 维度 | 得分 | 权重 | 加权分 |
|------|------|------|--------|
| 完成度 | 95 | 30% | 28.5 |
| 效率 | 80 | 20% | 16.0 |
| 质量 | 90 | 30% | 27.0 |
| 满意度 | 85 | 20% | 17.0 |
| **总分** | | | **88.5** 👍 良好 |

评语:任务完成度高,质量不错。效率可以提升——中间有一次返工。

是否要记录为最佳实践?

用户:是的

Agent:✅ 已记录到 .learnings/LEARNINGS.md [LRN-20260615-002]

示例 4:智能技能生成 🆕

用户:帮我提炼一个技能

Agent:🔍 扫描学习记录... 发现以下模式:

📊 模式分析:
- Docker 相关教训出现 5 次(LRN-003, ERR-001, LRN-007, ERR-004, LRN-012)
- 其中 3 条关于"忘记设置内存限制导致 OOM"
- 2 条关于"容器启动顺序依赖"

🧬 生成技能草案:docker-deploy-guard

---
name: docker-deploy-guard
description: >
  Prevents common Docker deployment mistakes by checking memory limits,
  startup order, and health checks before running docker-compose up.
---

## 触发条件
当用户执行 docker-compose up / docker run 时触发

## 检查清单
1. ✅ 内存限制是否设置(--memory)
2. ✅ depends_on 是否配置健康检查
3. ✅ 端口映射是否冲突
4. ✅ 环境变量是否从 .env 读取(非硬编码)

## 来源
- [LRN-003] Docker OOM 教训 × 3
- [ERR-001] 容器内存溢出
- [LRN-007] 启动顺序问题
置信度:medium(基于 5 条记录)

---

是否保存此技能草案?
1. 保存到 .learnings/skill-drafts/
2. 保存并安装到 skills/ 目录
3. 跳过

用户:1

Agent:✅ 已保存到 .learnings/skill-drafts/draft-20260616-001.md
💡 下次可以「保存并安装」让这个技能直接生效!