Agent 自进化实践
背景
重复的提问
为了避免 AI 不思考直接就进行内容的生成,我加了一条 rule 每次指令若存在歧义,你先列出所有可能性并由我确认,再开始执行。
但是加完后,AI 在每个指令基本都会对我进行询问,有的甚至多的 3-4 条,虽然内容是更加符合方向了,但是很多选项基本都固定的,是按预期来的,反而变成了多余的步骤。
重复的错误
| 问题 | 表现 | 代价 |
|---|---|---|
| 决策偏好不一致 | AI 推荐你不会选的方案、反复踩同一个坑 | 纠正成本累积,信任下降 |
| 错误不收敛 | 同一类错误(如漏注释、过度工程化)在不同会话中反复出现 | 无法形成肌肉记忆,永远在「调教」 |
思考
有时为了解决这些重复出现的问题,尝试过下面几种,但是都大多美而不足
- 用
Rules + Agents添加规则去约束- 优点:强约束,加在 system prompt 里基本都会遵守。
- 缺点:
静态的,每次都要自己去整理。
- 每次口头纠正
- 缺点:不可复用,换个会话又要重来
- 通用 AI 规则
- 缺点:纯自嗨,太泛了缺乏准确性,基本无用
尝试了一圈后,发现单纯靠 "人工编写 Rules" 已经不太能跟得上时代了,后面也了解到一些自进化的概念,我顿时眼前一亮,我发现可能这才是我最需要的东西。
个人风格决策系统的构建
这套系统本质上是在解决一个问题:
通过分析与 AI 的所有对话历史,总结出自己的决策风格,并建立一套策略规则,进行预测、学习, 让无状态的 LLM 表现得像一个跟你合作了半年的初级工程师------知道你的风格、预测你的选择、从错误中学习。
两层架构:画像层 + 校准层
┌─────────────────────────────────────────┐
│ decision-profile.md │ ← 画像层:稳定的个人规范
│ 身份边界 · 决策规则 · 摩擦点 · 沟通协议 │ (人工编写,低频更新)
└────────────────┬────────────────────────┘
│ 引用
┌────────────────▼────────────────────────┐
│ decision-calibration.md │ ← 校准层:可进化的算法
│ 因子模型 · 权重矩阵 · 调整算法 · 毕业规则 │ (数据驱动,自动更新)
└────────────────┬────────────────────────┘
│ 写入/读取
┌────────────────▼────────────────────────┐
│ decision-log.yaml │ ← 数据层:原始决策记录
│ 每次决策的 predicted vs actual │ (自动追加,只增不删)
└─────────────────────────────────────────┘
核心 Rules 模板
AI 会根据你的全部历史对话,总结出你当前个人的一些风格,进行初始模版的填充。
md
# 决策画像:个人风格规范
> 数据来源:全部的 AI 历史对话 + 决策 log
> 版本:v1.8 · 2026-04-10
---
## 1. 身份与边界
**角色**:MoeGo 全栈 Tech Lead --- React/TS、Java/Go、AI Agent 基建(TS/Python)。
**AI 定位**:初级工程师------给明确指令、review 产出、纠正错误。AI 不做方向性决策。
**绝对禁止**:
- xxx
---
## 2. 决策规则
### 阶段判断 → 决策策略
| 阶段 | 触发条件 | 策略 |
|------|---------|------|
| **探索期** | scope 不清楚、首轮尝试 | xxx |
| **执行期** | scope 已确认 | xxx |
| **修复期** | bug、线上问题 | xxx |
| **评审期** | 估时、架构讨论 | xxx |
### 选项呈现规则
- 方案间差异明显 → xxx
- 方案间差异不大 → xxx
- 任何方案涉及数据风险 → xxx
---
## 3. 反复出现的摩擦点(AI 必须主动规避)
| 问题 | 应对规则 |
|------|---------|
| AI 不加注释或注释不够 | xxx |
| AI 误解需求范围 | xxx|
| AI 对业务数据做错误假设 | xxx |
| AI 过度搜索不及时放弃 | 搜索超过 5 次未命中 → 停下来问用户 |
| AI 写测试而非实现 | 除非明确要求 TDD,否则先写实现,按需补测试 |
| AI 过度提问打断流程 | 方向确定后,同类决策自行判断,不再逐一确认 |
---
## 4. 沟通协议
**用户侧**:
- 中文为主,技术术语用英文
- `xxx`
**AI 侧**:
- 回复长度匹配用户输入量级;用户一句话 → 不超过 3 段
- 所有代码改动必须附带注释
- xxx
---
## 5. 自进化
决策日志路径:`~/.agents/logs/decision-log.yaml`
| 触发条件 | 动作 |
|---------|------|
| 累计 10 条日志 | 统计 match rate;< 80% 时提出调整建议 |
| 累计 3 次同类错误 | 新增到「摩擦点」表 |
| 用户主动纠正 | 直接覆盖,标记 `user_override` |
详细校准算法和因子发现流程见 `~/.agents/docs/decision-calibration.md`。
---
## 6. 快速参考卡
```
scope 不清楚? → 选最小方案
scope 已确认? → 选闭环方案,一次做完
```
自进化的核心
将一开始的 rule
每次指令若存在歧义,你先列出所有可能性并由我确认,再开始执行。
改为下面的 rule
md
## 歧义消解
用户指令存在歧义 → 列出所有合理解读 → 依据 `~/.agents/rules/decision-profile.md` §2 决策规则自主判断 → 判断不了时让用户选择 → 再行动。
不要跳过歧义识别步骤直接执行。
## 决策日志(自进化)
路径:`~/.agents/logs/decision-log.yaml`
| 触发时机 | 动作 |
|---------|------|
| 任务开始 | 检查 `decision-profile.md` §5 自进化触发条件,符合则询问用户是否执行更新 |
| AI 提供选项 + 用户选择后 | 追加日志 |
| AI 自主决策 + 用户反馈后 | 追加日志,标记 `ai_autonomous: true` |
| 用户主动要求记录 | 追加日志,标记 `user_requested: true` |
一些使用的例子:
- 已经能根据我的偏好替我做决策了,同时尽量对 AI 的决策给一些反馈,促进它的"进化"。

参考文件
决策因子与日志
md
# 决策校准:因子模型与自进化算法
> 引用自 `~/.agents/rules/decision-profile.md` §5
> 仅在 match rate < 80% 或需要权重调整时查阅本文档
---
## 1. 核心决策因子(6 维度)
| 因子 | 代号 | 定义 | 权重范围 |
|------|------|------|---------|
| 最小性 | `F_min` | 方案的实施范围有多小 | 0.10 -- 0.35 |
| 闭环度 | `F_close` | 方案能否独立闭环、不留半成品 | 0.15 -- 0.35 |
| 数据安全 | `F_data` | 方案是否保护数据正确性 | 0.20 -- 0.30(始终高权重) |
| 交付速度 | `F_speed` | 方案的落地时间 | 0.10 -- 0.20 |
| 认知负担 | `F_cogn` | 需要用户额外理解/验证的成本 | 0.05 -- 0.15 |
| 可逆性 | `F_rev` | 方案出错后回滚的难度 | 0.05 -- 0.15 |
## 2. 置信度公式
```
Confidence(option) = Σ (w_i × F_i(option)) i ∈ {min, close, data, speed, cogn, rev}
```
### 阶段权重矩阵
| 阶段 | w_min | w_close | w_data | w_speed | w_cogn | w_rev |
|------|-------|---------|--------|---------|--------|-------|
| 探索期 | **0.35** | 0.10 | 0.25 | 0.15 | 0.10 | 0.05 |
| 执行期 | 0.10 | **0.35** | 0.25 | 0.15 | 0.10 | 0.05 |
| 修复期 | 0.10 | 0.15 | **0.30** | 0.20 | 0.10 | 0.15 |
| 评审期 | 0.20 | 0.25 | 0.20 | 0.10 | **0.15** | 0.10 |
### 因子评分规则
```
F_min: 1 = 改动最小 0.5 = 中等范围 0 = 大范围重构
F_close: 1 = 完全闭环 0.5 = 部分闭环 0 = 留尾巴
F_data: 1 = 数据不可能出错 0.5 = 有风险但可控 0 = 可能提交错误数据
F_speed: 1 = 当天可交 0.5 = 1-3 天 0 = 超过一周
F_cogn: 1 = 无需额外理解 0.5 = 需看文档 0 = 需深入研究
F_rev: 1 = 一键回滚 0.5 = 可手动回退 0 = 不可逆
```
---
## 3. 权重调整算法
```
对于每个决策因子 w_i:
1. 收集最近 N 条决策日志中 predicted ≠ actual 的记录
2. 对每条不匹配记录:
- delta_i = F_i(actual) - F_i(predicted)
3. 新权重 = 旧权重 + learning_rate × mean(delta_i)
4. 归一化:确保所有权重之和 = 1.0
5. 钳位:确保每个权重在定义的 [min, max] 范围内
learning_rate = 0.1(保守更新,防止单次极端案例主导)
```
---
## 4. 新因子发现流程
```
if 连续 5 次预测失败 AND 现有因子无法解释差异:
1. 提取失败案例的共性
2. 假设一个新因子(名称 + 定义 + 评分规则)
3. 用历史数据回测:新因子加入后 match rate 是否提升 > 5%
4. 是 → 正式加入因子表,初始权重 = 0.10,从其他因子按比例扣减
5. 否 → 丢弃假设,记录为"已排除因子"
```
---
## 5. 模式毕业规则
当一个决策模式被验证 20+ 次且 match rate > 90%:
- 标记为 `✅ 已毕业`,直接按模式执行,不再计算公式
- 连续 3 次预测失败时重新进入校准
---
## 6. 决策日志格式
```yaml
- timestamp: "2026-04-09T10:30:00"
context: "估时方案选择"
phase: "探索期"
options:
- id: 1
desc: "最小闭环"
predicted_confidence: 0.82
- id: 2
desc: "展示+交互"
predicted_confidence: 0.61
predicted_choice: 1
actual_choice: 1
match: true
notes: ""
```
日志路径:`~/.agents/logs/decision-log.yaml`
md
# 决策日志
# 格式:每次 AI 提供选项且用户做出选择后追加一条记录
# 用于权重校准和模式发现
# 路径:~/.agents/logs/decision-log.yaml
# ── 示例条目 ──
# - timestamp: "2026-04-09T10:30:00"
# context: "估时方案选择"
# phase: "探索期" # 探索期 | 执行期 | 修复期 | 评审期
# options:
# - id: 1
# desc: "最小闭环"
# predicted_confidence: 0.82
# - id: 2
# desc: "展示+交互"
# predicted_confidence: 0.61
# predicted_choice: 1
# actual_choice: 1
# match: true
# delta: 0
# notes: ""