Skip to content

[P1] 按共享剩余预算准入多 Agent 协作,预算不足时合并反馈而非批量静默失败 #157

Closed

Description

@lyyzka

本轮验收范围更新(2026-10-20,依据用户 00:08 UTC 最新指示):继续完成基础能力、必要短测、审查及上线,并据实验收关闭;24 小时/更长 soak、完整负载、真实 provider 与全量 SPA 联合故障矩阵、供应商实际扣费凭证不作为本轮关闭前置条件,未完成项仍明确标为“未验证”,不会改写历史失败或计为通过。基础功能缺口仍须修复,不能仅修改文字关闭。

本 issue 的基础验收:共享预算原子准入、子任务与收尾预留、并发/递归上限、幂等结算及一次聚合反馈可工作;保留已有结果,新的人类请求可独立继续。受控 usage/price 成本断言与供应商扣费凭证分开记录。

本轮基础能力、必要短测、独立审查和生产上线已完成,依据最新范围验收关闭;交付 source 554e81ac / runtime3.5.6,详见下方2026-10-20完成回执。长期和完整矩阵未验证项保留为历史边界。2026-10-17 的“无需部署/停止生产操作”描述已被本次最新上线要求替代,下方原文与旧证据保留为历史记录。固定暂停的 3.5.3 soak 和已暂停自动核验保持不动;不做生产故障注入,不改凭据、安全设置或生产数据。

生产证据与原因

21 个历史 failed turn 的错误为 model-call budget exhausted,归属于两个 mention 协作 root,分别产生 17 个和 4 个失败子 work。

  • 第一组 root:39/128 次模型调用、898,564/1,000,000 token、1,098,783/10,000,000 cost units。
  • 第二组 root:38/128 次调用、915,055/1,000,000 token、1,127,657/10,000,000 cost units。
  • 两组失败时间均早于各自 deadline;下一个调用需要预留约 113k–121k token,但剩余只有约 85k–101k。共享 reservation 因而拒绝;不是调用次数或费用上限耗尽,也不是“子 Agent 没有自己的预算”。部分子 work 尚未做第一次模型调用就失败。

实际发布的 LingxiOS 3.4.7 在 dist/src/model/execution.js 按输入估计和最大输出预留共享 root 预算,PostgreSQL 层原子约束是正确的成本保护。字节估计与实际 token 有差异,不应直接用历史小样本比例缩减安全预留。

当前产品 mention 结果派发 已有连续 8 层 / 累计 32 次回复限制和系统提示;3.4.7 也已改进 reply budget 与 compaction。本 issue 针对预算维度的准入和最终反馈,不是再叠加一个相同的数量限制。

方案

  1. 启动 mention/handoff 子 work 前,按当前共享 root 的剩余 token/cost/deadline 做原子准入,保留最小收尾预算。限制并发扇出;不足时不要先创建一批注定无法完成首次调用的任务。
  2. 复用共享预算与真实模型 token/profile 估计,不通过重置 root、每个 child 新建独立预算或提高无上限配额来“修复”。将 calls/tokens/cost/deadline/reservation 拒绝维度明确写入脱敏诊断。
  3. 保留已完成成员的结果,向用户发送一次聚合状态,说明哪些协作未继续及如何发送新请求继续;同一根工作不能每个失败 child 都刷一条错误。系统通知不得再次唤醒 Agent。
  4. 新的人类消息按既有新工作语义获得独立预算;重试同一协作仍使用原共享预算和 action ledger。最终兜底使用已有结果或确定性通知,不能偷用额外模型额度。

验收

  • 覆盖剩余 token 小于一次 reservation、多人同时准入、deadline 临近、递归 mention、部分成员成功、真实费用接近上限;预算不超支,不创建无界子任务。
  • 同一 root 至多一条聚合失败/未启动提示,已完成结果保留,提示不触发新的 mention。旧 8/32 限制仍有效。
  • 既有 group-mention/runtime-budget integration,加 tester-army/e2e / @e2e-dev/web 产物,证明用户发出新消息后能继续完成对话。

Activity

  1. lyyzka commented on Oct 17, 2026

    @lyyzka
    ContributorAuthor

    PR173 已合并,补齐此前缺少的真正产品 mention/fanout 浏览器验收:已完成 root 答复保留,实际两名 Agent 被 mention 后因共享预算拒绝启动,notStarted=2、childWorkItems=0、rootFeedbacks=1;重读不重复,下一条人类消息 succeeds,原 root 不重置预算。官方联合 run 01a1489e-ba5a-73bf-a8e5-8e47fc88a713 10/10。

    原子并发 PostgreSQL 准入(8竞争→2准入6拒绝、收尾预留)、calls/tokens/cost/deadline/reservation 分类、递归/8与32限制、五成员与8pending边界均已在上游/owning integration 验证,精确包3.5.1。

    可复查计数与矩阵:https://github.com/LingXi-Org/LingxiLoop/blob/cad71ff73779d0f866526e727415de5bc34156e9/docs/evidence/runtime-measurements/README.md

    本 issue 暂保留 open:原验收明确包含“真实费用接近上限”。现有费用边界使用可控 fixture pricing/usage,并非已授权真实 provider 计费验证;父任务确认尚无可用既有配置,未新建凭据/扩权或付费调用。浏览器扇出缺口已解决,不把 fixture 成本测试写成真实费用验收。

  2. lyyzka commented on Oct 17, 2026

    @lyyzka
    ContributorAuthor

    开发复查未发现新的原子准入代码缺口,新增了已结算费用接近上限的上游回归:同一call重复结算只计费一次;剩余成本不足以容纳子任务启动+根任务收尾预留时,拒绝为cost且不创建child。3.5.2正式包完整门禁422/422通过,产品PR174精确接线。

    公开Worker+真实PG/WuKongIM的官方浏览器扇出预算场景通过:两个子任务均未启动、已有root结果保留、只发一条聚合预算提示、提示不唤醒Agent、下一条人类消息成功且activeRuns=0。完整11/11浏览器和17项相关集成通过,额外真实WuKong回执恢复20/20;计数与截图/视频。

    该成本测试使用真实预算存储的settlement及受控usage/price,不冒充供应商真实账单。“真实费用接近上限”的外部验收仍未具备授权provider和价格/上限条件,issue保留开放。部署不属于本轮范围。

  3. lyyzka commented on Oct 17, 2026

    @lyyzka
    ContributorAuthor

    后续结果:PR174已普通合并到main ba9014958f7ab0dc0636a18edd1339d9e9e76e60,main CI39016358468 全部开发门禁和不可变server镜像发布成功;update-manifests/deploy/rollout均按用户要求SKIPPED,没有生产部署。3.5.2公开包与双锁已接线。最终证据。此前说明的外部验收边界不变,issue保持开放,未冒充真实provider/账单/完整24h通过。

  4. lyyzka commented on Oct 17, 2026

    @lyyzka
    ContributorAuthor

    3.5.2的完整SPA会话/人类消息恢复补验已完成:PR175已普通合并到main 06ba56169ae8796bf6e067f4eecca0064145a816,6/6、零失败/重试/跳过。真实新建的独立PG/Redis/WuKong/存储与Web/control/D1覆盖了session恢复/过期、网络中断、PG暂停、Web重启及两种401发送竞态;老发送不越权重放,后续发送一次持久落库。保留13截图/6视频及实际计数。证据与逐项验收映射。

    对153/155/157/161的复查未发现新增产品/runtime代码缺口,当前新增仅隔离夹具及证据。完整Worker预检仍有明确环境失败:宿主setting up uid map: Read-only file system,独立默认安全配置容器No permissions to create new namespace,均exit1;未扩权。受控真实provider/价格配置未提供。完整Worker/真实provider及费用/完整观察时窗仍属外部验收条件,保持issue开放。

    这次通过的是3.5.2完整SPA登录后会话/消息链路,不包括captcha登录、模型辅助完整Worker对话或3.5.2耐久验证。原3.5.1 Web/API soak未动、未改版本标签;既有06:50UTC独立复查任务已经核验启用,没有重复安排。部署继续排除。

  5. lyyzka commented on Oct 19, 2026

    @lyyzka
    ContributorAuthor

    2026-10-19 本轮验收继续:既有隔离回归与3.5.2 SPA证据仍按原范围有效;当前云环境已具备现有provider测试配置与生产只读运维访问,正在补充受控真实调用/费用及最终版本验收。不会将fixture、CI门控跳过或旧3.5.1未完成soak当作这些外部条件通过。当前仍保持开放;PR185已审查并合并,最终发布按本轮依赖统一编排。

  6. lyyzka commented on Oct 19, 2026

    @lyyzka
    ContributorAuthor

    阶段更新:正式3.5.3和精确 GLM-5.3-Flash 配置已随 PR194 / 成功发布流程 上线,生产计价覆盖值、实际模型和健康已核对。

    已有小额真实 provider 近上限、账本去重/拒绝不一致 usage、子任务预算拒绝及 root 持久回执证据保留原版本归属,不改称3.5.3全链路通过。本轮正式包真实请求的 usage/账本摘要为4次成功调用,usage×tariff合计 USD0.00405601,并非供应商扣费/发票收据;Agent root预算不覆盖单独host helper,总额限制是运行后的断言。

    完整产品 Worker+SPA 的预算边界及供应商实际扣费凭证仍未齐备,故 保持开放。未为费用上限测试大量消耗付费token,也未创建新账号或凭据。

  7. lyyzka commented on Oct 20, 2026

    @lyyzka
    ContributorAuthor

    按用户2026-10-20最新范围,基础能力、必要短测、独立审查与上线已完成,验收关闭。

    共享root预算原子准入、扇出限制、一次聚合反馈及新的人类请求继续运行的基础能力通过验收,未重置root或提高无上限配额。

    • PR207:真实PostgreSQL 8并发准入时2允许/6拒绝;预算不足的产品mention场景0子work、1条合并提示、已完成root答案保留,下一条人类消息使用新root成功。
    • PR207产品矩阵14/14及上游专项14/14、20/20;递归/收尾预留/幂等结算的受控usage与price断言见对应公开证据。

    生产已由正常 CI/CD 发布:source 554e81ac7fc59984d069a104d555adbf48092411,正式 runtime 3.5.6;精确 main CI/CD成功。Komodo 实际聚合回执为 Complete / success:true;四个 API/Worker 容器均为该 source 的同一已发布镜像、健康,当前 Docker OOMKilled=false 且 restartCount=0,两个同镜像迁移容器 exit 0,两轮 HTTPS 就绪/版本检查通过。镜像 manifest list sha256:ed3088feac9dacbfe6b639b6d6edd7b0b2c53a2b3ab58740a20f8b76e23aed56。产品迁移46/runtime schema12未新增;本轮没有重新通过直连SQL读取schema/lease,不能把迁移exit回执称为该项验证。

    交付:回调证据 · PR207 · PR208 · PR209 · PR211 · 上游PR32。

    未验证范围:真实供应商实际账单、完整负载/长期观察、全量SPA联合故障矩阵未验证。 固定暂停3.5.3观察与自动核验未触碰;未做生产故障注入、真实provider调用或凭据/安全配置变更。旧文中的长期/完整矩阵复选框保留作为历史边界,不标为通过。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions