Skip to content

补齐 MA 上下文维护真实回归 #25

Description

@zhuqingyv

背景

本次子 agent 审计结论:MA 已有一条相对完整的 active context -> request 链路,但真实 session 路径和 mock 单测路径仍有差异。最需要补齐的是:真实 session-backed 的工具协议回归,以及压缩边界在 tool-heavy 场景下的稳定性。

这个 issue 不是重做 ContextManager,而是把“上下文维护能力是否真的稳定”变成可验证目标,避免后续只看单测绿就误判真实可用。

当前证据

  • system / 环境 / AGENT.md 注入:src/agent.ts:576src/agent.ts:618src/agent/memdir.ts:45
  • active context 请求入口:src/agent.ts:700src/agent.ts:941
  • active context 构造:src/agent/context-manager.ts:357src/agent/context-manager.ts:546
  • tool_call/tool_result 半组保护:src/agent/context-manager.ts:734
  • compact 主循环与 fallback:src/agent.ts:741
  • DeepSeek v4 flash/pro context registry:src/provider/capabilities.ts:16
  • 已读相关测试:context/codec/stream patch、messages-integrity、AGENT.md loader 均通过;但未证明真实 L2/L3 session-backed e2e 稳定。

目标

把 MA 上下文维护能力补成真实回归 gate:

  1. 真实 session-backed 请求里,active context 是 provider request 的主来源,而不是 mock 内存路径的偶然结果。
  2. tool_call/tool_result 在真实 .index.jsonl/.context.json/.pool.jsonl 存在时仍不拆组、不产生 orphan tool。
  3. compact 在 tool-heavy / 大并行工具组场景下不会反复 reject、不会破坏 provider schema。
  4. benchmark 必须能区分 unit/dry-run/真实 MA adapter/真实 judge,不能再把“测试全绿”误报成“真实体验稳定”。

范围

P1:session-backed tool-heavy request 回归

  • 构造真实 session 目录和 sidecar 文件,不只用内存 mock。
  • 覆盖 Qwen / DeepSeek OpenAI-compatible codec 下的 tool_call/tool_result 配对。
  • 验证 request 中仍保留必要 user message、tool result 文本化证据、latest user fallback。
  • 验证 raw provider message 不出现 orphan tool 或未回填 tool_calls。

P2:compact candidate tool-group aware

  • 审计 COMPACT_BATCH_SIZE=4 是否会切到大并行 tool group 中间。
  • 如果会导致反复 reject,compact candidate 选择必须扩展到完整 tool group 或跳过该组。
  • 保留现有 applyPatch() 半组拒绝保护,不用绕开协议保护。

P2:真实回归 gate

  • L2-037L2-038L2-041 这类长上下文 / 修正覆盖 / capability 任务纳入真实 MA adapter gate。
  • 报告必须明确四类结果:unit、dry-run、real MA、real judge。
  • runner 输出要能定位失败发生在 context 注入、compact、provider codec、tool protocol 还是 judge 质量。

非目标

验收标准

  • 有真实 session-backed tool-heavy 测试,不只依赖 mock store。
  • 真实 sidecar 存在时,provider request 无 orphan tool、无未回填 tool_calls。
  • compact candidate 不会因切半大 tool group 而进入无意义重试或失败。
  • L2 长上下文任务能通过真实 MA adapter 跑出报告。
  • 报告明确区分 unit、dry-run、real MA、real judge。
  • 失败时给出可读原因和下一步,不再只显示“测试全绿”。
  • npm run buildnpm test、benchmark dry-run、目标 L2 real run 均有记录。

建议验证命令

npm run build
npm test
npm run benchmark:dry
npx tsx --test test/benchmark/runner/__tests__/*.test.ts
npm run benchmark -- --level L2 --task L2-037 --task L2-038 --task L2-041 --adapter test/benchmark/adapters/ma.yaml --runs 1

关联

Activity

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