ScienceClaw 自我进化是在 packages/scienceclaw/scienceclaw/evolution/ 下的 Python 引擎中权威实现的功能。网关代理提供工作内容(画布会话)并通过 scienceclaw_evolve 启动门禁;引擎提供类型化程序、回放、凭证以及准入/拒绝决策。语言模型从不被训练:只有程序 A = (技能, 类型化算子) 作为带版本、可逆的存储发生变化。
主要能力
- 从一次完成的、经回放验证的画布会话(作为源片段 D_src)学习,生成技能/算子候选
- 支持验证集 D_val:用户注册的代表性任务(至少两个,且与源任务不相交)
- 提供 propose、gate、run 等后台操作,以及 status 轮询
- 门禁进行源任务重解(R_src = Pass ∧ Use)和验证任务对比(当前程序 vs 候选,冻结模型)
- 严格接受条件:所有硬约束满足、成本在绝对和相对预算内、成功率(MacroSR)严格提升且至少 min_improved_episodes 个验证任务改善
- 晋升、回滚、历史查看等程序管理操作,所有晋升均带凭证
- 噪声防护:默认 min_improved_episodes=2,max_regressed_episodes=1
使用方式
- 通过 scienceclaw_canvas 完成一个任务,获得回放验证的会话。
- 使用 scienceclaw_evolve 的 val_add 至少注册两个验证任务(任务声明或已通过会话的 sessionId),需与源任务不相交,且用户确认代表性。
- 使用 operation=propose(或 run)从会话的修复过程(经回放验证的失败+修复编辑)构建链接的技能/算子包。
- 使用 operation=gate 进行门禁:重解源任务,然后在冻结模型下用当前程序和候选分别解验证任务。
- 通过 operation=show 查看决策和原因。若准入,用户通过 scienceclaw live promote <id> 晋升(或插件配置中启用 autoPromote)。
- 可通过 scienceclaw_program(operation=rollback) 或 scienceclaw live rollback <version> 回滚。
用户侧命令行(代理工具之外):scienceclaw live candidates|show|promote|rollback|history(等价于 python -m scienceclaw.cli live ...)。
适用场景
- 从已完成的、经回放验证的会话中提取可复用技能或算子
- 对程序变更进行严格验证,确保不降低质量
- 需要版本化、可审计、可回滚的程序演进
- 用户拥有代表性验证任务集,希望程序在特定任务分布上逐步改进
限制与注意事项
- 这些工具均不暴露 shell。不要手动编辑已晋升的 AgentProgram,不要将成功的实时求解视为晋升证据:变更只能通过门禁进入程序。
- 验证任务必须由用户确认为代表性,且与候选学习来源任务不相交;引擎拒绝在自身源上验证候选。验证任务输入文件变更会导致门禁阻塞,需重新注册。
- 没有回放验证的失败则不会形成技能候选。
- 门禁严格:需所有验证任务满足硬约束(模式、完整性、可复现性检查、无求解器错误),成本在绝对和相对预算内,且 MacroSR 严格提升并达到 min_improved_episodes 改善数。
- 验证集小于阈值无法准入候选。
- 源或边界回放失败、候选实际未被使用、硬约束/模式/完整性/可复现性门禁失败、超预算或比较非严格提升时,候选被拒绝并记录。
- 模型中断不是拒绝证据:候选保持 pending(阻塞)并记录原因,可再次门禁。验证任务不足、源任务是验证任务之一、或活动程序在候选下发生变化时,门禁也保持 pending。
- 候选依赖于预训练模型或外部服务时,需记录模型标识、许可/授权状态、内容哈希和回退行为;不得静默下载权重或转发网关凭证。
- 技能补丁模型写入技能时,要求明确适用性、编号步骤、陷阱、链接的工具/算子引用和来源溯源。实例特定令牌(任务和会话 ID、绝对路径)在存储前被清除。生成的技能可能改变检索,但不得改变任务的约束或接受规则。
- 保留候选记录、包、门禁报告和晋升凭证于引擎状态目录(home);scienceclaw_program(operation=history) 列出晋升。保持可追溯性,不要为常规运行创建额外审计文档。