跳转到内容

自我进化

自我进化系统由 22 个模块共 9,806 行 Rust 代码组成。它使 PRX 能够随时间改进自身行为——不是通过重新训练模型,而是通过进化围绕模型的提示词、记忆结构和运行策略。

自我进化按三阶段循环运行:

记录(实时)
│ 每个请求/响应对及其元数据被记录
分析(每天)
│ 提取模式:失败模式、慢路径、成本异常
进化(每 3 天)
生成候选改进,在影子模式中测试,升级或回滚

每次交互都被记录,包含:

  • 请求内容和分类意图
  • 选定的模型和路由评分分解
  • 响应内容和延迟
  • 结果信号:用户接受度、重试、后续修正、工具调用成功/失败
  • 令牌数和估计成本

这些数据积累在本地存储中,为分析建立证据基础。

每日分析任务处理最近的记录以识别:

模式检测方法
某类任务的重复失败按意图 + 模型聚类失败请求
提示词弱点识别系统提示词导致偏离目标响应的地方
成本低效标记本可使用更便宜模型的请求
延迟异常检测性能下降的模型或工具
记忆缺口发现代理缺乏存储知识的主题

分析结果以结构化发现存储,每个标注严重程度和可执行建议。

基于积累的分析发现,进化引擎生成候选变更

修改系统提示词以解决已识别的弱点:

  • 重写导致误解的指令
  • 基于真实失败案例添加或优化少样本示例
  • 调整语气、详细程度或格式指令
  • 在工具调用失败时调整工具使用指令

改进存储在 prx-memory 中的知识:

  • 从成功的交互中提取可复用模式
  • 合并碎片化的知识条目
  • 弃用过时或矛盾的记忆
  • 索引运行期间发现的新领域知识

调整运行参数:

  • 路由器评分权重(alpha、beta、gamma、delta、epsilon)
  • Automix 置信度阈值
  • 每通道并发限制
  • 超时预算
  • 每意图类别的默认模型偏好

自我进化强大但危险。PRX 强制执行多层安全防护以防止退化。

在应用任何候选变更之前,必须通过门控检查:

  1. 语法验证 — 变更必须产生有效的配置/提示词
  2. 回归测试 — 使用提议的变更重放近期成功交互的样本,验证输出仍然可接受
  3. 范围检查 — 变更不得超出其允许范围(如提示词进化不能修改安全策略)

候选变更首先以影子模式部署:

  • 当前(生产)配置处理所有真实请求
  • 候选配置在相同输入上并行运行
  • 比较输出但候选的响应不会发送给用户
  • 收集指标:质量差异、延迟差异、成本差异

影子模式运行可配置的评估期(默认:24 小时)。

独立的评判模型评估影子模式结果。它在请求样本上比较生产与候选输出,以 0-1 的分数对候选评分。

  • 阈值:0.6 — 低于 0.6 的候选被拒绝
  • 评判模型通常是强推理模型(如 Claude Opus、o3),与被评估的模型不同
  • 评判提示词本身有版本控制且不受自我进化影响(防止博弈)

如果升级后的变更在部署后导致故障率飙升:

  1. 断路器在 1 小时窗口内故障率超过基线 2 倍时触发
  2. 变更自动回滚
  3. 创建事故记录,附带故障证据
  4. 变更标记为失败,未经修改不会重试

每个配置状态都有版本记录:

v1.0 ── 初始配置
v1.1 ── 提示词进化:改进编码指令
v1.2 ── 策略进化:调整路由器权重
v1.3 ── 已回滚(断路器触发)
v1.2 ── 已恢复(当前)

快照包含完整的提示词集、记忆状态哈希、路由器权重和所有配置参数。任何版本都可以即时恢复。

所有进化尝试都被追踪,包含:

字段说明
候选 ID提议变更的唯一标识
层级prompt / memory / strategy
触发因素推动变更的分析发现
影子指标观察到的质量、延迟、成本差异
评判分数评判模型给出的分数
结果promoted / rejected / rolled_back
持续时间变更在回滚前的活跃时间(如适用)

这提供了系统如何以及为何随时间变化的完整审计跟踪。

RollbackManager 处理自动和手动回滚:

  • 自动 — 当故障率飙升时由断路器触发
  • 手动 — 操作者可以通过 CLI 或 API 回滚到任何之前的版本
  • 选择性 — 仅回滚一个层级(如回退提示词变更但保留策略变更)
Terminal window
# 列出进化历史
prx evolution history
# 回滚到特定版本
prx evolution rollback v1.2
# 仅回滚提示词变更
prx evolution rollback --layer prompt v1.1

回滚是即时的,因为所有版本快照都保留在本地。