Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gate 3:公开 Benchmark 上的共享 Harness 自进化

2026-08-11 更新:当前主实现改为“有限预算下的选择性组件进化”。旧 v3–v5 prompt 实验保留为研究过程和可导入轨迹,但不再作为主框架。新入口是 evolve_bsc.py:元智能体只提出一个类型化组件修改;固定程序维护失败缓存、影响图、 多阶段评测、预算、接收和回滚。

2026-08-12 更新:候选生成前增加行为与组件定位。固定程序先从公开轨迹判断问题发生在哪个 执行阶段,再用历史关系、运行时触发和离线回放排序现有组件;修改/删除已有组件前可运行一次 小规模组件关闭试验。元智能体不能绕过定位范围自由选择修改位置。

2026-08-08 更新:v1 的单次最小修改和 v2 的固定快/中/慢更新时间均未进入正式实验。当前方法改为 v3:每轮先更新提示词;经过多批公开任务验证的提示词做法,必须在移除对应提示词后由可执行组件独立复现,才能转为正式组件;组件的删除建议累计到阈值后,还需通过关闭组件的配对验证才能删除。

2026-08-09 更新:v4 在 v3 上加入“每个任务结束后写一份反思、整批结束后才更新共享 harness”。任务代理、逐任务反思代理、批量元智能体和官方 evaluator 使用分离指令。逐任务反思不回写同批任务;成功和失败轨迹全部保留。

本目录研究三个问题:

  1. 同一个 harness 能否从多个公开 benchmark 学习,而不让不同领域相互伤害;
  2. harness 能否主动合并、替换和删除旧修改,而不是一直增长;
  3. 修改能否在严重退步、运行成本和安全限制下被可靠接收或回滚。

当前主代码(BSC v1)

  • bsc_evolution/:完整进化框架;
  • evolve_bsc.py:统一命令行入口;
  • configs/bsc_evolution_v1.json:冻结预算、任务层级和接收条件;
  • configs/bsc_tau2_task_catalog_v1.json:只含公开 train ID 的任务目录;
  • configs/bsc_behavior_map_v1.json:执行阶段、组件类型和当前实现位置的可核对关系;
  • configs/ablations/:关闭定位或只保留行为地图的冻结对照配置;
  • prompts/meta_agent_bsc_v1.md:由整体到细节、每次只提交一个修改的元智能体指令;
  • prompts/task_mutation_agent_v1.mdprompts/task_mutation_validator_v1.md:彼此隔离的 改题与正确性审查指令;
  • protocols/budgeted_selective_component_evolution_v1.md:科研假设、对照和数据边界;
  • protocols/bsc_experiment_plan_6day_v2.md:当前方案、仅地图方案和完整定位方案的六天公开 benchmark 对照、完整性审计和独立复制计划;
  • scripts/run_tau2_bsc_adapter_v1.py:接入官方 τ2 evaluator;
  • run_bsc_initialize_v1.shrun_bsc_ingest_results_v1.shrun_bsc_generate_blind_mutations_v1.shrun_bsc_tau2_round_with_mutations_v1.shrun_bsc_final_evaluation_v1.sh:初始化、导入旧 轨迹、冻结盲测题、运行一轮和一次性最终评测。

新框架不会因为元智能体说“保留”就接收组件。候选依次经过修改前定位、静态检查、历史轨迹回放、 改写题辅助筛选、受影响任务与固定 sentinel、完整 component_validation。只有全部程序门 通过才切换 active 版本;fixed_acceptance 在 harness 冻结前保持关闭。改写题只用于筛选, 不计入官方 benchmark 主结果。

默认运行链会在完整接收后自动把 prompt_update/targeted 轨迹送入下一轮分析。被拒候选只 留下独立反例,完整 component_validation、生成改写题和最终集都不会进入学习。Debugger 收到的是固定程序抽取的匿名化因果片段,不再把一个无法读取的本地路径当作模型证据。

相同父版本的官方评测不会在每个候选中重复运行。缓存键同时包含 bundle 哈希、公开任务、 seed 和冻结运行配置哈希;模型或配置变化会失效。报告把实际新运行次数与缓存复用次数分开, 并同时限制单轮预算和整个实验预算。

接收统计以“公开任务”为单位:同一任务的多个 seed 先在任务内汇总,再计算任务级回归率和 固定 5000 次配对 bootstrap 区间,避免把 seed 当成额外独立样本。

最短运行路径

export TAU_ROOT='/absolute/path/to/tau2-bench'
export TAU_PYTHON="${TAU_ROOT}/.venv/bin/python"
export BSC_EXPERIMENT='/absolute/path/to/experiments/bsc_tau2_run1'

bash ./run_bsc_initialize_v1.sh "$BSC_EXPERIMENT"
bash ./run_bsc_ingest_results_v1.sh "$BSC_EXPERIMENT" 1 old_result.json

export META_BASE_URL='填写元智能体 base_url'
export META_API_KEY='填写元智能体 api_key'
export META_MODEL='填写元智能体模型名'
export BASE_URL='填写任务模型 base_url'
export API_KEY='填写任务模型 api_key'
export MODEL='填写任务模型名'
export MODEL_COST_USD_KNOWN='false' # provider 的每次响应费用可核验时才改为 true

export MUTATION_BASE_URL='填写改题模型 base_url'
export MUTATION_API_KEY='填写改题模型 api_key'
export MUTATION_MODEL='填写改题模型名'
export MUTATION_VALIDATOR_BASE_URL='填写独立审查模型 base_url'
export MUTATION_VALIDATOR_API_KEY='填写独立审查模型 api_key'
export MUTATION_VALIDATOR_MODEL='填写不同于改题模型的模型名'

# 正式成本门还需在初始化前,把 configs/bsc_evolution_v1.json 中 meta_agent 和
# mutation_validation.agents 的 token 单价 null 改为实际价格;未知价格会如实阻止候选接收。

bash ./run_bsc_generate_blind_mutations_v1.sh "$BSC_EXPERIMENT"
bash ./run_bsc_tau2_round_with_mutations_v1.sh "$BSC_EXPERIMENT" 1 --dry-run
bash ./run_bsc_tau2_round_with_mutations_v1.sh "$BSC_EXPERIMENT" 1

如果定位报告中已有相关组件,第一次 --dry-run 只规划组件关闭试验并停止,不会提前调用 元智能体。随后不带 --dry-run 再运行同一轮,完成定位试验后才会生成候选。

服务器安装、续跑、缓存和回滚命令见 SERVER_SETUP.md。示例组件在 examples/,只说明格式, 不会加入活跃 harness。

当前状态

  • v1 与 v2 作为停止的设计记录保留,不作为当前方法。
  • v3 的核心对象是提示词规则和可执行组件,不再预先规定三种更新时间。
  • 元智能体可以更新提示词、提出组件转化和提出组件删除,但不能决定接收或删除。
  • 接收、拒绝和回滚由固定程序根据公开 benchmark 的官方 evaluator 决定。
  • τ2-bench train 已按任务 ID 的 hash 固定为四个互斥部分;未读取 test 内容。
  • Round 0 共享提示词规则数为 0;四任务基础轨迹 smoke 已通过,4/4 轨迹完整且官方得分为 1.0。
  • Round 1 元智能体证据包已冻结;基础成功只记作观察,不记作新规则的正向因果证据。
  • Round 1 已产生一条候选规则 confirm_before_irreversible;当前父提示词仍为空,候选尚未接收。
  • Round 1 候选在两项独立配对任务上均无得分增益,已拒绝;当前父提示词仍为空。
  • Round 2 第一批四项经验任务已完成:三项成功、一项真实失败;二者都作为元智能体经验,而不是只从失败学习。
  • 后续任务已在候选生成前按公开结构信息冻结为低、中、高三档;该分档是结构复杂度近似,不冒充官方难度标签。
  • Round 2 分层经验批次已完成:18/18 轨迹完整,官方成功 16/18。固定程序不再判断哪条轨迹适合学习,全部成功与失败轨迹均提供给元智能体。
  • 合并此前批次后共有 26 次运行、24 个不同公开任务、23 条官方成功观察和 3 条官方失败观察;这些只是原始结果标签,不是固定程序给出的学习权重。
  • 此前生成的轨迹质量审计不再参与学习样本选择或候选接收;是否从某条轨迹学习由元智能体决定。
  • 下一批扩大到冻结 prompt_update 的全部 40 个任务,并使用新主种子运行;不会占用 prompt_validation 或 test。
  • 全量 40 项已经完成:40/40 轨迹完整,官方成功 35 项、失败 5 项;共享提示词仍为空,因此这里只是经验批次,不是候选提升证据。
  • v4 已冻结逐任务反思协议:每条轨迹评分后单独反思,40 条反思全部完成后才允许元智能体提出一条候选;反思不读取隐藏 evaluator 内容,也不筛掉任何完整轨迹。
  • v4 初次校验只有 18/40 通过;22 条无效中 19 条是普通任务词汇被错误地当成最终提示词特化,另有 2 条数组长度和 1 条消息序号问题。
  • v4.1 将严格领域无关校验留在最终共享规则,逐任务反思允许普通任务词汇,但仍禁止 benchmark/领域名、精确工具函数和具体标识符。旧响应按固定的“最早通过响应”规则重新校验后 40/40 有效:39 条选择原第 1 次响应、1 条选择原第 2 次响应,新增模型调用为 0。
  • v4.1 批量证据包保留全部 40 条轨迹、40 份反思及 655 个被引用消息事件;只对重复消息内容做确定性压缩,没有筛选轨迹或反思。
  • v4.1 批量元智能体第 3 次响应通过,产生隔离候选 verify_identifier_mismatch;前两次只因把一个官方失败轨迹放进“好轨迹”列表而被拒绝。候选主要从成功轨迹总结“编号不匹配时核实或使用替代信息”,当前 parent 仍为空。
  • 下一配对 pilot 已冻结全部未使用的 prompt_validation:Retail 14 项、Airline 5 项,共 19 对、38 次运行。任务集合不依据候选内容或既有结果筛选。
  • 尚未产生 v3 科学实验结果。

公开 Benchmark

第一阶段只使用本地已经固定版本的官方 sierra-research/tau2-bench

  • Retail
  • Airline

它们共享对话与工具交互形式,但政策和工具不同,适合先检查跨领域干扰。后续确认实验加入:

  • AppWorld:状态化应用操作及意外副作用检查;
  • BFCL V4:多轮工具调用迁移测试;
  • GAIA:最终冻结 harness 的一次性外部迁移测试。

官方主结果不会混入生成任务。改题代理只从公开开发任务生成辅助筛选题;程序锁定官方初态、 目标状态和 evaluator,并用独立代理审查语义。开发证据、辅助改写题、接收验证和最终测试 严格分开。

文件

  • protocols/meta_agent_v1_protocol.md:元智能体的职责、输入、输出与禁止事项。
  • protocols/experiment_plan_v1.md:公开 benchmark、对比方法、指标和消融实验。
  • prompts/meta_agent_v1.md:模型提示词。
  • schemas/meta_agent_proposal_v1.schema.json:提案格式。
  • configs/public_benchmarks_v1.json:公开 benchmark 与数据使用边界。
  • scripts/validate_meta_proposal.py:不调用模型的提案校验器。
  • tests/test_validate_meta_proposal.py:校验器测试。
  • results/table_templates.md:只含 TBD 的结果表。
  • protocols/prompt_to_component_v3_protocol.md:当前方法的完整规则。
  • protocols/experiment_plan_v3.md:公开 benchmark、对比、四组对照和删除实验。
  • configs/prompt_to_component_v3.json:提示词验证、组件转化和删除阈值。
  • prompts/meta_agent_v3.md:元智能体的宽泛提示词、组件和评测选择约束。
  • prompts/component_builder_v3.md:证据门通过后,把一个规则写成一个组件并移除来源提示词。
  • schemas/meta_agent_actions_v3.schema.json:元智能体输出格式。
  • schemas/component_candidate_v3.schema.json:第二次元智能体调用的组件补丁格式。
  • core_v3/:不允许元智能体修改的组件接口、证据计数和删除记录骨架。
  • scripts/validate_meta_actions_v3.py:不调用模型的 v3 输出校验器。
  • scripts/validate_component_candidate_v3.py:检查组件补丁是否绑定已选建议并确实移除来源规则。
  • results/table_templates_v3.md:只含 TBD 的 v3 结果表。
  • design/open_source_code_audit.md:从公开实现中提取的共同骨架。
  • protocols/tau2_train_partition_v3.md:τ2 公开 train 的四部分固定划分。
  • results/tau2_train_partition_v3.json:冻结任务 ID、核心哈希和安装来源审计。
  • harness/system_prompt/shared_rules_v3.md:每轮至多更新一条的共享提示词规则;Round 0 为空。
  • scripts/collect_tau2_baseline_v3.py:只运行 prompt_update 任务并调用官方 evaluator 的基础轨迹采集器。
  • run_tau2_baseline_plan_v3.sh:无 API 的任务选择检查。
  • run_tau2_baseline_smoke_v3.sh:四任务模型 smoke。
  • run_tau2_baseline_repair_v3.sh:保留已完成轨迹,只补失败单元并显式配置官方自然语言 evaluator。
  • scripts/build_round1_evidence_v3.py:把通过的完整轨迹转成可审计的 Round 1 元智能体证据包。
  • results/round1_evidence_v3.json:含四条压缩轨迹视图、原始轨迹哈希和父 harness 哈希。
  • run_meta_agent_round1_v3.sh:调用元智能体提出第一条宽泛提示词候选,并运行格式与证据硬校验。
  • results/meta_agent_round1_v3_audit.md:检查候选规则与它引用的原始轨迹是否一致。
  • candidates/round1/harness/system_prompt/shared_rules_v3.md:隔离保存的单规则候选,不覆盖当前父提示词。
  • run_round1_prompt_pair_smoke_v3.sh:在未参与生成的提示词验证任务上运行 parent/candidate 配对 smoke。
  • results/prompt_rule_ledger_v3.json:记录每条候选的状态、配对证据和拒绝原因。
  • run_round2_discovery_batch1_v3.sh:在未使用的公开提示词更新任务上寻找真实失败,避免继续从满分轨迹猜规则。
  • protocols/tau2_difficulty_stratification_v3.md:规定低、中、高结构复杂度分层,以及成功和失败轨迹的不同用途。
  • scripts/build_tau2_difficulty_strata_v3.py:不调用模型,按冻结规则生成分层与任务清单。
  • results/tau2_difficulty_strata_v3.json:经验采集和独立配对验证的预先冻结任务清单。
  • run_round2_experience_stratified_v3.sh:一次运行两个领域各三个层级、每层级三项的 18 项经验任务。
  • scripts/build_round2_evidence_v3.py:合并 26 次公开任务运行,不按成功或失败预筛轨迹。
  • results/round2_trajectory_quality_audit_v3.json:已退出学习流程的历史分析,不作为轨迹可用性标签或接收依据。
  • results/round2_evidence_v3.json:全部完整轨迹均可被引用的压缩经验包。
  • run_meta_agent_round2_v3.sh:由元智能体自行选择成功或失败轨迹提出宽泛规则,并禁止重复已拒绝规则。
  • protocols/full_prompt_update_replication_v3.md:规定全量 40 任务复制和“不预筛学习轨迹”的边界。
  • results/tau2_full_prompt_update_replication_selection_v3.json:冻结的 Retail 29 项、Airline 11 项全量运行清单。
  • run_round3_full_prompt_update_replication_v3.sh:使用新主种子运行全量 40 项公开更新任务。
  • protocols/per_task_reflection_batch_update_v4.md:逐任务反思与按批更新的输入、输出和角色边界。
  • prompts/trajectory_reflector_v4.md:只分析一条已结束轨迹的反思指令。
  • prompts/meta_agent_v4.md:同时读取完整批次与逐任务反思、但不直接接收修改的更新指令。
  • schemas/trajectory_reflection_v4.schema.json:逐任务反思格式。
  • scripts/collect_round3_reflections_v4.py:对 40 条冻结轨迹逐条反思,支持 schema retry 和断点续跑。
  • scripts/revalidate_round3_reflections_v4_1.py:不修改旧响应,按修订后的反思边界选择最早通过的原始响应,并记录完整迁移审计。
  • scripts/build_round3_reflection_evidence_v4.py:把全部轨迹、全部反思和反思引用的消息片段组成批量证据包。
  • scripts/call_meta_agent_round3_v4.py:只在 40/40 反思通过后提出一条宽泛提示词候选。
  • scripts/build_round3_prompt_candidate_v4.py:隔离生成候选文件,不覆盖当前 parent。
  • run_round3_reflect_and_propose_v4.sh:一条命令顺序执行反思、证据构建、批量更新和候选隔离;内部角色指令仍然分离。
  • results/round3_per_task_reflections_v4_1.json:40/40 通过的 v4.1 重校验结果,记录旧文件哈希和零新增调用。
  • results/round3_reflection_evidence_v4_1.json:供批量元智能体使用的完整压缩证据包。
  • results/meta_agent_round3_reflection_v4_1_audit.md:候选、三次响应和四条核心证据的人工可读审计。
  • protocols/round3_reflection_candidate_pair_v4_1.md:19 对独立公开任务的 pilot 接收门。
  • scripts/build_round3_full_prompt_validation_selection_v4_1.py:冻结所有未使用的 prompt_validation 任务。
  • results/round3_full_prompt_validation_selection_v4_1.json:Retail 14、Airline 5 的完整独立配对清单。
  • scripts/compare_round3_reflection_prompt_pair_v4_1.py:检查19对运行公平性、领域结果、严重退步和描述性区间。
  • run_round3_reflection_prompt_pair_pilot_v4_1.sh:运行 parent/candidate 共38次并生成比较结果。
  • run_round3_reflection_prompt_pair_repair_v4_1.sh:保留初次工程失败快照,只重跑 Candidate 的唯一失败任务,然后生成19对比较结果。

不可修改的部分

元智能体不能修改:

  • benchmark 任务、官方 evaluator 和 benchmark adapter;
  • 数据划分和最终测试集;
  • 基础模型、API 地址、temperature、token/step 预算;
  • 接收门、统计代码、日志和成本记录;
  • 权限边界和 sandbox。

这些限制防止系统通过改 evaluator、增加预算或读取测试集制造虚假进步。

下一道实验门

旧 v4/v5 prompt 候选不再直接写入 active harness。下一步是在 BSC 实验目录中导入已完成的 公开 τ2 轨迹,由增量 debugger 生成第一份证据包;元智能体提出一个类型化候选后,先检查 --dry-run 的选择性任务与预算,再运行正式漏斗。当前代码就绪不等于方法已经有效,科学 结论要等多个候选、多个 seed 和完整 component_validation 的真实结果。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages