Samien 3e4789b113 修复 Bot 会话同步并统一跨设备文件传输上限 1 maand geleden
..
README.md 3e4789b113 修复 Bot 会话同步并统一跨设备文件传输上限 1 maand geleden
memory-desktop.png 3e4789b113 修复 Bot 会话同步并统一跨设备文件传输上限 1 maand geleden
memory-narrow.png 3e4789b113 修复 Bot 会话同步并统一跨设备文件传输上限 1 maand geleden
settings-desktop.png 3e4789b113 修复 Bot 会话同步并统一跨设备文件传输上限 1 maand geleden
settings-narrow.png 3e4789b113 修复 Bot 会话同步并统一跨设备文件传输上限 1 maand geleden

README.md

Bot 会话同步与统一文件传输设置验收

实现

  • 启用 OpenViking 后,后台分页扫描全部保留消息(包含归档),同时消费 SQLite 持久事件。账号、Bot、会话、话题及服务地址/account 共同确定 session;服务重启或重新启用会再次复核历史。
  • 同步用户正文、该 Bot 的完成/失败/中断回复、Bot 通信正文及附件元信息。排除临时助手、隐藏消息、独立/内联思考、工具记录和附件二进制。群聊按实际参与的 Bot 及话题隔离。
  • 本地记录消息 ID、指纹和发送进度。每次追加前核对远端 messages.jsonl;远端已写入但回执丢失时,恢复后只追加缺失消息。出现顺序/内容冲突时停止追加并显示错误,不覆写远端。
  • 失败退避重试,连续三次后等待管理员重试。停用暂停,删除会话/话题/Bot 清理对应 session;停用期间删除 Bot 的远端用户在重新启用后清理。不同服务/account 的进度独立保留,切回对应配置后继续处理。
  • 禁用 session 原生记忆策略和继承的自动提交策略,不调用 commitSession;原有长期记忆提炼、编辑、遗忘及暂停设置不变。
  • 「Bot 设置 → Bot 记忆」展示会话待同步、已完成、失败数量、最近错误及重试按钮。管理员 API:GET /api/app/admin/openviking/session-sync;POST /api/app/admin/openviking/session-sync/retry。
  • 「Bot 设置 → 电脑」提供全局单文件上限,默认 25 MiB、整数 1–100 MiB,只有管理员可修改;旧客户端保存其他字段保留现值。
  • desktop_file_copy 支持电脑名称/编号、server 和当前 Bot 的 vm。服务端在开始时锁定上限,512 KiB 分块复制,目标先暂存、核对长度与 SHA-256、再提交,默认不覆盖,保留源文件。每块检查授权、取消、连接代次和接管状态。提交回执丢失时查询结果,不重复提交。
  • 桌面端、Runner 和 Hermes 工具桥声明分块能力;缺少 VM 能力时提示升级。旧桌面端仍可复制不超过配置值与旧 10 MiB 上限的文件。旧 computer_copy_file 也使用统一上限和分块协议,保留原工具的覆盖语义。聊天附件上传与导出维持独立限制。
  • 失败执行尽力清理;桌面端撤销/回收会关闭暂存文件,Runner 释放同代次 VM 时清理本轮暂存,Hermes 撤销绑定时清理对应暂存。端点另有 10 分钟过期回收;进程强制退出后未能清理的磁盘暂存不承诺立即回收。

自动验证

最终相关 Vitest 回归累计:16 个文件、163 项全部通过。

  • 会话同步:历史 260 条分页、归档、单聊/Bot/account 隔离、群聊参与者及多话题、Bot 通信正文和收发角色、流式阻塞与中断正文、重启及事件日志清理后回填、追加响应丢失去重、三次失败与手动重试、停用恢复、会话/话题/Bot 删除、停用期间删除、附件元信息和思考过滤。
  • 传输:电脑↔服务器、电脑↔电脑、电脑↔模拟 VM 六个方向;空文件、二进制、100 MiB/200 块、超限 1 字节、校验失败、覆盖保护、重复块、相互冲突的并发复制、提交回执丢失、取消/权限撤销/断连中止、旧端点升级提示、任意电脑→Bot VM 调度、进行中的上限保持不变、模型参数不能提升上限、旧宿主机工具双向复制、内部 RPC 会话与权限检查、VM 人工接管拦截;电脑接管原有回归通过。
  • 设置和接口:默认值、非法值、旧字段兼容、管理员/普通用户权限、状态重试及组件卸载停止轮询。原有长期记忆提炼 8 项回归通过。

其他结果:

检查 最终结果
npm run desktop:test 44/44 通过,包含真实 Electron 启动和电脑接管窗口测试
Python test_computer_policy.py 17/17 通过,增加分块路径保护、代次校验、撤销后暂存清理
playwright.bot-session-transfer.config.ts 1/1 通过,真实浏览器保存 100 MiB 后重载,1440×900 与 375×812 布局、同步状态
npm run typecheck 通过
npm run build 通过;Vite 保留大 chunk 的现有提示
node scripts/build-desktop.mjs 通过
npm run runner:build 通过
git diff --check 通过

首次完整桌面测试与桌面构建同时运行,遇到构建目录重建和辅助程序缺失;构建结束后重新运行桌面测试,44 项全部通过。测试自动改写的其他历史截图已还原。

联调边界

OpenViking 测试使用协议替身,没有连接真实 OpenViking 服务。跨设备链路使用桌面/Runner 协议替身;VM 文件端点在本机真实 Python 子进程中执行,没有连接另一台物理电脑或真实 VM 做网络传输。因此真实 OpenViking 版本兼容性、跨机器网络中断、100 MiB 的实际网络耗时仍需部署后联调。

界面证据