# 我让 AI Agent 自己给自己改 Bug，结果它真的越来越聪明了

> 用了三个月的 AI 助手跟第一天一模一样。你纠正它 100 次"用 TypeScript"，它第 101 次还是写 JavaScript。这不是智能，这是失忆。

---

> 🎨 **[封面图 - GPTImg2 提示词]**
>
> 绘制一张概念性封面图，风格为科技感渐变插画（深色背景从深蓝过渡到深紫），适合公众号首图和 CSDN 封面：
>
> 画面中央是一个发光的 AI Agent 圆形头像（几何机器人风格），从它向外辐射出一个顺时针的环形光带（表示进化闭环）。环上有 4 个节点，每个节点是一个小图标：
> 1. 右上：聊天气泡图标（对话交互）
> 2. 右下：大脑+放大镜图标（分析识别）
> 3. 左下：三层文档图标（知识沉淀）
> 4. 左上：向上箭头图标（能力提升）
>
> 环的中心 Agent 头像下方有小字"越用越聪明"。
>
> 底部有一条时间线，从左到右标注"Day 1"→"Day 7"→"Day 30"，上方的能力条逐步变长（暗示成长）。
>
> 尺寸 1200×630px，16:9 横版。中文标注。

---

> 🎨 **[核心流水线架构图 - GPTImg2 提示词]**
>
> 绘制一张**垂直流向**的五步流水线架构图，风格简洁专业（白底、圆角白色卡片配微阴影、蓝色(#3B82F6)主连接线、无 3D），适合技术博客正文配图：
>
> 标题：「自我进化引擎 —— 五步分析流水线」
>
> **顶部触发层**：4 条箭头从四个方向汇聚到一个圆形节点「触发」：
> - 左上方：时钟图标 +「会话结束自动检测」
> - 右上方：雷达/扫描图标 +「全局 6h 定时扫描」
> - 左下方：手指点击图标 +「用户手动提取」
> - 右下方：拇指向下图标 +「负面反馈 👎」
>
> **主流程**（从上到下 5 个编号步骤，每步是一个圆角卡片）：
> 1. 「构建对话上下文」— 右侧小字：完整会话 + 工具调用 + 错误日志
> 2. 「LLM 深度分析」— 右侧小字：进化分析器 Prompt，输出 JSON
> 3. 「解析 & 分类」— 此步有一个菱形分支：
>    - 右侧虚线灰色箭头 →「no_action 记录日志」（灰色小卡片）
>    - 下方实线箭头 → 继续
> 4. 「执行进化动作」— 从此分出三条并行线：
>    - 左：🧠 图标 + 「memory → memories 表」
>    - 中：📚 图标 + 「knowledge → .md 文件 + 向量索引」
>    - 右：🔧 图标 + 「skill_fix → 备份 + 改写 SKILL.md」
>    三条线汇合后向下
> 5. 「审计日志 + 可撤销」— 底部卡片，标注"evolution_logs 表，一键回滚"
>
> **右侧纵向虚线**（贯穿步骤 1-5）：标注「WebSocket 实时推送进度 → 前端展示」，每一步旁边有小箭头指向这条虚线
>
> 配色：蓝色(#3B82F6)主线，绿色(#10B981)成功节点，橙色(#F59E0B)异常路径，紫色(#8B5CF6)标注撤销。1200×900px 竖版。中文。

---

<!-- 截图位置：对话界面中底部的实时进化进度条（正在分析/正在执行动作的状态） -->
> 📸 **[产品截图]** 对话界面底部的实时进化进度——用户可以看到 Agent 正在"思考和学习"

<!-- 截图位置：进化完成后对话内联的结果通知卡片（显示本次学到了什么） -->
> 📸 **[产品截图]** 进化完成通知——内联在对话中显示"本次学到的内容"

<!-- 截图位置：进化历程/日志页面全貌（列表 + 筛选器 + 撤销按钮） -->
> 📸 **[产品截图]** 进化历程页面——完整审计日志，支持筛选、搜索、展开详情、一键撤销

---

## 为什么 AI 应该"成长"

灵犀（一个本地优先的 AI Agent 桌面工作台）的定位是**私人助手**。

私人助手意味着什么？它应该**越用越懂你**。知道你写代码只用 TypeScript，知道你讨厌加注释，知道你的项目用 pnpm 而不是 npm，知道 API 返回格式永远是 `{code, data, message}`。

但大模型的本质是无状态的。每次新对话都是一张白纸。它不会记得你上周纠正过它三次的那个错误。

"加个 Memory 表不就行了？"——Memory 解决的是**存储**，但它不解决**识别**。谁来决定记什么？什么值得记？什么只是闲聊噪音？让用户手动标记"这个要记住"？没有人有这个耐心。

真正需要的是一个完整的闭环：

1. **自动发现** — 从对话中识别有价值的信息，无需用户告知
2. **分类沉淀** — 轻量偏好写入记忆，重度知识写成文档，Bug 直接修复
3. **闭环验证** — 记住的东西真的在后续对话中生效了
4. **安全可控** — 学错了能撤销，用户始终有最终控制权

这就是灵犀的**自我进化引擎**。

---

## 效果量化：开启进化前后的对比

同一个"全栈开发助手" Agent，开启进化引擎运行两周后的对比数据（个人使用统计）：

| 衡量维度 | 关闭进化 | 开启进化 2 周后 | 变化 |
|----------|----------|-----------------|------|
| 每日需要重复纠正的次数 | 3-4 次 | 每周 1-2 次 | **↓ 85%** |
| 技能/工具调用首次成功率 | ~70% | ~90% | **↑ 20pp** |
| 代码风格符合用户偏好 | ~60% | ~95% | **↑ 35pp** |
| 自动积累的长期记忆条数 | 0 | 45 条 | — |
| 自动积累的知识库文档 | 0 | 27 份 | — |
| 自动修复的技能描述 | 0 | 4 个 | — |

最直观的体感变化：**再也不用每次新对话都重复说那些已经说过一万遍的偏好了。** Agent 记住了，而且真的在执行。

---

## 触发机制设计：什么时候该"学习"

不能太频繁——每条消息都分析 = API 费用爆炸。不能太被动——只靠用户手动 = 90% 有价值的对话被浪费。

设计了四种触发方式，覆盖从完全自动到用户主动的全谱：

### 触发 1：会话级自动检测

每轮对话结束（AI 回复完成）时自动检查：
- 当前会话消息总数 ≥ 6 条？
- 距离上一次对该会话的进化分析 > 30 分钟？

两个条件同时满足 → 后台静默触发一次分析。用户完全无感知。

**为什么是 6 条？** 少于 6 条的对话通常是"帮我翻译一句话""这个函数什么意思"这类一次性问答。没有来回沟通、没有纠正、没有深入讨论——知识密度不够，分析了也是浪费。

**为什么 30 分钟冷却？** 用户在一段高频对话中每几分钟就满足 6 条阈值。不加冷却会在 1 小时内触发 4-5 次分析，产出大量重复内容。

### 触发 2：全局定时扫描器

后台独立协程——**进化扫描器（Evolution Scanner）**——默认每 6 小时执行一次全量巡检：

1. 查出所有启用进化开关的 Agent
2. 对每个 Agent，筛出消息数达标（默认 ≥ 10 条）但尚未被分析过的会话
3. 按最后更新时间倒序取前 50 个候选
4. 逐个检查冷却：该会话最近一次 `auto%` 类型进化日志是否距今 > 24 小时
5. 通过检查的触发分析
6. **单次巡检最多触发 5 个**，避免一波集中打爆 API 预算

支持**安静时段配置**（如 0:00-7:00 不触发），避免凌晨无人值守时大量消耗 token。

本质是：用户不用灵犀的时候（午休、开会、睡觉），扫描器默默回顾今天的对话，提取有价值的东西。

### 触发 3：用户手动提取

每条 AI 回复的消息气泡上有一个"提取知识"按钮。看到某段特别有价值的对话，手动点击触发。

手动触发不受冷却期限制，且会分析整个会话的完整上下文（而非只看最近几条）。

### 触发 4：负面反馈自动触发

用户对某条 AI 回复点了 👎（thumbs down） → 系统自动触发一次进化分析。

这是**信息密度最高**的触发方式。人主动给负面反馈意味着 AI 确实做错了什么——而错误中往往隐含着"正确做法应该是什么"的信息。

---

<!-- 截图位置：消息气泡上的进化触发入口（👎 反馈按钮 + "提取知识"按钮的位置） -->
> 📸 **[产品截图]** 对话气泡上的进化触发入口——👎 反馈按钮和"提取知识"按钮

---

## 五步分析流水线：从对话到可执行动作

触发后进入流水线处理。全程通过 WebSocket 实时推送 `evolution_progress` 事件，前端展示进度条。

### Step 1 — 构建完整上下文（~0ms）

从 SQLite 拉取当前会话的全部消息——不仅包括 user/assistant 的文本消息，还包括：
- 工具调用的请求和返回
- 错误信息和异常堆栈
- 搜索结果
- 系统消息

这些"非对话内容"对于 skill_fix 的识别至关重要——"工具调用失败→Agent 定位原因→修正参数后成功"这种模式只有在看到工具调用日志时才能被发现。

### Step 2 — LLM 深度分析（3-8 秒）

将完整上下文交给大模型，让它扮演**进化分析器**角色。Prompt 核心要求：

> 你是 AI Agent 自我进化分析器。分析以下对话，提取三类有价值内容：
> 1. **memory**（轻量偏好）—— 用户的习惯和偏好，如"只用 TypeScript"
> 2. **knowledge**（重度知识）—— 值得文档化的知识，如排错流程、架构决策
> 3. **skill_fix**（技能修复）—— 技能描述有误导致调用失败的情况
>
> 对于 skill_fix，重点关注模式："工具执行失败 → Agent 自行定位原因 → 修正参数/格式后重新调用成功"。这种试错经验需要被固化。
>
> 不要输出常识。不要输出显而易见的信息。只输出真正有价值的、未来会复用的内容。

输出格式为 JSON 数组。每项包含 type、content、title（knowledge 用）、skill_name（skill_fix 用）、reason。

### Step 3 — 鲁棒解析（~0ms）

LLM 的 JSON 输出不总是完美的。根据实测数据：
- 70% 直接输出合法 JSON
- 15% 前面加一句话再跟 JSON
- 10% 用 \`\`\`json 代码围栏包裹
- 5% 返回自然语言（"没发现值得提取的"）

三层兜底解析：直接 Unmarshal → 去除 markdown 围栏重试 → 正则提取 `[...]` 片段重试。三层全失败才标记为解析失败，记录日志但不报错。

### Step 4 — 执行进化动作（0.5-3 秒）

根据 type 分流处理：

**memory → 写入长期记忆表**

```sql
INSERT INTO memories (agent_id, content, category, source)
VALUES (?, ?, 'auto_evolution', 'session:xxx')
```

下次该 Agent 发起对话时，所有它的记忆自动注入 system prompt 尾部。

**knowledge → 生成知识文档 + 向量索引**

将 LLM 提取的知识以 Markdown 格式保存为文件 → 写入 knowledge 表 → 被向量索引引擎自动处理（文本分块 512 字符 + 768 维嵌入 + 入库）→ 后续对话通过 RAG 混合检索（向量 KNN + BM25 + RRF 融合排序）自动召回。

**skill_fix → 备份 + 改写技能描述**

1. 定位目标技能的 SKILL.md 文件路径
2. 复制一份 `.bak` 备份（备份路径写入日志）
3. 让 LLM 根据修复指令改写技能描述
4. 更新 skills 表的 description 字段

### Step 5 — 审计日志（~0ms）

所有操作记入 `evolution_logs` 表。完整字段：agent_id、session_id、trigger（触发方式）、action（执行动作）、summary、detail、raw_llm_response（原始返回，可追溯）、steps_json（分步时间戳）、status、target_id（用于撤销时定位目标）。

---

## Skill Fix 详解：Agent 自动修复自身缺陷

这是整个进化引擎中最具突破性的能力。用一个真实案例完整还原：

### 场景重现

1. 用户："帮我用 weather-api 查一下上海明天天气"
2. Agent 调用 `weather-api` 技能，基于 SKILL.md 描述传参 `{"city": "上海"}`
3. 执行报错：`Error: expected format "location=上海,forecast=tomorrow"`
4. Agent 意识到参数格式有误，重新构造参数 `{"location": "上海", "forecast": "tomorrow"}`
5. 成功返回天气数据

### 进化引擎的分析输出

LLM 分析器识别到经典的"失败→自我纠正→成功"模式：

```json
[{
  "type": "skill_fix",
  "skill_name": "weather-api",
  "content": "参数格式不是 JSON object 而是 key=value 格式。正确传参：location=城市名,forecast=today/tomorrow/week。原始技能描述中写的是 JSON 格式，导致 Agent 首次调用失败。",
  "reason": "技能描述有误导致首次调用失败，Agent 通过试错自行找到了正确格式，此经验应固化"
}]
```

### 修复执行

1. 定位 `weather-api` 的 SKILL.md 文件
2. 复制为 `SKILL.md.bak`
3. LLM 根据修复指令改写——将"参数为 JSON 对象 `{city: string}`"改为"参数为 key=value 格式：`location=城市名,forecast=today|tomorrow|week`"
4. 更新 skills 表中的 description 字段

**效果**：下次用户再让 Agent 查天气，它基于更新后的技能描述直接用正确格式传参，一次成功。不再重复犯同一个错误。

### 安全边界

让 AI 自动修改文件确实有风险。保护机制：
- 每次修改前**强制备份**，备份路径写入日志
- 同一技能连续修复次数上限 3 次
- 修复后 48 小时内该技能再报错 → 不再自动触发（标记"需人工审查"）
- 用户可在进化日志页面**一键撤销**（恢复 .bak + 回滚数据库）

---

<!-- 截图位置：进化日志中的 skill_fix 详情（展示修复前后对比 + 撤销按钮） -->
> 📸 **[产品截图]** 进化日志中的技能修复记录——展示修复前后的描述对比 + 一键撤销按钮

---

## 进化产物如何回到对话中

进化引擎的产出不是"存了就完事"。每种类型的产物都有明确的**生效通道**：

### Memory → System Prompt 注入

每次发起新对话时，系统查询当前 Agent 的所有 memories，拼接到 system prompt 尾部：

```markdown
## 你的长期记忆（请严格遵守这些偏好和规则）

- 用户偏好使用 TypeScript，不要建议 JavaScript
- 代码中不需要加注释，用户认为好代码应该自解释
- 数据库操作优先用 Prisma ORM，用户不喜欢手写 SQL
- 用户的项目用 pnpm 而非 npm
- API 响应格式遵循 {code, data, message} 结构
- 用户习惯用 2 空格缩进
- 组件命名用 PascalCase，工具函数用 camelCase
```

每条记忆都很短（一句话），但 45 条累积在一起就是一个完整的"用户画像"。

### Knowledge → RAG 向量检索

生成的 .md 文件被自动纳入知识库，经过本地向量索引引擎处理：文本递归分块（512 字符/块，128 重叠）→ 嵌入模型生成 768 维向量 → 存入 vectors.db。

后续对话中，如果用户的问题与这份知识相关，系统通过混合检索（向量 KNN + 关键词 BM25 + RRF 融合排序）自动召回，注入对话上下文。

**真实案例**：某次对话中和用户一起排查了一个 Docker 部署问题，进化引擎提取了一份"Docker 部署排错 SOP"。三天后用户问"部署报错 port already in use"——Agent 自动引用了那份知识给出解决方案，还带引用角标 `[1]`，用户 hover 能看到引用来源。

### Skill Fix → 即时生效

修改后的 SKILL.md 在下一次技能调用时直接生效——因为 system prompt 中注入的技能清单始终读取数据库中的最新描述。零延迟。

---

## 撤销机制：安全网

自动学习的最大风险是**学错**。LLM 可能误判了用户习惯，或者技能修复改出了新 Bug。

每一条进化记录都有**一键撤销能力**：

| 进化类型 | 撤销操作 |
|----------|----------|
| create_memory | 从 memories 表删除该条记忆 |
| create_knowledge | 删除 .md 文件 + 删除 knowledge 表条目 + 触发向量索引更新 |
| skill_fix | 从 .bak 备份恢复原始文件 + 回滚 skills 表的 description |

撤销后日志状态标记为 `reverted`，不会被后续扫描重复触发。

进化日志页面的能力：
- 按 Agent 筛选
- 按时间范围筛选
- 按类型筛选（memory / knowledge / skill_fix / no_action / failed）
- 关键词搜索
- 每条记录展开后可查看完整的 LLM 原始响应和分步时间线

---

<!-- 截图位置：进化日志页面中展开某条记录的详情视图（原始 LLM 响应 + 时间线） -->
> 📸 **[产品截图]** 进化日志详情展开——原始 LLM 响应 + 分步执行时间线 + 撤销操作

---

## 实时透明：用户看得到进化在发生

后台分析不是黑箱。每一步都通过 WebSocket 推送 `evolution_progress` 事件：

```
→ [Step 1/5] 正在准备对话上下文...
→ [Step 2/5] 正在调用 LLM 深度分析对话内容...
→ [Step 3/5] 正在解析分析结果...
→ [Step 4/5] 发现 3 项进化动作，正在执行...
→ [4.1] 执行 memory: "用户偏好简洁的代码注释风格"
→ [4.2] 执行 knowledge: "Docker 部署排错指南"
→ [4.3] 执行 skill_fix: 修复 weather-api 参数格式描述
→ [Step 5/5] 审计日志记录完成
✓ 本次进化完成：3 项动作已执行
```

完成后通过 `evolution_result` 事件推送一个对话内联通知卡片——用户直接在聊天界面看到"Agent 刚刚学会了什么"。

---

## 全局扫描器配置

扫描器的所有参数通过 API 暴露（`GET/PUT /api/evolution/scanner-config`），前端有专门的可视化配置面板：

| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| 总开关 | 开启 | 可全局关闭扫描器 |
| 扫描周期 | 6 小时 | 最小可设 30 分钟 |
| 最小消息数阈值 | 10 条 | 低于此值的会话不分析 |
| 冷却时间 | 24 小时 | 同一会话两次扫描分析的最小间隔 |
| 安静时段 | 关闭 | 可设置如 0:00-7:00 不触发 |
| 单次最大触发数 | 5 | 一次巡检最多触发几个分析 |

设计思路：**开箱即用的默认值 + 给高级用户完全的控制权**。

---

<!-- 截图位置：设置页中的进化扫描器配置面板 -->
> 📸 **[产品截图]** 进化扫描器配置面板（设置 > 进化设置）

---

## 与 RAG 和 Fine-tuning 的本质差异

这是一个高频问题，统一说明：

| 维度 | 传统 RAG | Fine-tuning | 自我进化引擎 |
|------|----------|-------------|-------------|
| 知识来源 | 人工上传的文档 | 人工准备的训练数据 | **对话中自动发现** |
| 更新频率 | 手动，低频 | 极低（重新训练） | **持续自动** |
| 生效方式 | 检索注入上下文 | 改变模型权重 | 记忆注入 + RAG + 技能修复 |
| 可解释性 | 中 | 低（黑箱） | **高（完整审计日志）** |
| 可撤销性 | 删除文档 | 回滚模型版本 | **一键撤销** |
| 成本 | 低 | 极高 | 中（每次分析 1 次 LLM 调用） |
| 适用场景 | 已有知识的检索 | 行为模式的根本改变 | **日常使用中的持续学习** |

自我进化不替代 RAG——它是 **RAG 的自动填充器**。知识库需要人往里填东西，进化引擎就是那个"从对话中自动挖掘有价值内容并填充进去"的机制。最终通过同一个检索通道（向量 + BM25）生效。

也不替代 Fine-tuning。Fine-tuning 改变模型本身的权重，而进化改变的是模型的"工作环境"（prompt、记忆、知识库、技能描述）。灵犀的用户用的是外部 API（OpenAI/Claude/DeepSeek），不可能去 fine-tune 别人的模型——但完全可以通过进化让同一个模型"表现得好像经过了专门训练"。

---

> 🎨 **[对比概念图 - GPTImg2 提示词]**
>
> 绘制一张**左右对比**的概念图，风格活泼但不幼稚，适合文章中间用于强化读者印象：
>
> 标题：「有进化 vs 没有进化」
>
> **左侧（灰色调 + ❌ 标记）**：
> - 标题字「传统 AI 助手」
> - 画一个竖向时间线，上面 3 个节点：
>   - Day 1：对话气泡 → 用户："代码用 TS" → AI："好的"
>   - Day 30：对话气泡 → 用户："用 TS！" → AI："好的"
>   - Day 90：对话气泡 → 用户："我说了 100 遍了！！" → AI："好的，我会使用 TypeScript"
> - 底部灰色字：「每次都像失忆」
>
> **右侧（蓝绿渐变色调 + ✅ 标记）**：
> - 标题字「灵犀 Agent（开启进化）」
> - 同样竖向时间线：
>   - Day 1：用户："代码用 TS" → Agent："好的" → 旁边有一个小脑图标 [记住了]
>   - Day 2：Agent 主动用 TS 写代码，无需提醒
>   - Day 30：Agent 记得 TS + pnpm + Prisma + 不加注释 + 2空格…（列表向下延伸）
> - 底部蓝色字：「越用越懂你」
>
> 中间用虚线分割。配色：左灰(#6B7280)，右蓝绿渐变(#3B82F6→#10B981)。1200×600px。中文。

---

## 踩过的工程深坑

### 坑 1：进化频率失控

早期没有冷却期。一个高频对话中用户 10 分钟发了 20 条消息——会话级检测被连续触发 4 次，产出 8 条高度重复的记忆（"用户偏好 TS"重复了 3 次的不同表述）。

解决方案组合：
- 会话级 30 分钟冷却
- 扫描器级 24 小时冷却
- 插入前做**内容去重检查**（对已有记忆做关键词匹配，相似度超阈值则跳过）

### 坑 2：Skill Fix 改出新 Bug

有一次 LLM 在修复技能描述时"过度修复"——把一个本来功能正常的参数描述也改了。导致下次调用又报错 → 又触发分析 → 又修复 → 又报错……死循环。

解决方案：
- 同一技能连续修复次数硬上限 3 次
- 修复后 48 小时内该技能再报错 → 标记"需人工审查"，不再自动触发
- 每次修复强制备份，用户可回滚到任意历史版本

### 坑 3：学到垃圾

早期 prompt 过于宽松，LLM 会把常识也当作"有价值知识"输出：
- "Python 是一种编程语言"
- "数据库用来存储数据"
- "Git 是版本控制工具"

现在 prompt 明确要求："不要输出常识和显而易见的信息。只输出该用户独有的偏好和该项目专属的知识。"效果大幅改善，偶尔的误判靠撤销兜底。

### 坑 4：LLM 返回格式不一致

让 LLM 返回纯 JSON 数组，实际表现差异极大。甚至遇到过返回"```JSON"（大写 J）、返回 YAML 格式、返回"我分析后认为没有值得提取的内容"等各种异常。

三层兜底解析 + 解析失败时只记录日志不抛错（graceful degradation），确保进化引擎永远不会因为格式问题 crash 整个对话流程。

---

## 为什么是本地引擎

这个设计决策在项目早期就确定了：**进化引擎必须完全在本地运行**。

三个硬约束：

1. **隐私** — 进化分析需要读取用户的完整对话内容。如果上传到云端服务器分析，等于把所有聊天记录都暴露了。
2. **成本可控** — 进化分析调用的是用户自己配置的 LLM API，费用走用户自己的额度。不存在"平台帮你进化但要额外收费"的问题。
3. **完全可定制** — 不同用户对进化的敏感度和频率需求不同。本地运行 = 所有参数完全用户可控。

灵犀的所有数据（SQLite 数据库、知识库文件、向量索引、进化日志）都存在本地 `~/Library/Application Support/灵犀/` 目录下。零云端依赖。

---

> 🎨 **[闭环飞轮图 - GPTImg2 提示词]**
>
> 绘制一张**环形闭环飞轮**概念图，适合做文章总结段的配图或二次封面：
>
> 标题：「Agent 自我进化闭环 —— 越用越聪明」
>
> 画面中央是一个大号的顺时针环形（由 4 段弧线组成，弧线用渐变色从蓝到绿过渡）。环的正中心写大号文字「越用越聪明」。
>
> 环上 4 个节点（圆形图标 + 文字）：
> 1. 右上「对话交互」— 双气泡图标 — 底下小字"产生原始对话数据"
> 2. 右下「进化分析」— 大脑+齿轮图标 — 底下小字"LLM 识别有价值内容"
> 3. 左下「知识沉淀」— 三层(记忆/文档/技能)图标 — 底下小字"分类写入长期存储"
> 4. 左上「能力增强」— 向上折线图图标 — 底下小字"下次对话自动生效"
>
> 环外两条虚线箭头指向「进化分析」节点：
> - 上方来的：「全局扫描器（每 6h）」
> - 右方来的：「用户手动 / 负面反馈」
>
> 左上角有一个小的回退箭头标注「一键撤销」（安全网）
>
> 配色：渐变蓝绿(#2563EB → #10B981)主色，节点用白色圆+彩色图标。1200×800px，16:10 横版。中文。

---

## 设计哲学总结

五条原则贯穿自我进化引擎的全部设计：

1. **自动 + 可控** — 默认全自动运行，但用户随时能关闭、能调频、能撤销。永远不做"用户无法干预"的事。

2. **多通道落地** — 轻量的走记忆（一句话），重度的走知识库（完整文档），精准的走技能修复（改代码）。不是一种机制打天下。

3. **闭环验证** — 不止是"记住了"，要确保记住的东西**真的**在后续对话中表现出来。记忆注入 prompt = 直接影响输出；知识入库 = RAG 检索可召回；技能修复 = 下次调用直接生效。

4. **全程透明** — 实时进度推送、完整审计日志、LLM 原始响应保留、分步时间戳记录。任何一次进化动作的全过程都可以追溯到原始数据。

5. **安全优先** — 备份机制（.bak 文件）、一键撤销（UI + API）、频率限制（冷却期）、死循环检测（连续修复上限）。把"不小心学错了"的代价降到最低。

---

## 关于灵犀

**灵犀 AI Agent** — 完全本地部署的桌面 AI 智能体工作台。

核心能力：
- **多 Agent 协作** — 群聊行为引擎 + 一对一跨实例对话
- **智能进化** — 自我进化引擎（本文）— 越用越聪明
- **人格系统** — 人格蒸馏 + 群聊人格参数
- **知识体系** — 本地向量 RAG + 混合检索
- **工具生态** — 技能系统 + MCP + Smithery 市场
- **自动化** — 定时任务 + 工作流编排
- **桌面操控** — Screen Agent
- **隐私优先** — 数据不出机，支持任何 OpenAI 兼容模型

**GitHub**：https://github.com/OdysseyFather/lingxi-agent ⭐ 欢迎 Star

---

**系列文章：**
- 上一篇：[我让 5 个 AI 建了个微信群，结果它们吵起来了](#)
- 下一篇：[把微信聊天记录喂给 AI，它"复刻"了我同事的说话风格（连口头禅都一样）](#)

*关注不迷路。系列持续更新。*
