Skip to content

fix: 修复 -build 长对话失忆、续写与应用回收 - #121

Open
Mag1cFall wants to merge 1 commit into
mainfrom
fix/build-history-retry
Open

Mag1cFall wants to merge 1 commit into
mainfrom
fix/build-history-retry

Conversation

@Mag1cFall

@Mag1cFall Mag1cFall commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Fixes #120

改动 / Changes

  • 新建写代码助手应用时,最后一组之前的对话转录在自定义指令末尾,CodeAssistantOffline 的 field 1 只提交最后一组;上游会把合并后的 user 消息截短到约 33k token,自定义指令不截短
  • 最后一组超过 24576 token 或是模型轮时,新建应用并把全部对话转录在自定义指令中,field 1 只提交请模型从转录末尾继续的用户轮
  • 会话按分组数记录转录的历史,客户端合并相邻的 user 轮后回传时仍在原应用中继续;只从最后一组之前最近的模型回复所在应用继续,回到较早的回复另起分支时新建应用
  • 上游步骤在已输出正文后失败(如 “An internal error occurred.”)时,在同一应用中带上已输出正文的末尾请模型接着写,失败任务中的搜索来源与已完成步骤的用量照常输出;接着写的任务只有思考时再请模型继续,与空回复的追加合计最多 3 次;接着写过的对话下一轮新建应用
  • 以失败步骤结束的任务不发送取消,追加任务的任务流打开失败时取消追加的任务
  • 写代码助手应用经应用服务 AppletService/DeleteApplet 删除:带开发环境的应用(例如在 AI Studio 中打开过的应用)经 MakerSuite DeleteApplet 删除返回 403 The caller does not have permission,记录一直保留,巡检每 10 分钟告警一次
  • 生成刚结束的几秒内应用服务的 DeleteApplet 返回 500 Internal error encountered.,删除时每秒重试,最多 10 次
  • 新建应用后写入账户记录失败时,请求返回该错误并删除刚建的应用;管理端删除账户时,先停止向该账户调度新请求、等进行中的请求结束,再删除该账户记录的全部写代码助手应用与其上的对话,最后删除账户
  • 同一 API key 下历史与回复相同的两段对话分在两个应用时,较早的应用闲置删除只移除它自己的续接位置,较晚的对话仍在原应用中继续
  • 更新 docs/build.md 的请求映射、对话与应用、清理与任务流,docs/logging.md 补充账户应用删除失败事件

验证 / Verification

  • 6 万与 15 万 token 的多轮历史请模型复述第一轮、正中与最后一轮的暗号:修改前上游输入都停在约 5 万 token,3 个暗号都答不出;修改后上游输入为 67056 与 136878 token,3 个暗号都答对
  • 6 万 token 放在单条最新消息中:修改前上游输入 50270 token、3 个暗号都答不出;修改后 66618 token、3 个都答对
  • 16 轮带函数调用、隔轮换账户的对话,每 4 轮复述已保存的暗号:修改前后都是 4 次全对
  • 首个请求带 8 条连续 user 消息,第二个请求把它们合并为一条回传:修改前服务进程因切片越界 panic 退出;修改后在原应用中继续并正常回答
  • 上游任务流先写出正文、随后以 “An internal error occurred.” 失败:修改前客户端收到半句正文后以流内 502 结束、没有重试;修改后在同一应用中接着写完,客户端收到连续的回复、没有错误
  • 接着写的任务只有思考:修改前以半句正文正常结束;修改后再请模型继续并写完
  • 失败任务中已完成步骤带用量:修改前输出 token 只计接着写的任务;修改后两次任务的输出相加
  • 追加任务的任务流返回 503:修改前没有取消追加的任务;修改后发送取消
  • 同一账户同一个带开发环境的应用:修改前巡检删除返回 403、记录保留并告警;修改后删除成功、记录移除、没有告警,之后 GetApplet 返回 404,AI Studio 的应用列表不再列出
  • 新建应用后写入账户记录失败:修改前请求 502、应用留在账户中;修改后请求 502,应用以一次 DeleteApplet 删除
  • 刚用过 -build 就删除账户:修改前账户删除后应用留在账户中;修改后删除应用遇到 500 时重试成功,再删除账户
  • 生成进行中删除账户:修改前先删掉正在使用的应用再返回 409,账户保留,进行中的请求以 404 失败;修改后等请求正常完成,再删除应用与账户
  • 删除账户后重新导入同一账户并继续原对话:修改前续接已删除的应用、返回 502;修改后新建应用并正常回答
  • 生成结束后立即删除应用,3 次分别在 6.7 s、2.7 s、4.0 s 后由 500 转为成功
  • 同一 API key 下两段相同对话、较早的应用闲置删除后再继续:修改前找不到续接位置、新建第 3 个应用;修改后在第 2 个应用中续接,共 2 个应用
  • 逐项撤销历史转录、按分组记录、只从最近模型回复继续、长最后一组与模型轮结尾转录、失败后接着写、按任务判断空回复、用量计入、失败任务不取消、追加任务取消、应用服务删除、写记录失败后删除、只移除自己的续接位置、删除账户前删除应用、500 重试、删除账户前等进行中的请求与清除已删除应用的对话后,对应测试失败

- 新建应用时把最后一组之前的对话转录在自定义指令末尾,避免上游截短合并后的历史
- 最后一组过长或是模型轮时新建应用转录全部对话,只从最近的模型回复续接应用
- 上游步骤在已输出正文后失败时在同一应用中请模型接着写,带上搜索来源与用量
- 经应用服务删除写代码助手应用,带开发环境的应用同样能删除,生成刚结束时的 500 每秒重试
- 建应用后写记录失败与删除账户时删除应用,删除账户先等进行中的请求结束并清除其对话
- 闲置会话过期时只移除自己的续接位置
- 更新 Build 文档的请求映射、对话与应用、清理与任务流说明,补充账户应用删除失败日志
@Mag1cFall
Mag1cFall force-pushed the fix/build-history-retry branch from a9c8dc8 to 600ea9f Compare November 7, 2026 20:22
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