AI Newsletter Digest improvements: fixed QP soft line break decoding, URL extraction, and content cleaning

This commit is contained in:
Krilly
2026-03-04 13:29:22 +00:00
parent 29a98137a7
commit 57dd294675
13706 changed files with 2114953 additions and 237629 deletions

View File

@@ -0,0 +1,264 @@
# 🧬 Capability Evolver能力进化引擎
[English Docs](README.md)
**“进化不是可选项,而是生存法则。”**
**Capability Evolver** 是一个元技能Meta-Skill赋予 OpenClaw 智能体自我反省的能力。它可以扫描自身的运行日志,识别效率低下或报错的地方,并自主编写代码补丁来优化自身性能。
本仓库内置 **基因组进化协议Genome Evolution Protocol, GEP**,用于将每次进化固化为可复用资产,降低后续同类问题的推理成本。
## 核心特性
- **自动日志分析**:自动扫描 `.jsonl` 会话日志,寻找错误模式。
- **自我修复**:检测运行时崩溃并编写修复补丁。
- **GEP 协议**:标准化进化流程与可复用资产,支持可审计与可共享。
- **突变协议与人格进化**:每次进化必须显式声明 Mutation并维护可进化的 PersonalityState。
- **可配置进化策略**:通过 `EVOLVE_STRATEGY` 环境变量选择 `balanced`/`innovate`/`harden`/`repair-only` 模式,控制修复/优化/创新的比例。
- **信号去重**:自动检测修复循环,防止反复修同一个问题。
- **运维模块** (`src/ops/`)6 个可移植的运维工具生命周期管理、技能健康监控、磁盘清理、Git 自修复等),零平台依赖。
- **源码保护**:防止自治代理覆写核心进化引擎源码。
- **动态集成**:自动检测并使用本地工具,如果不存在则回退到通用模式。
- **持续循环模式**:持续运行的自我进化循环。
## 使用方法
### 标准运行(自动化)
```bash
node index.js
```
### 审查模式(人工介入)
在应用更改前暂停,等待人工确认。
```bash
node index.js --review
```
### 持续循环(守护进程)
无限循环运行。适合作为后台服务。
```bash
node index.js --loop
```
### 指定进化策略
```bash
EVOLVE_STRATEGY=innovate node index.js --loop # 最大化创新
EVOLVE_STRATEGY=harden node index.js --loop # 聚焦稳定性
EVOLVE_STRATEGY=repair-only node index.js --loop # 紧急修复模式
```
| 策略 | 创新 | 优化 | 修复 | 适用场景 |
| :--- | :--- | :--- | :--- | :--- |
| `balanced`(默认) | 50% | 30% | 20% | 日常运行,稳步成长 |
| `innovate` | 80% | 15% | 5% | 系统稳定,快速出新功能 |
| `harden` | 20% | 40% | 40% | 大改动后,聚焦稳固 |
| `repair-only` | 0% | 20% | 80% | 紧急状态,全力修复 |
### 运维管理(生命周期)
```bash
node src/ops/lifecycle.js start # 后台启动进化循环
node src/ops/lifecycle.js stop # 优雅停止SIGTERM -> SIGKILL
node src/ops/lifecycle.js status # 查看运行状态
node src/ops/lifecycle.js check # 健康检查 + 停滞自动重启
```
## 典型使用场景
- 需要审计与可追踪的提示词演进
- 团队协作维护 Agent 的长期能力
- 希望将修复经验固化为可复用资产
## 反例
- 一次性脚本或没有日志的场景
- 需要完全自由发挥的改动
- 无法接受协议约束的系统
## GEP 协议(可审计进化)
本仓库内置基于 GEP 的“协议受限提示词模式”,用于把每次进化固化为可复用资产。
- **结构化资产目录**`assets/gep/`
- `assets/gep/genes.json`
- `assets/gep/capsules.json`
- `assets/gep/events.jsonl`
- **Selector 选择器**:根据日志提取 signals优先复用已有 Gene/Capsule并在提示词中输出可审计的 Selector 决策 JSON。
- **约束**:除 🧬 外,禁止使用其他 emoji。
## 配置与解耦
本插件能自动适应你的环境。
| 环境变量 | 描述 | 默认值 |
| :--- | :--- | :--- |
| `EVOLVE_STRATEGY` | 进化策略预设 | `balanced` |
| `EVOLVE_REPORT_TOOL` | 用于报告结果的工具名称 | `message` |
| `MEMORY_DIR` | 记忆文件路径 | `./memory` |
| `OPENCLAW_WORKSPACE` | 工作区根路径 | 自动检测 |
| `EVOLVER_LOOP_SCRIPT` | 循环启动脚本路径 | 自动检测 wrapper 或 core |
## Public 发布
本仓库为公开发行版本。
- 构建公开产物:`npm run build`
- 发布公开产物:`npm run publish:public`
- 演练:`DRY_RUN=true npm run publish:public`
必填环境变量:
- `PUBLIC_REMOTE`(默认:`public`
- `PUBLIC_REPO`(例如 `autogame-17/evolver`
- `PUBLIC_OUT_DIR`(默认:`dist-public`
- `PUBLIC_USE_BUILD_OUTPUT`(默认:`true`
可选环境变量:
- `SOURCE_BRANCH`(默认:`main`
- `PUBLIC_BRANCH`(默认:`main`
- `RELEASE_TAG`(例如 `v1.0.41`
- `RELEASE_TITLE`(例如 `v1.0.41 - GEP protocol`
- `RELEASE_NOTES``RELEASE_NOTES_FILE`
- `GITHUB_TOKEN`(或 `GH_TOKEN` / `GITHUB_PAT`,用于创建 GitHub Release
- `RELEASE_SKIP``true` 则跳过创建 GitHub Release默认会创建
- `RELEASE_USE_GH``true` 则使用 `gh` CLI否则默认走 GitHub API
- `PUBLIC_RELEASE_ONLY``true` 则仅为已存在的 tag 创建 Release不发布代码
## 版本号规则SemVer
MAJOR.MINOR.PATCH
• MAJOR主版本有不兼容变更
• MINOR次版本向后兼容的新功能
• PATCH修订/补丁):向后兼容的问题修复
## 更新日志
### v1.10.3
- **可配置约束口径 (Configurable Blast Radius Policy)**`computeBlastRadius()` 将运行产物日志、memory、capsule、events与功能代码分离。仅代码/配置文件计入 `max_files` 约束。策略可通过 `openclaw.json``evolver.constraints.countedFilePolicy` 配置。
- **结构化状态产出 (Structured Status Output)**`solidify()` 生成结构化状态载荷(`result``en``zh``meta`并写入周期状态文件为下游报告提供丰富的进化上下文intent、gene、signals、blast radius、validation 结果)。
- **Solidify CLI 可观测性**`index.js solidify` 执行后输出 `[SOLIDIFY_STATUS]``[SOLIDIFY_STATUS_FILE]`,便于 wrapper 集成。
### v1.10.1
- **创新冷却 (Innovation Cooldown)**:在 `analyzeRecentHistory()` 中追踪近期创新目标,并在 GEP 提示词中注入 `Context [Innovation Cooldown]` 段,防止 Hand Agent 在连续周期中反复对同一技能/模块进行创新。
- **信号增强**`analyzeRecentHistory()` 新增 `recentInnovationTargets` 返回值(目标路径到最近 10 轮出现次数的映射)。
### v1.10.0
- **运维模块** (`src/ops/`):从环境相关的 wrapper 中提取 6 个可移植模块:
- `lifecycle.js` -- 进程启停/重启/状态/健康检查
- `skills_monitor.js` -- 技能健康审计 + 自动修复npm install、SKILL.md 生成)
- `cleanup.js` -- GEP 产物磁盘清理
- `trigger.js` -- 唤醒信号机制
- `commentary.js` -- 人格化周期评论
- `self_repair.js` -- Git 紧急修复(终止 rebase、清理过期锁文件
- **可配置进化策略** (`EVOLVE_STRATEGY` 环境变量)
- 4 个预设:`balanced`(默认 50/30/20`innovate`80/15/5`harden`20/40/40`repair-only`0/20/80
- 策略感知的信号过滤,各预设有独立的修复循环阈值
- 向后兼容:`FORCE_INNOVATION=true` 等价于 `innovate`
- **信号去重**:当最近 8 轮中修复占比 >= 50% 时强制创新(阈值随策略变化)
- **工具使用分析**:检测日志中的高频工具使用模式(由 Hand Agent 自动进化产出)
- **源码保护**GEP Section IX核心 .js 文件列为不可修改,防止 Hand Agent 覆写
- **禁止创新区**GEP Section X防止创建与已有基础设施重复的技能进程管理、健康监控、定时任务等
- **已知问题清单**GEP Section VII.6):告知 LLM 跳过已修复的错误
- **鲁棒性提升**MemoryGraph 故障时 `process.exit(2)` 改为 `throw Error()`(循环不再因瞬态错误崩溃)
- **Gene 限制放宽**repair max_files 12->20innovate max_files 8->25
- `paths.js` 新增 `getWorkspaceRoot()``getSkillsDir()``getLogsDir()`
### v1.9.2
- 中间版本,包含策略预设和源码保护机制。
### v1.9.1
- 信号去重(修复比率检查)
- 单例锁PID 锁文件)
- GEP 提示词中注入环境指纹
### v1.4.4
- 增加 validation 命令安全检查Gene validation 命令执行前通过前缀白名单node/npm/npx和 shell 操作符拦截进行门控。
- 增加 A2A Gene 提升审查:外部 Gene 的 validation 命令不安全时拒绝提升。
- 增加安全模型文档。
### v1.4.3
- v1.4.3 发布准备。
### v1.4.2
- 增加 loop 门控:上一轮未完成 solidify 时,不启动新一轮(避免 wrapper 造成超快空转)。
- 修复固化状态写入覆盖问题:写入 last_run 时合并保留 last_solidify。
### v1.4.1
- 增加默认执行桥接:生成 GEP prompt 后输出 `sessions_spawn(...)`,自动派发执行型子智能体。
- 将 prompt 作为交接工件写入 `memory/`,便于稳定交接与审计回放。
### v1.4.0
- 增加显式 Mutation Protocolrepair/optimize/innovate每轮进化必须生成 Mutation 对象并通过安全约束门控。
- 增加 Personality Evolution维护 PersonalityState小幅 PersonalityMutation单次不超过 ±0.2,最多 2 个参数),并基于成功率做自然选择收敛。
- EvolutionEvent 增加 `mutation_id``personality_state` 字段Memory Graph 同步记录 Mutation 与 Personality 的因果链路。
- 新增 `scripts/gep_personality_report.js`,用于统计不同人格配置下的成功率差异与收敛趋势。
### v1.3.1
- v1.3.1 发布准备。
### v1.3.0
- v1.3.0 发布准备。
### v1.2.0
- Memory Graph v2 与 A2A 进化资产交换集成。
### v1.1.0
- public 构建/发布流水线、提示词预算控制与结构化 GEP 资产持久化。
## 安全模型
本节描述 Capability Evolver 的执行边界和信任模型。
### 各组件执行行为
| 组件 | 行为 | 是否执行 Shell 命令 |
| :--- | :--- | :--- |
| `src/evolve.js` | 读取日志、选择 Gene、构建提示词、写入工件 | 仅只读 git/进程查询 |
| `src/gep/prompt.js` | 组装 GEP 协议提示词字符串 | 否(纯文本生成) |
| `src/gep/selector.js` | 按信号匹配对 Gene/Capsule 评分和选择 | 否(纯逻辑) |
| `src/gep/solidify.js` | 通过 Gene `validation` 命令验证补丁 | 是(见下文) |
| `index.js`(循环恢复) | 崩溃时向 stdout 输出 `sessions_spawn(...)` 文本 | 否(纯文本输出;是否执行取决于宿主运行时) |
### Gene Validation 命令安全机制
`solidify.js` 执行 Gene 的 `validation` 数组中的命令。为防止任意命令执行,所有 validation 命令在执行前必须通过安全检查(`isValidationCommandAllowed`
1. **前缀白名单**:仅允许以 `node``npm``npx` 开头的命令。
2. **禁止命令替换**:命令中任何位置出现反引号或 `$(...)` 均被拒绝。
3. **禁止 Shell 操作符**:去除引号内容后,`;``&``|``>``<` 均被拒绝。
4. **超时限制**:每条命令限时 180 秒。
5. **作用域限定**:命令以仓库根目录为工作目录执行。
### A2A 外部资产摄入
通过 `scripts/a2a_ingest.js` 摄入的外部 Gene/Capsule 资产被暂存在隔离的候选区。提升到本地存储(`scripts/a2a_promote.js`)需要:
1. 显式传入 `--validated` 标志(操作者必须先验证资产)。
2. 对 Gene提升前审查所有 `validation` 命令,不安全的命令会导致提升被拒绝。
3. Gene 提升不会覆盖本地已存在的同 ID Gene。
### `sessions_spawn` 输出
`index.js``evolve.js` 中的 `sessions_spawn(...)` 字符串是**输出到 stdout 的纯文本**,而非直接函数调用。是否被执行取决于宿主运行时(如 OpenClaw 平台)。进化引擎本身不将 `sessions_spawn` 作为可执行代码调用。
### 其他安全约束
1. **单进程锁**:进化引擎禁止生成子进化进程(防止 Fork 炸弹)。
2. **稳定性优先**:如果近期错误率较高,强制进入修复模式,暂停创新功能。
3. **环境检测**:外部集成(如 Git 同步)仅在检测到相应插件存在时才会启用。
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=autogame-17/evolver&type=Date)](https://star-history.com/#autogame-17/evolver&Date)
## 鸣谢
- [onthebigtree](https://github.com/onthebigtree) -- 启发了 evomap 进化网络的诞生。
- [lichunr](https://github.com/lichunr) -- 提供了数千美金 Token 供算力网络免费使用。
- [shinjiyu](https://github.com/shinjiyu) -- 为 evolver 和 evomap 提交了大量 bug report。
- [upbit](https://github.com/upbit) -- 在 evolver 和 evomap 技术的普及中起到了至关重要的作用。
- 其余贡献者扩充中。
## 许可证
MIT