Skip to content

修复长时间运行的内存与数据库开销问题 - #496

Merged
aimod-cc merged 1 commit into
aimod-cc:betafrom
mojie126:pr/perf-runtime
Nov 7, 2026
Merged

aimod-cc merged 1 commit into
aimod-cc:betafrom
mojie126:pr/perf-runtime

Conversation

@mojie126

@mojie126 mojie126 commented Nov 5, 2026

Copy link
Copy Markdown

背景

网关长期运行时,调试报文、请求记账与日志维护会在内存和 SQLite 上持续累积开销,跑久了会变慢、占用变高。本 PR 是这一组修复的合集。

改动

内存

  • 调试报文最多保留 100 条(请求日志上限低于 100 时跟随它),正文合计最多 128 MiB、单条请求体或响应体最多 4 MiB,超限淘汰最旧记录
  • 大请求在解析与转发过程中及时释放原始字节,不再同时保留多份完整正文
  • 图片逐张压缩,避免一次性复制全部图片地址
  • 更新检查复用成功结果,减少重复网络请求

数据库与日志

  • 请求终态与限额事件在同一事务内提交;在途请求状态最多每秒写入一次,减少 SQLite 写事务
  • 日志每 64 条、请求统计每 128 次记账或每 60 秒批量执行保留期与容量维护,不再逐条触发
  • 日志查询与统计结果加缓存,请求总数用内存缓存,无筛选时不再重复全表计数
  • SQLite 检查点阈值提高到 10000 页,新库启用增量回收
  • 调试关闭时清理历史快照、停止写最近请求文件与详细日志;同类余额查询失败在 15 分钟内去重

验证

  • cargo check -p agent2api-server --lib:通过,警告 6 条降到 3 条
  • cargo test -p agent2api-server --lib:283 passed; 1 failed,唯一失败项是 CodeArts 会话式错误分类(provider_loop/tests.rs:200),属上游 3.4.2 已有的提供商适配问题,与本 PR 无关
  • 顺带修好了上游 e8bed73 里 4 处 cargo test 编译不过的位置(api/pipeline.rs 的 RequestQuery 初始化、core/cloud_sync/settings.rs 的两处 WebDavConfig、core/upstream/provider_loop/tests.rs 的调用参数),现在测试目标可以正常编译

与其它 PR 的关系

与 #495 在 api/mod.rs、api/protocol.rs、config/mod.rs 三个文件有重叠,但改动落在不同位置(各自新增不同的模块声明、判据与函数)。后合入的一方 rebase 一下即可。

🤖 本条回复由 AI Agent 生成

Generated by an AI agent.

- 调试报文限量保留、正文合计与单条体积设上限,超限淘汰最旧记录
- 大请求及时释放原始字节,避免解析与转发期间长期保留多份正文
- 请求终态与限额事件在同一事务内提交,在途状态最多每秒写入一次
- 日志每 64 条、请求统计每 128 次记账或每 60 秒批量维护
- 日志查询与统计加缓存,请求总数用内存缓存,无筛选不再全表计数
- SQLite 检查点阈值提高到 10000 页,新库启用增量回收
- 图片逐张压缩,避免一次性复制全部图片地址
- 调试关闭时清理历史快照并停止详细日志,同类余额查询失败 15 分钟内去重
- 更新检查复用成功结果,减少重复网络请求
@aimod-cc
aimod-cc merged commit b1dbef8 into aimod-cc:beta Nov 7, 2026
wocaoniubi123 added a commit to wocaoniubi123/Agent2API that referenced this pull request Nov 7, 2026
上游三个提交:
- b042ddf 修复长时间运行的内存与数据库开销(request_stats writer / record_persist / task_state storage)
- 196bd64 插件页操作入口整合(检查更新/刷新/设置/从文件安装/从 npm-GitHub 安装/诊断)+ 更新页 Git 源管理
- b1dbef8 选择性合并 PR aimod-cc#496

冲突处理(6 个文件):
- 5 个前端产物(ui.css/ui.js/mobile.css/mobile.js/sw.js):取上游,随后云端重建
- checkin-center-tab.tsx:上游把签到中心整体重构(AccountTable→AccountList/AccountLine、
  新增 filterOptions/byStatus 筛选器、卡片改 CardTitle+CardAction+CardFooter),
  本分支的卡片级批量按钮因此重做:以「全部查询」+「一键领取(N)」/「一键完成(N)」形式
  挂到新的 CardAction 里,目标集合复用上游新写的 onboardingDone / growthDone 谓词,
  旧的 pendingFirst / onboardingRank / growthRank 随上游筛选器一并删除。

兼容性:
- 插件协议仍 pin v3.4.0,本分支自建的 3.4.3 插件包继续可用
- 数据库 schema v26 → v27(新增 schema_coding.sql),首次启动自动迁移
- 本分支改动(凭证每日全量强刷、账号级刷新互斥、余额查询并发上限、维护设置 UI)全部保留
@mojie126
mojie126 deleted the pr/perf-runtime branch November 7, 2026 10:08
awsl1414 pushed a commit to awsl1414/Agent2API that referenced this pull request Nov 8, 2026
- 调试报文限量保留、正文合计与单条体积设上限,超限淘汰最旧记录
- 大请求及时释放原始字节,避免解析与转发期间长期保留多份正文
- 请求终态与限额事件在同一事务内提交,在途状态最多每秒写入一次
- 日志每 64 条、请求统计每 128 次记账或每 60 秒批量维护
- 日志查询与统计加缓存,请求总数用内存缓存,无筛选不再全表计数
- SQLite 检查点阈值提高到 10000 页,新库启用增量回收
- 图片逐张压缩,避免一次性复制全部图片地址
- 调试关闭时清理历史快照并停止详细日志,同类余额查询失败 15 分钟内去重
- 更新检查复用成功结果,减少重复网络请求

直捡:该提交父节点即 upstream main e8bed73(fork 集成基线),仅
provider_loop/tests.rs 一处机械冲突(telemetry 绑定取上游形态)。
后续 b1dbef8(aimod-cc#496 选择性合并)再在其上摘取真赢件。
awsl1414 pushed a commit to awsl1414/Agent2API that referenced this pull request Nov 8, 2026
- 终态记账抽到 request_stats/writer.rs:请求终态与限额事件同一事务提交;
  请求 ID 幂等(迟到的记账不覆盖终态、僵尸收尾先到时额度仍按 id 补记);
  统计失败保留独立台账降级路径,真实消耗不漏计
- 收尾记账与 telemetry 快照 → 落库形态的转换拆到 api/record_persist.rs,
  在途回写与收尾共用同一份 stored_* 转换
- 在途状态限频写入(每秒至多一次);原始请求提前释放;图片逐张压缩;
  异常收尾补齐(最后实时快照、中断终态、首次错误与手动终止原因)
- fork 适配:保留 b042ddf 直捡的总数缓存(cached_total,writer 维护)与
  正文合计字节上限(trim_raw_to_caps 兼两条);vision_compat 挂点不取
  (G10 图片兼容未吸收,telemetry 无 take_vision_calls),辅助识图用量
  规则随 G10 另案;debug_traffic 上限 / 批量维护节拍 / SQLite 参数按
  G18 直捡口径保有(beta 合并裁掉的部分,见台账)
- 测试:cargo check + lib 全量 304 过(唯一失败 codearts_daily_pool…
  为上游 main 既有,另行登记)
awsl1414 added a commit to awsl1414/Agent2API that referenced this pull request Nov 8, 2026
2. 修复:CloudSync 内容未变仍每 16 秒重传完整快照(指纹改按业务内容)
3. 修复:路由画布在途请求流动展示(2.5s 轮询)
4. 修复:ZCode 套餐明细跨零点结束活动判定;积分明细时刻统一到年月日
5. 修复:签到中心插件家分组标题回显面板名(aimod-cc#504,含停用包回退)
6. 修复:插件本地校验 4xx 不再折成 502、不计入换号/退避/熔断(aimod-cc#524)
7. 修复:Anthropic 原生→原生 thinking/output_config/signature 暂存回填,Opus 5.5 adaptive 不再 400(aimod-cc#526 部分)
8. 新增:AGENT2API_PLUGIN_LOADER 插件进程动态链接器支持(aimod-cc#527,六份安装文档同步)
9. 优化:长时间运行内存与数据库开销(aimod-cc#496 真赢件)
10. 优化:代理出口构造失败明确报错;clippy/rustfmt 全量清理
11. 插件:小浣熊 thinking 族绑定生效(aimod-cc#522)、CatPaw 中段 system 折叠、Trae 截断明确报告、凭证续期吸收(fbff6f0)
12. 版本:3.4.2 → 3.4.3-beta.1

Co-Authored-By: Claude Code <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.

2 participants