fix(btw): 修复长对话上下文预算与旁路输入布局

This commit is contained in:
ji ruo committed 2026-09-11 00:41:01 +08:00
1 parent 555539bc8e
commit d893861d00
17 files changed
+1295 -92

No files matched your search

+2 -2
View File
@@ -23,7 +23,7 @@ flowchart LR
- `capture.go` 只在 `Options.Deps.CallModel / CallModelSync` 标记主循环请求。Provider 装饰器位于具体模型内部、路由池外层选择之后,因此记录实际选中的模型;压缩和摘要请求不覆盖快照。
- 请求开始、完整模型回复、运行终态发布快照。正在生成的半段回复不发布;工具调用通过 norma 的 `MessagesForAPI` 保持配对,工具结果在下一次主模型请求或运行终态进入快照。流式中止保留上一个有效边界。
- 快照通过 JSON 深拷贝保留结构化消息、系统提示、工具定义及生成参数。模型推理不持有快照锁或数据库事务。
- `SideQuestionService` 直接调用该具体 Provider 一次,不创建 agent session,不接入工具执行器、主 transcript、活动流或任务图,也不经过任务模型切换链。保留工具定义是为兼容既有结构化工具上下文;新返回的工具调用没有执行路径。仅返回工具调用时给出无法执行的提示。
- `SideQuestionService` 调用具体 Provider;必要时先生成旁路摘要,最终回答仅在首次上下文超限且尚未输出文本/工具调用时允许缩减后重试一次。不创建 agent session,不接入工具执行器、主 transcript、活动流或任务图,也不经过任务模型切换链。回答保留工具定义是为兼容既有结构化工具上下文;摘要请求不提供工具。新返回的工具调用没有执行路径。
- 每个父会话一个运行请求,单个服务进程最多四个,单次超时 120 秒。旁路使用服务生命周期下的独立取消上下文。
- 旁路请求保留模型配置引用和非敏感身份摘要;请求时从现有配置取得凭据。配置被删除,或模型、协议、地址等身份字段变化,要求先运行主 Agent 更新快照。测试不会改变产品默认模型。
@@ -39,7 +39,7 @@ flowchart LR
清空操作递增清理版本并删除请求;条件更新阻止迟到的回调重新写回。物理父资源删除依靠外键级联,Worker 逻辑删除在同一事务中删除旁路数据,并拒绝后续迟到快照。任务归档先阻止新请求、等待主流程停止、取消并等待旁路落库;归档格式为 v3,同时兼容不含旁路表的 v1/v2。
历史完整保存,按序号游标每页最多返回 20 条。模型请求仅回放最近 20 组成功问答;保守估算请求长度并预留输出预算,优先移除旧旁路问答,基础上下文仍超限时返回明确错误。
历史完整保存,按序号游标每页最多返回 20 条。模型请求最多回放最近 20 组成功问答原文,同时按 token 预算限制回放量;较旧问答维护独立滚动摘要。主上下文超预算时仅摘要旁路副本的旧部分,保留近期结构化工具调用与结果。摘要、准备进度与用量一起纳入旁路的并发、取消和 120 秒超时限制。详见 [上下文预算与开源参考](CONTEXT_BUDGET.md)。
## HTTP 契约