已合并
feat(rsi): add evidence-driven recursive harness evolution framework #2497
feat(rsi): add evidence-driven recursive harness evolution framework #2497
已合并
zhitinggao创建于 7 天前
zhitinggao
zhitinggao
7 天前

Paired: GitHub #904GitCode !2497

What type of PR is this?
/kind feature

Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入

Linked Closing Issues:

likedislike
Pull Request已成功合入, 合并人@openJiuwen-bot
(感谢 zhitinggao 的贡献)
zhitinggaozhitinggao
7 天前 关联了issue:[Feature]: Swarm Evolution Self-Evolution Capability Development/swarm evolution自进化功能开发
atomgit-bot
atomgit-bot
7 天前 评论:

🤖 正在生成合并请求摘要,请稍候…

likedislike
atomgit-bot
atomgit-bot
7 天前 评论:

🤖 AI 代码检视正在进行中,请稍候…

likedislike
OopenJiuwen-bot成员
7 天前 将seanzhang_cn,xinyu-jiuwen设为审查人
OopenJiuwen-bot成员
7 天前 添加了label:sig/sig-agent-core
atomgit-bot
atomgit-bot
7 天前 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
openJiuwen-bot成员
7 天前 评论:

欢迎来到 openJiuwen 社区

Hey @AFSDFASD , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

联系指引

有疑问可以联系 SIG: sig-agent-core ,
维护者是: @seanzhang_cn, @xinyu-jiuwen ,
审核者是: @alan_cheng, @deyang, @iamcandiceguo, @yangzequ .

likedislike
OopenJiuwen-bot成员
7 天前 添加了label:openJiuwen-cla/yes
Oopenjiuwen-sync成员
7 天前 修改了pull request 的描述
Oopenjiuwen-sync成员
7 天前 修改了pull request 的描述
atomgit-bot
atomgit-bot
7 天前 评论:

⚠️ 本次变更过大(46 个可审文件、31090 行,预估需 26 轮分片审查),已超出 AI 代码评审的处理范围,本次跳过。建议拆分为更小的 PR 以获得有效评审。

likedislike
atomgit-bot
atomgit-bot
7 天前 评论:

⚠️ 本次变更过大(46 个可审文件、31090 行,预估需 26 轮分片审查),已超出 AI 代码评审的处理范围,本次跳过。建议拆分为更小的 PR 以获得有效评审。

likedislike
openJiuwen-bot成员
7 天前 评论:

The pipeline(pipeline number:2497) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
7 天前 添加了label:ci-running
OopenJiuwen-bot成员
7 天前 删除了label:ci-running
openJiuwen-bot成员
7 天前 评论:
任务名称 结果 日志操作
静态检查 ❌FAILED 点此跳转
禁用词扫描 N/A N/A
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A
likedislike
OopenJiuwen-bot成员
7 天前 添加了label:ci-failed
zhitinggaozhitinggao
7 天前 强制推送  1 个提交:e1f692e7-feat(rsi): add evidence-driven recursive harness evolution framework
OopenJiuwen-bot成员
7 天前 删除了label:openJiuwen-cla/yes
OopenJiuwen-bot成员
7 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
7 天前 评论:

The pipeline(pipeline number:2497) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
7 天前 删除了label:ci-failed
OopenJiuwen-bot成员
7 天前 添加了label:ci-running
OopenJiuwen-bot成员
7 天前 删除了label:ci-running
openJiuwen-bot成员
7 天前 评论:
任务名称 结果 日志操作
静态检查 ❌FAILED 点此跳转
禁用词扫描 N/A N/A
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A
likedislike
OopenJiuwen-bot成员
7 天前 添加了label:ci-failed
zhitinggaozhitinggao
7 天前 强制推送  1 个提交:0c4f0e19-feat(rsi): add evidence-driven recursive harness evolution framework
OopenJiuwen-bot成员
7 天前 删除了label:openJiuwen-cla/yes
OopenJiuwen-bot成员
7 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
7 天前 评论:

CLA 签署成功

AFSDFASD, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
openJiuwen-bot成员
7 天前 评论:

The pipeline(pipeline number:2497) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
7 天前 删除了label:ci-failed
OopenJiuwen-bot成员
7 天前 添加了label:ci-running
OopenJiuwen-bot成员
7 天前 删除了label:ci-running
openJiuwen-bot成员
7 天前 评论:
任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
禁用词扫描 N/A N/A
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A
likedislike
OopenJiuwen-bot成员
7 天前 添加了label:ci-successful
yangzequ成员
7 天前 评论:

PR #2497 检视报告

主题:证据驱动的递归 harness 演化(RSI evidence loop)
规模:48 个文件,+31649 / -1601,新增 262 个单元测试


一、实现逻辑梳理

本 PR 构建了一条「证据 → 因果假设 → 干预 → 反馈 → 改进者演化」的闭环,核心模块如下:

1. 证据压缩(evaluation_result_analyzer/evidence_compactor.py,新增)

  • build_causal_evidence_digest() 生成确定性压缩包(no_llm_summarization: True),保留 trial 边界、精确数字、结构化工具参数;按「失败优先/状态变更/内容承载读/终端窗口」动态选取动作。
  • 响应摘要在策略里显式声明为 display views(非 task-agent observations),并在 ANALYZER_EVIDENCE_COMPACTION 标记中保留 raw evidence pointers —— 防止把压缩视图当作因果证据。
  • _compact_trial_evaluation() 对缺失的 grader 字段标记 not_instrumented 而非当作 0,避免制造虚假对比。

2. 因果调查(evidence_investigation.py,新增)

  • execute_causal_investigation() 只执行控制器持有的只读证据操作(check_relation / compare_numeric_change / search_trace / inspect_artifact / search_repository 等),策略声明 arbitrary_shell_or_path_access: False
  • 路径安全:所有文件读取经 resolve() + is_relative_to(root/case_dir) 校验,可抵御符号链接逃逸;Windows 长路径有 _windows_long_path 处理。
  • inspect_artifact 刻意排除 evaluation metadata —— 修复了「判分描述被当作工件存在证明」的假证据问题。

3. 诊断流程与假设门槛(analyzer.py + member_optimizer/hypothesis.py

  • 诊断 agent 先产出调查计划 → 控制器执行证据操作 → 生成最终诊断;causal_investigation_required=True(默认)下无调查不得出诊断;截断 JSON 归类为 RetryableModelOutputError 触发重试。
  • compile_optimization_hypotheses()(v3→v4)新门槛:evidence_status=confirmed 且存在 unresolved 假设 → 跳过;supported_hypothesis 允许与未决备选共存(有明确注释与测试背书);verification_status != verified 的假设不能绑定优化目标。旧版「唯一 supported 即绑定」保留为向后兼容路径。

4. 需求结果统一(evaluator/requirement_results.py,新增)

  • 用统一的 per-requirement 结果替换原先 FAIL_TO_PASS/PASS_TO_PASS/atomic_checks 三套解析;_verifier_deltas_by_case() 改写在其上,partial_progress 定义收敛为「有新通过且无回归」。

5. 改进者演化(improver_evolution/,新增包)

  • VersionedImproverPolicy:不可变、可序列化、带 canonical digest 的策略快照,父子版本链 + training_ledger_digest 锚定训练数据。
  • feedback_analysis.py:跨 cohort 聚合候选反馈账本(min_support_cohorts 门槛),产出稳定模式与高价值增益信号。
  • meta_validation.py:成对未见 checkpoint 上的宏平均对比(best-of-k gain / top-m gain / selection regret / 回归率 / 基础设施失败率),非退化容差 + 指标全有或全无原则 + offline_rerank 模式明确「仅 ranker 证据、不可晋升完整改进者」。

6. 兄弟候选与反馈账本(single_harness/

  • rank_candidate_proposals()评估前冻结排名(static_priority_v1:executable/coverage/atomicity/duplicate 四特征),语义指纹去重;build_candidate_feedback_cohort() 产出 Ledger v1 cohort,搜索指标(best-of-k、top-m、selection regret)只在「排名冻结 + 身份一致 + 增益完备」时计算,否则给出明确 unavailable 原因(共 12 类)—— 反事实指标诚实性做得扎实。
  • cohort manifest 以输入身份(parent refs、eval ref、hypotheses、frozen cases、policy digest)幂等复用,重试安全。

7. 执行契约与原子束(member_optimizer/execution_contract.py,新增)

  • evaluate_role_execution() 统一判定动作满足性:直接成功 / dependency_failed 回退被跳过 / 失败主动作被成功回退替代;同束(role+单 issue)任一失败时,action_executor 将成功的部分结果降级为 not_merged,verification 增加 role_action_bundle: 检查且列入不可修复前缀 —— 杜绝半合并候选。

8. 其他

  • rail 动作组全链路支持(scaffold / rails.yaml manifest 规范化 / deterministic remove / 校验)。
  • model_call.py:transient 标记扩充(网关 5xx、连接错误、限流、DB 启动中)、状态码正则、指数退避(1s 起、10s 封顶、RetryableModelOutputError 不延迟)+ warning 日志。
  • team_evaluator.py:基础设施异常按 transient 标记重试(退避 min(2^n,4)s,清理 case 输出目录)。
  • trajectory_usage.py:支持 OpenAI 风格 messages 轨迹;python/code 工具与 save/to_csv/to_excel/to_json/to_parquet 纳入持久编辑判定。
  • harness 模板新增 SubmissionCheckpointRail(反例审计 + 绑定审计 + 语义发布违规拦截),带模型调用预算与超时上限。
  • data_loader.load_files() 支持显式冻结数据集文件,隔离同目录其他 split。

二、发现的问题

N1(中)_resume_fingerprint_matches 的 12→13 迁移分支在生产不可达

_initial_fingerprint 已从 version 10 升到 18,而迁移分支要求 requested.optimization_chain_version == 13 才生效 —— 生产请求恒为 18,该兼容路径永远不会命中,仅被单测直接调用(test_default_i0_can_resume_pre_policy_chain_state)。同时所有旧状态(v10 及中间开发版)resume 均抛 ValueError。若「跨版本一律失效」是本意,建议删除死分支或在 PR 描述中明确 resume 不兼容;若希望保留迁移能力,应将迁移目标与当前版本解耦。

N2(低)model_call.py 重试策略三点

  • _TRANSIENT_STATUS_RE409 列为 transient:持续性 409(如冲突操作)会被重试满 21 次(约 3 分钟)才暴露。
  • 退避无 jitter:并发 case 同时命中 429 时步调一致重试,放大网关压力(team_evaluator 重试同样无抖动)。
  • _TRANSIENT_CONNECTOR_BACKEND_MARKERS 先于 non-retryable 检查:同时含 DB 启动标记与 "invalid api key" 的消息会重试。标记足够窄、风险低,但把 non-retryable 放最前更稳妥。

N3(低)trajectory_usage._successful_tool_steps 行为变化

命中顶层 steps/messages 容器后不再深入 step 内部嵌套结构(旧实现会递归,可能重复计数)。新语义有测试覆盖,但依赖嵌套扫描的旧轨迹格式 usage 计数会静默下降,建议在变更说明中提示。

N4(信息)严格证据门槛的兼容性影响

causal_investigation_required=True 默认 + 假设需 verification_status=verified:旧版 analyzer 产物(无 verification_status 字段)不再产生优化目标,管线在候选生成前停止(有对应测试)。这是 PR 的核心意图,但运维侧需知晓旧 analysis ref 无法继续驱动优化。

N5(信息)harness 控制器成本

SubmissionCheckpointRail 每任务额外执行反例 + 绑定两次审计模型调用;已有 _max_controller_model_calls 与超时上限兜底,评估单 case 成本会上升,属预期权衡。


三、亮点

  1. 反事实指标的诚实性:排名先冻结后评估 + 12 类显式 unavailable 原因,杜绝用事后信息美化搜索指标。
  2. 证据与观测分离:压缩视图、判分描述均不得冒充任务观测,从源头堵住「重复结局描述伪装因果证据」。
  3. 原子性贯彻到底:cohort 冻结、动作束全有或全无、不可修复前缀收敛修复循环。
  4. 路径安全:证据调查全程 resolve + is_relative_to 校验,防符号链接逃逸。
  5. 测试覆盖充分(262 个新测试),关键契约(幂等、迁移、门槛、去重)均有针对性用例。

结论:整体设计严谨、防御性到位,问题以中低严重度为主。N1 建议合入前澄清(删死代码或说明 resume 破坏性);N2/N3 可后续跟进。

likedislike
yangzequ成员
7 天前 评论:

/lgtm

likedislike
OopenJiuwen-bot成员
7 天前 添加了label:lgtm-yangzequ
openJiuwen-bot成员
7 天前 评论:

Review Code Feedback

  • The label lgtm-yangzequ was added to this pull request. It means that yangzequ reviewed the code changes. 👋
Tips
  • If this pull request is not merged while all conditions are met, comment /check-pr to try again. 😄
likedislike
程烁
程烁成员
7 天前 评论:

/lgtm
/approve

likedislike
OopenJiuwen-bot成员
7 天前 添加了label:approvedlgtm-alan_cheng
openJiuwen-bot成员
7 天前 评论:

Review Code Feedback

  • The label lgtm-alan_cheng, approved was added to this pull request. It means that alan_cheng reviewed the code changes. 👋
Tips
  • If this pull request is not merged while all conditions are met, comment /check-pr to try again. 😄
likedislike
OopenJiuwen-bot成员
7 天前 合入了pull request
yangzequ成员
6 天前 评论:

/approve

likedislike