Skip to content

fix: 整理各步骤独立预算并限制记忆配对积压 - #120

Merged
leafliber merged 2 commits into
mainfrom
fix/consolidation-step-budgets
Oct 17, 2026
Merged

leafliber merged 2 commits into
mainfrom
fix/consolidation-step-budgets

Conversation

@leafliber

@leafliber leafliber commented Oct 17, 2026 •

Copy link
Copy Markdown
Member

记忆配对耗尽共享的 50 次额度时,人物摘要与 persona 会长期得不到执行机会。本次按 CO-07/CO-08/CO-09/CO-10 将四步额度独立,并给待处理 pair 设置 2000 项上限。

consolidation API 字段 默认值 范围/依据
max_calls 300 严格整数 0—1000,仅用于记忆合并/矛盾/依赖;规划者指定
entry_profile_max_calls 60 严格整数 0—1000;EF-15 六入口 P95=9,上线已有 12 个群入口且还会增加,按 CO-10 留出容量
person_summary_max_calls 40 严格整数 0—1000;EF-02 两次 16 调用及 PS1 十人 20 调用,P95=19.6,×2 向上取整
persona_max_calls 30 严格整数 0—1000;为 #61 的分句依据检查与复查留出容量,公开 v1/v2 平均约 5.8/8.8 次/候选

CO-10 审查后调整入口画像和 persona 两项默认值:EF-15 只含 6 个入口,而上线已有 12 个群入口且还会增长,原上限 18 可能让部分入口每天轮不到;现有 persona 确定性测试 P95=3 低估了尚未合并的 #61,规划者汇总其公开 persona_v1/v2 为 133 次/23 个候选、265 次/30 个候选,平均约 5.8/8.8 次(含检查与复查),原上限 6 会再次造成预算跳过。默认上限改为 60/30,记忆 300、人物摘要 40 保持不变。这些是每轮调用上限,不代表常规用量;HTTP 重试和 JSON 修正仍各计一次。完整依据写入 README。没有运行真实模型或 CPU 压测。

每个实际请求在事务外调用,准入按 purpose 从持久账本计数;预检不扣次数,重启保留快照和已用额度。每日 token 限额、暂停及停止信号先于各步额度,一步用尽后其他步骤仍可运行。生成重试/修正保留检查名额,原修订/版本写回检查不变。新运行快照含四项上限,旧快照缺新键时读默认值但不改原文。

迁移 034_consolidation_step_budgets.sql 只将“值为整数 50 且没有任何 consolidation_settings_saved”的历史默认升级为 300。管理员保存过整理设置,包括只改开关或显式保存 50,均保持原值;其他字段、历史迁移、db.py 和已有运行快照不动。核实唯一产品管理写入路径为带该操作记录的设置 PATCH;首次设置不写整理设置,数据库导入/定时备份保留设置与审计记录。直接 SQL/内部 Store.set_setting 的无审计 50 无法和历史默认区分,也会升级。

规划按 importance 降序、changed_at 降序、id 升序保留前 2000 个 pending/classified/decided pair,其余终态 backlog_trimmed,不写 receipts、不改记忆;任一侧以后语义/扫描指纹变化可重新规划。依赖任务不修剪,每轮 128 个新种子和 256 项工作快照上限不变。修剪与计数同事务,报告不重复累计。

UX 接口:GET /admin/api/settings 的 consolidation 对象返回上述字段;PATCH /admin/api/settings/consolidation 部分更新,0 只停对应步骤,改动只影响后续新运行。预算报告 items[].outcome=model_step_budget、details={step,max_calls,calls_used},step 为 entry_profile/memory/person_summary/persona,停止原因在 reason。修剪报告的 outcome/reason 为 backlog_trimmed,details 为 count/limit。summary.model_calls 仍为四步合计;consolidation.skip_reason 仍为记忆阶段原因。前端由 UX 后续接入。

验证:

  • 先红后绿:首批新测试在实现前 40 failed、20 passed;增加覆盖后新测试共 74 项,与四个对齐文件合计 158 passed。
  • CO-10 Python 3.13.13 全量:3604 passed、8 warnings,1047.55 秒。
  • CO-10 Python 3.12.12 隔离全量:3604 passed、8 warnings,1109.73 秒;与 3.13 串行执行,两轮完成后均清理本 worktree 的 .pytest-tmp。
  • CO-10 uv build:成功生成 wheel 与 sdist;两包均含新默认值与未修改的迁移 034,未含密钥配置、.venv 或 node_modules。
  • CO-09 历史对照(CO-10 仅调整默认值,经批准不重跑):全部 5 份公开学习语料:116 段、272 批,请求零差异;两边均 1925 条记忆。
  • CO-09 历史对照(本轮未重跑):七份公开召回:228 查询 × 5 模式=1140 份返回零差异,214 次判断请求相同(确定性离线等价性对照,非质量重评)。
  • 四步独立、旧设置与旧快照、0—1000 严格范围、部分 PATCH、重启账本、2003 对修剪顺序及两侧变化后重入、共同停止条件在 HTTP 重试时仍优先均有覆盖。56 个提示词文件逐字相同,原判断函数 AST 不变。

测试对齐清单

既有测试只对齐预算语义,未跳过用例或删除断言:

  1. test_maintenance_cognition.py:persona_case 夹具及下一轮提额使用 persona_max_calls;两处新库默认 50→300;非法上界 51→1001,新测试补 51 合法;原共享预算阻止 persona 用例改为 memory=1/persona=2 后仍发布,保留合并断言并精确校验 3 次调用;HTTP 重试/修正测试只改预算命名,参数与断言保留。
  2. test_entry_profile_consolidation.py:dream 夹具、0/1 小额度、两入口上限及生成重试额度改用 entry_profile_max_calls,结果断言不变。
  3. test_person_summary_consolidation.py:预算模块说明和 prepare 夹具改用独立额度;顺序用例设 memory=1、summary=4,原顺序断言保留,断言两个发布、4 次摘要调用及完整 5 次账本。
  4. test_person_summary_admin.py:设置往返的新库默认 50→300,类型和审计断言不变。
  5. test_merge_scoring_v2.py:CO-09 批准的一行夹具修改,保留 runner 原设置、仅覆盖 max_calls=1;原测试名称和全部断言不变,防止夹具重置配置意外启用入口画像。

CO-08 已授权与 #61 重叠的预算用例,后合并方用 merge origin/main 解决冲突。入口画像、memory_ops、persona、maintenance、goals、调度、前端及其他源码均未改。

完整日志与汇总报告位于仓库外 /Users/cassia/Local/Code/iris-eval-artifacts/consolidation-step-budgets-20261017/。PR 保持开放,交规划者审查。

CO-09 已完成的离线对照基线(本轮未重跑):b1493c4fd83c9af75cbf0e08c0cf6aa251864c11(含 #117)。learning-compare-co09/summary.json 和 recall-compare-co09/summary.json 确认学习 272 批、召回 1140 份返回及 214 次判断输入零差异。main 源码指纹 0498bc79c8957a49fda26478e9f489a7cac27f907d3d81602d745e177d52d1b4;CO-09 候选源码指纹 6e1a419e33b86163dfe9088dccecdbafa2d4e285e71b22fa0558ccff5323d7d9。

CO-09 验证期间 main 另合入 #118、#119,当时提交前为 caa4cc89d619f9747897d77c0a621cad9a04119a;最新迁移仍为 033。本 PR 的代码与测试基线固定为上面列出的 b1493c4。

受审 head:a17811bc8ca3e2cd558ae3c70997b53a3ddfe2bc。

CO-10 默认值测试对齐:test_consolidation_step_budgets.py 将新字段的默认值断言固定为入口画像 60、人物摘要 40、persona 30,同时核对 GET 回退值与 ConsolidationSettings 默认;先红 1 failed,修改后同项 1 passed。迁移 034 SHA-256 仍为 efb6a7dfb0e4cb4d9c8719d8956fe1f3b3d0e7bda31774f307447045f572d866,与上一 head 逐字一致。

@leafliber
leafliber merged commit 8ab9bee into main Oct 17, 2026
1 check passed
@leafliber
leafliber deleted the fix/consolidation-step-budgets branch October 17, 2026 08:54
leafliber added a commit that referenced this pull request Oct 17, 2026
新增 2026-10-17「上线测试第一周:日志分析与修复」一节:
- 记录 #118 询问目标到期关闭、#119 账号回退名更新、#120 整理独立预算与配对积压上限,以及插件 #26 的输出与通知捕获修复。
- 汇总上线运行情况、排队事项与用户配置建议。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant