OpenBaiduPan 是一个用 Zig 0.16 与 Native SDK 构建的百度网盘原生桌面客户端:声明式 Native markup 视图 + Elm 架构(Model / Msg / update)Zig 核心,无浏览器、无 WebView。API 行为对齐官方 baidu-drive-sdk-go。
功能特性
登录
- 支持直接粘贴 access_token,或 OAuth 设备码流程(需自备 App Key / Secret Key)
- 凭据存 Windows 凭据管理器,重启免登录
网盘浏览与文件管理
- 面包屑导航、分页(100/页)、名称 / 时间 / 大小排序、容量与会员信息
- 新建文件夹、重命名、复制、移动、删除(进回收站)
下载
- filemetas 取 dlink 后用 curl 断点续传(
curl -C -),实时进度与速度 - 600ms statFile 轮询进度,失败时显示退出码;保留下载记录(打开文件 / 目录、删除)
- 服务器不支持断点续传时自动整档重试
上传
- 4 MiB 分片 MD5 → precreate(支持秒传)→ curl 分片上传 → create 合并
- 拖入窗口即传,上限 4 GiB
界面
- 参考 PanDownload 风格,页签导航、品牌蓝
#06A7FF、亮 / 暗双主题、全中文界面(Noto Sans SC)
架构设计
- Elm 架构:update 函数为纯函数,Model / Msg 单向数据流
- 效果通道:HTTP、curl 子进程、文件流、凭据、定时器全部经有界 effects 通道,结果以 Msg 回流
- 上传管线:两遍读取 —— 流式计算分片 MD5,再经 256 KiB 锁步管道写临时文件(ping-pong 双缓冲)
- 有界性约束:fx.fetch 请求体上限 64 KiB,故上传走 curl 子进程;模型数据固定缓冲,scratch arena 每条消息重置
构建与运行
native dev # Debug 运行(markup 热重载)
native build # ReleaseFast → zig-out/bin/OpenBaiduPan.exe
native test # 单元测试(41 个)
native check # manifest + markup 校验
需 Zig 0.16.0、native CLI(npm i -g @native-sdk/cli)、Windows 10+(依赖系统自带 curl)。