Skip to main content

self-improving-agent: Cross-Project

Enable AI to learn continuously from corrections and errors across projects using a two-level memory hierarchy.

Source facts

Repository
benson-xie/workbuddy-self-improving-agent
Last source activity
May 18, 2026 at 14:42
Detected SKILL.md language
Chinese
Stars
3
Forks
0

Uses

Use for cross-project continuous agent learning, automated error logging, and experience promotion.

Prerequisites

Python, workbuddy database, and a configured workspace directory.

How to use

Copy the skill folder, create memory directories, initialize templates, and configure the SessionEnd hook.

Limitations

Requires manual user confirmation for memory promotion steps.

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
self-improving-agent
description
跨项目自我进化技能 - 自动记录纠正、错误、最佳实践,支持两级记忆晋升
allowed-tools
null
# 自改进 Agent 技能 ## 概述 本技能让 AI 从错误和反馈中持续学习,经验可在**项目间贯通**。采用**用户级(跨项目)+ 项目级(当前工作区)**双层记忆架构。 ### 核心特性 - **智能分类**:晋升时根据内容自动分类到5个核心文件 - 性格、信念、行为边界 → `SOUL.md` - 身份、角色、使命 → `IDENTITY.md` - 主人偏好、互动规则 → `USER.md` - 工作流、操作规范、权限 → `AGENTS.md` - 工具环境、技术经验、项目背景 → `memory.md` - **安全备份**:写入目标文件前自动备份到 `F:\小师妹(龙虾)\` - **两级晋升**:项目级→用户级→全局,逐级验证 ### 工作空间自动发现 通过 `workbuddy.db` 数据库自动获取所有工作空间,无需手动维护注册表: ```python import sqlite3 db = sqlite3.connect(r'C:\Users\May\.workbuddy\workbuddy.db') workspaces = db.execute('SELECT path, last_opened_at FROM workspaces ORDER BY last_opened_at DESC').fetchall() ``` **数据来源**:`~/.workbuddy/workbuddy.db` 的 `workspaces` 表 - `path`:工作空间绝对路径 - `last_opened_at`:最后活跃时间(Unix 毫秒时间戳) **使用场景**: - 审查时自动扫描所有工作空间的项目级记录 - 跨工作空间汇总相似经验 - 识别哪些工作空间缺少 self-improve 目录 --- ## 一、操作模式配置 在 `SOUL.md` 中定义操作模式: ```yaml ## 自改进模式 模式: Active 选项: - Passive: 仅记录用户主动纠正或明确反馈 - Active: 同一模式出现 3 次后主动询问用户是否晋升(默认) - Strict: 每条记录都需要用户确认后才写入 ``` ### 环境变量配置 可通过环境变量自定义路径: ```bash # 备份目录(默认:F:/小师妹(龙虾)) SELF_IMPROVE_BACKUP_DIR="F:/小师妹(龙虾)" # 目标文件路径 SOUL_FILE="C:/Users/May/.workbuddy/SOUL.md" AGENTS_FILE="C:/Users/May/.workbuddy/AGENTS.md" ``` --- ## 二、记忆目录结构 ### 用户级(跨项目 · 全局有效) ``` C:\Users\May\.workbuddy\self-improve\ ├── LEARNINGS.md ← 通用学习记录 ├── ERRORS.md ← 通用错误记录 └── FEATURE_REQUESTS.md ← 功能请求 ``` ### 项目级(当前工作区 · 项目专属) ``` .workbuddy/self-improve\ ├── LEARNINGS.md ← 项目专属学习记录 ├── ERRORS.md ← 项目专属错误记录 └── FEATURE_REQUESTS.md ← 功能请求 .workbuddy/memory\ ├── MEMORY.md ← 长期记忆(提炼的核心经验) ├── 2026-05-13.md ← 日期记忆(日常工作记录) ├── 2026-05-12.md └── ... ``` ### 审查扫描范围 `review.py` 会扫描以下内容: | 文件类型 | 位置 | 统计方式 | |---------|------|----------| | LEARNINGS.md | `.workbuddy/self-improve/` | 统计 `- **ID**:` 条目 | | ERRORS.md | `.workbuddy/self-improve/` | 统计 `- **ID**:` 条目 | | FEATURE_REQUESTS.md | `.workbuddy/self-improve/` | 统计 `- **ID**:` 条目 | | MEMORY.md | `.workbuddy/memory/` | 统计 `##` 章节 | | YYYY-MM-DD.md | `.workbuddy/memory/` | 统计 `##` 章节(最近7天) | ### 检索优先级 1. 先查**用户级** `C:\Users\May\.workbuddy\self-improve\`(跨项目通用经验) 2. 再查**项目级** `.workbuddy/self-improve\`(当前项目特定经验) 3. 最后查 `MEMORY.md` 和 `memory.md`(长期记忆) ### 自动初始化 运行初始化脚本可自动为所有工作空间创建 `self-improve` 目录和标准模板: ```bash # 预览模式(不实际创建) python init_workspaces.py --dry-run # 正常初始化(只补充缺失的文件) python init_workspaces.py # 强制重新初始化(覆盖现有文件) python init_workspaces.py --force ``` **模板文件**: - `LEARNINGS.md` — 学习记录模板 - `ERRORS.md` — 错误记录模板 - `FEATURE_REQUESTS.md` — 功能请求模板 **注意**:模板文件使用 HTML 注释包含格式示例,审查脚本会自动排除注释内容,只统计实际记录。 --- ## 三、记录格式 每条记录统一格式: ```markdown - **ID**: LRN-YYYYMMDD-NNN **类型**: correction | insight | knowledge_gap | best_practice **内容**: [具体描述] **来源**: [任务/场景描述] **日期**: YYYY-MM-DD **优先级**: low | medium | high | critical **状态**: pending | in_progress | resolved | wont_fix | promoted **标签**: [标签1, 标签2] **关联**: [See Also 链接,可选] ``` > **ID 规则**: 类型前缀(LRN/ERR/FRQ)+ 日期 + 三位序号,如 `LRN-20260508-001` --- ## 四、自动检测与记录 ### 4.1 纠正检测 当用户说出以下关键词时,**自动记录到项目级 LEARNINGS.md**: | 关键词 | 记录类型 | |--------|---------| | "不对"、"不是"、"错了"、"实际上应该是…" | correction | | "我说的是…"、"更正一下"、"应该是" | correction | | "正确的做法是"、"你搞错了" | correction | | "不是这样"、"理解错了"、"方向不对" | correction | **记录内容**:错误的理解 vs 正确的做法,以及正确的参考来源 ### 4.2 错误检测 当遇到以下情况时,**自动记录到项目级 ERRORS.md**: | 场景 | 记录内容 | |------|---------| | Bash/PowerShell 命令退出码非 0 | 命令、错误信息、修复方案 | | Python 脚本抛出异常 | 异常堆栈、根因、修复方案 | | MCP 工具调用失败 | 工具名、错误信息、替代方案 | | API 返回错误 | 接口、错误码、处理方法 | ### 4.3 功能请求检测 当用户说出以下话时,**自动记录到项目级 FEATURE_REQUESTS.md**: - "你能不能…"、"我希望你能…"、"有没有办法…" - "加个功能"、"能加一个…吗"、"要是能…就好了" ### 4.4 最佳实践检测 在以下场景主动记录到 LEARNINGS.md: - 发现更高效的方案/工具/流程 - 用户表示"这样做很好"、"对,就这样" - 发现常用的固定模式或模板 - 用户告知某个特定规则或偏好 ### 4.5 知识过时检测 当用户说出以下话时,记录到 LEARNINGS.md(类型:knowledge_gap): - "过时了"、"已经不适用了"、"现在改用…" - "旧版是…新版是…" --- ## 五、执行前检查 在执行**重要或高风险操作前**,必须: 1. **扫描用户级 ERRORS.md**:是否有同类错误的记录?若有,输出警告并在操作中避开 2. **扫描项目级 ERRORS.md**:是否有本项目特有的错误记录? 3. **扫描用户级 LEARNINGS.md**:是否有最佳实践或偏好的提示? 4. **将相关经验**以 "💡 提示:根据过往经验…" 的格式提醒用户 **重要操作**包括:文件删除/批量修改、程序安装/卸载、系统配置变更、数据迁移等。 --- ## 六、自我反思 ### 6.1 反思时机 每次完成以下任务**最后一个步骤时**,自动执行三步反思: - 多步骤任务完成后(生成报告、批量处理文件、数据分析等) - 用户给予纠正反馈后 - 修复错误后 - 发现可改进的常规做法时 ### 6.2 反思流程 ``` 步骤 1: 评估 → 本次任务的结果是否符合用户预期? → 用户有没有给出明确反馈(认可还是纠正)? → 有没有出现意外错误或异常? 步骤 2: 识别改进点 → 如果有问题:下次如何避免? → 如果顺利:有没有可以固化为最佳实践的做法? → 有没有发现新的工具、方法或流程值得记录? 步骤 3: 判断模式 → 这个问题以前是否出现过?(检查 self-improve/ 目录) → 如果是重复出现,是否达到了晋升条件? → 如果不是新模式,只更新已有记录的"关联"字段 ``` ### 6.3 记录决策 | 反思结果 | 操作 | |---------|------| | 首次出现的问题 | 写入项目级对应日志文件 | | 重复出现的问题 | 更新现有记录的"关联"和"出现次数" | | 达到晋升条件 | 触发晋升流程,询问用户确认 | | 无价值内容 | 不记录 | --- ## 七、自动记录机制(SessionEnd Hook) ### 7.1 Hook 配置 在 `settings.json` 中配置 SessionEnd Hook,实现会话结束时自动记录经验: **用户级配置**(推荐):`~/.workbuddy/settings.json` ```json { "hooks": { "SessionEnd": [ { "matcher": "other", "hooks": [ { "type": "command", "command": "python C:/Users/May/.workbuddy/skills/self-improving-agent/scripts/session_end_hook.py", "timeout": 30 } ] } ] } } ``` **项目级配置**:`<workspace>/.workbuddy/settings.json` ```json { "hooks": { "SessionEnd": [ { "matcher": "other", "hooks": [ { "type": "command", "command": "python C:/Users/May/.workbuddy/skills/self-improving-agent/scripts/session_end_hook.py", "timeout": 30 } ] } ] } } ``` ### 7.2 Hook 工作原理 1. **触发时机**:会话结束时(切换新会话、删除会话、清空会话等) 2. **输入数据**:通过 stdin 接收 JSON(包含 session_id、transcript_path、cwd) 3. **处理逻辑**: - 解析对话记录,分离用户和AI的发言 - **只分析用户消息**,忽略AI回复 - 用正则表达式检测纠正、错误、最佳实践等模式 - **去重机制**:同一对话只记录一次 - **上下文清理**:移除代码块、行内代码、特殊字符 4. **输出结果**:通过 stdout 返回 JSON(包含 systemMessage) 5. **记录保存**:自动写入当前工作空间的 `.workbuddy/self-improve/` 目录 ### 7.3 检测模式 | 类型 | 检测关键词 | 记录文件 | 说明 | |------|-----------|----------|------| | correction | "不对"、"错了"、"应该是"、"你搞错了" | LEARNINGS.md | 只检测用户发言 | | error | "失败了"、"报错了"、"出错了"、"不行"、"不能用" | ERRORS.md | 只检测用户发言 | | best_practice | "这样做很好"、"对,就这样"、"不错"、"完美"、"可以"、"好的" | LEARNINGS.md | 只检测用户发言 | **优化特性**: - **去重**:使用 `seen_contents` 集合,避免重复记录 - **排除AI发言**:只分析用户消息,避免误检测AI的"搞定"等 - **上下文清理**:移除代码块、行内代码、特殊字符,保留有意义的内容 ### 7.4 调试与测试 ```bash # 手动测试 Hook 脚本 echo '{"session_id":"test123","transcript_path":"/path/to/transcript.txt","cwd":"/path/to/workspace"}' | python scripts/session_end_hook.py # 查看调试输出(stderr) python scripts/session_end_hook.py 2>&1 ``` ### 7.5 动态工作空间支持 Hook 脚本自动处理工作空间的增减变化: | 场景 | 处理方式 | |------|----------| | 新增工作空间 | 自动创建 `.workbuddy/self-improve/` 目录和模板文件 | | 删除工作空间 | review.py 扫描时自动跳过不存在的目录 | | 临时目录 | 同样会创建记录(不影响主流程) | **实现机制**: - `ensure_template()` 函数在首次写入时自动创建带头部的模板文件 - 目录和文件都是惰性创建,无需提前运行初始化脚本 ### 7.6 注意事项 - **超时设置**:建议 30 秒,避免阻塞会话关闭 - **路径格式**:使用正斜杠 `/` 或双反斜杠 `\\`,避免转义问题 - **编码问题**:对话记录文件应为 UTF-8 编码 - **误报处理**:自动检测可能有误报,建议定期人工审核 --- ## 八、晋升机制 ### 7.1 第一级:项目级 → 用户级(跨项目晋升) **条件**(同时满足): 1. 同一学习内容在项目级 `self-improve/` 中出现 **3 次以上** 2. 跨 **2 个以上不同任务** 3. 内容已标记为 `resolved` 且有可用修复方案 4. 内容具有**跨项目适用性**(非项目特有规则) **操作**: 1. 晋升前**询问用户确认**:"📈 发现一条重复出现的经验,建议晋升到全局记忆,是否同意?" 2. 用户同意后,格式化为用户级格式,追加到用户级对应文件 3. 添加晋升标记:`promoted: YYYY-MM-DD to user-level` 4. 将项目级条目状态更新为 `promoted` ### 7.2 第二级:用户级 → 全局(最终沉淀) **条件**(同时满足): 1. 同一内容在用户级 `LEARNINGS.md` 中状态为 `resolved` 2. 出现 **5 次以上** 且时间跨度超过 **7 天** 3. 内容具有高度通用性(工具使用习惯、通用工作流、普遍规范) **分类写入规则(5个核心文件)**: | 内容类型 | 关键词示例 | 目标文件 | 用途 | |---------|-----------|---------|------| | 性格、信念、行为边界 | 性格、信念、边界、态度、风格、语气 | `SOUL.md` | 灵魂文件 | | 身份、角色、使命 | 身份、角色、使命、名称、定位 | `IDENTITY.md` | 身份设定 | | 主人偏好、互动规则 | 主人、称呼、偏好、互动、沟通 | `USER.md` | 主人档案 | | 工作流、操作规范、权限 | 流程、步骤、规范、操作、权限、安全 | `AGENTS.md` | 工作规范 | | 工具环境、技术经验、项目背景 | 工具、环境、配置、项目、技术、经验 | `memory.md` | 全局记忆 | **操作**: 1. 晋升前**询问用户确认**:"📈 发现 X 条经验可沉淀到全局,是否同意?" 2. 用户同意后,根据内容关键词自动分类 3. **写入前备份目标文件**到 `F:\小师妹(龙虾)\`(带时间戳) 4. 格式化为规则形式,写入对应目标文件 5. 添加晋升标记:`promoted: YYYY-MM-DD to global` 6. 将用户级条目状态更新为 `promoted` ### 7.3 定期审查 通过 Automation 定时任务触发审查脚本: - **每日**:扫描项目级 `self-improve/`,检查可晋升条目 - **每周**:扫描用户级 `self-improve/`,检查可沉淀到 memory.md 的条目 - **每月**:运行清理脚本,归档过期条目 --- ## 八、手动管理命令 | 命令 | 功能 | |------|------| | `📖 我记住了什么` | 显示你从我这里学到了哪些经验 | | `📖 查看学习记录` | 显示用户级和所有工作空间的学习记录摘要 |
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub