Fetching metadata from the HF Docker repository... 17 days ago
-
perf(chathistory): 拆分读写锁并合并流式落盘,修复 HF Space 整体卡顿
luckfun233
线上表现为 API 响应变慢、后台面板加载历史对话卡顿。根因是对话历史的落盘
路径把整个服务串行化了:
- Store 只有一把互斥锁,saveLocked 在持锁状态下完成 JSON 序列化 + fsync +
rename;而 Snapshot / Get(后台面板读历史)用的是同一把锁,因此被流式写入
直接阻塞。
- progress() 在每个 SSE 分片上被调用(250ms 节流),每次都重写包含 messages /
history_text / final_prompt 等请求期内不变字段的完整记录。HuggingFace Spaces
的 /data 是 bucket 对象存储卷,单次 fsync 的延迟远高于本地盘,几十秒的响应
就会触发数百次高延迟写入。
改动:
- 拆成 mu(仅内存状态,持锁期间不做 I/O)与 writeMu(仅串行化落盘),后台
面板读取不再阻塞在磁盘上。
- 新增 UpdateParams.Background:流式进度只写 <id>.live.json 增量文件,由单个
自终止的合并协程按 400ms 窗口合并落盘,彻底脱离 SSE 读取循环;终态更新仍
同步回写完整文件并清理增量文件。
- 去掉 chat history 的 fsync,保留「临时文件 + rename」的原子性。
- 后台面板轮询降频(列表 1.5s→3s,详情 750ms→1.5s)。
实测单次进度写入从 84,475 B 降至 246 B(343x)。旧数据无需迁移即可加载。
Start 与终态 Update 仍同步返回写盘错误,保持既有错误语义。
-
feat: 对齐安卓端协议,隔离账号风控,透出文件元信息到对话历史
204848
基于安卓端最新抓包分析,修复以下问题:
P0 风控隔离:新增 account_identity.go,为每个账号生成独立 device_id 和 x-rangers-id,移除 x-rangers-id 全局硬编码,Account 新增 DeviceID/RangersID 字段支持用户自定义。
P1 协议对齐:create_session 移除多余 agent 字段;upload_file 移除 PoW 申请(仅 completion 需要 PoW);upload_file 恒携带 x-model-type 头;UploadFileResult 新增 AuditResult/ModelKind/SignedPath 字段。
文件审核开关:新增 file_audit.strict 配置,默认关闭(撤回机制对本项目无影响,completion 流完整推送,撤回事件在最后追加);新增 isPassedAuditResult/isFailedAuditResult 判断。
文件元信息透出(无论开关):chathistory.Entry 新增 file_infos 字段 + FileInfo 结构体;StandardRequest 新增 FileInfos,current_input_file 上传时转换并追加;chat_history.go 和 responsehistory/session.go 传递 FileInfos;前端 ChatHistoryDetail 新增 FileInfosView 组件;zh/en i18n 添加翻译。
其他:.gitignore 添加 *.har 通则排除抓包文件;新增 deepseek-recall-research.md 撤回机制研究文档。
-
Initial commit: ds2api with HF Spaces support
204848