用 AI 编程工具(Claude Code、OpenCode 等)时,有个很明显的痛点:每次对话都是一次性的。你踩过的坑、总结的经验、写过的好用工具函数,下次对话全部归零。
这种「原地踏步」的感觉很强烈 —— 你在进步,但你的 AI 助手没有。
Self-Improve 要解决的就是这个问题:把对话中的经验和代码沉淀下来,让 AI 助手越用越懂你。
两类知识,两条路径:
对话经验 ──→ /distill-skill ──→ Skills(注入 system prompt,自动匹配)
可复用代码 ──→ /distill-module ──→ Modules(MCP 按需检索,零上下文开销)
Skills 是经验型知识 —— 「FastAPI 异常处理应该这样设计」「React 表单校验的最佳实践」。通过 OpenCode 的 skill 机制加载到 system prompt,agent 自动匹配触发。
Modules 是代码型知识 —— 你封装好的 HTTP client、JWT 认证模块、项目脚手架。通过 MCP server 按需检索,agent 不读源码,只看 API,直接安装使用。像 npm/pip 一样,但是是你自己的私有包。
Skill 的 description 会全部注入 system prompt。10 个 skill 没问题,100 个代码模块的描述塞进去就是灾难 —— 上下文爆炸,互相污染,agent 反而更蠢。
所以代码模块走 MCP(Model Context Protocol):agent 需要时主动调用 search_modules 检索,按需拉取,零上下文开销。
不是所有代码复用都是同一个粒度:
| 层级 | 说明 | 例子 | 使用方式 |
|---|---|---|---|
| utility | 单文件工具函数 | HTTP client、日志封装 | 安装后直接 import |
| component | 多文件业务模块 | JWT 认证、权限管理 | 安装后按适配点修改 |
| blueprint | 项目架构模板 | FastAPI 后端骨架 | 不安装,agent 按蓝图生成 |
self-improve/
├── AGENTS.md # agent 指令(sync 时注入 opencode 全局)
├── registry.json # 模块索引(MCP server 读取)
├── skills/ # 经验型知识(按分类组织)
│ └── general/ # 通用技能
│ └── mermaid-diagram-generator/
├── modules/ # 代码模块(通过 /distill-module 添加)
│ ├── utilities/ # 工具函数
│ ├── components/ # 业务模块
│ └── blueprints/ # 架构模板
├── mcp-server/ # 模块检索 MCP 服务
│ └── server.py
└── commands/
├── sync.sh # 一键注册到 opencode
├── register.py # 注册模块到 registry
├── commit.md # /commit 命令
├── distill-skill.md # /distill-skill 命令
└── distill-module.md # /distill-module 命令
git clone <your-repo-url>
cd self-improvecd mcp-server
pip install -r requirements.txtMCP Server 通过 SSE(Server-Sent Events)方式提供服务,需要先启动:
python /你的路径/self-improve/mcp-server/server.py启动后会在 http://127.0.0.1:9475 提供服务:
- SSE 端点:
http://127.0.0.1:9475/sse - Dashboard:
http://127.0.0.1:9475/(查看模块统计和安装记录)
编辑 ~/.config/opencode/opencode.json,添加:
{
"mcp": {
"self-improve-modules": {
"type": "remote",
"url": "http://127.0.0.1:9475/sse",
"enabled": true
}
}
}bash commands/sync.sh这会自动完成:
- 注入 AGENTS.md 到 opencode 全局配置(动态写入仓库绝对路径)
- 链接所有 skills 到 opencode skills 目录
- 链接所有 commands(
/commit、/distill-skill、/distill-module)
/commit
agent 会加载 git-master skill,自动检测仓库 commit 风格,按原子拆分规则执行规范的 commit。
对话结束时,觉得有值得沉淀的经验:
/distill-skill
agent 会分析对话,提取可复用经验,生成 SKILL.md 草稿供你确认后写入仓库。
写了个好用的工具函数或业务模块:
/distill-module
agent 会提取代码,生成 manifest.json(API 定义),注册到 registry。
下次对话中,agent 会自动通过 MCP 检索你的模块库:
你:帮我写个需要 HTTP 请求的功能
agent:(自动调用 search_modules("http"))
→ 发现 http-client 模块
→ 调用 get_module_api("http-client") 查看 API
→ 调用 install_module("http-client", "./lib") 安装
→ 直接 import 使用
这个项目的核心价值在于社区共建 —— 每个人的经验和代码模块都能让所有人受益。
- Fork 本仓库
- 在
skills/<category>/下创建你的 skill 目录 - 编写
SKILL.md,格式参考已有 skill - 提交 PR
- Fork 本仓库
- 在
modules/<type>/<lang>/<name>/下创建模块目录(所有类型统一包含 lang 层,跨语言模板用shared) - 编写
manifest.json+src/源码 - 运行
python commands/register.py <模块路径>注册 - 提交 PR
模块的 manifest.json 必须包含:
{
"name": "模块名(kebab-case)",
"type": "utility | component | blueprint",
"lang": "python | typescript | shared",
"summary": "一句话描述,用于语义搜索",
"tags": ["精准关键词", "用于标签匹配"],
"install": {
"dependencies": ["第三方依赖"],
"entry": "from lib.xxx import Xxx"
},
"api": { }
}- MCP Server: Python,通过 SSE(Server-Sent Events)与 agent 通信,内置 Dashboard
- Skills: Markdown + YAML frontmatter,OpenCode 原生 skill 机制
- Commands: OpenCode slash command 格式
- 管理: Git 版本控制,bash 脚本一键同步
目前主要适配 OpenCode + oh-my-opencode。
MCP server 遵循标准 MCP 协议,理论上兼容所有支持 MCP 的 AI 编程工具(Claude Code 等)。Skills 部分需要根据不同工具的 skill 加载机制做适配。
MIT
