Skip to content

workbuddy-api v0.1.2 — 账号轮换可配置 + 安全响应头与访问日志

Choose a tag to compare

@sddvcm sddvcm released this 12 Oct 14:08
· 9 commits to main since this release

功能与改进

账号池调度

max_rotate 现在可以配置了。 原先单请求最多轮换几个账号写死在代码里(3),
config.json 与面板都改不了。账号多、且大量账号处于冷却时,3 次可能过早放弃 ——
把「本可成功」的请求判成 503。现支持 config.max_rotate 与环境变量
WILDWORK_MAX_ROTATE,范围 1~20(每个候选至少一次完整上游往返,配得过大只是把
单请求放大成 N 次网络调用)。默认值仍是 3,行为不变。

安全

新增安全响应头。 面板与接口现在都会带上:

响应头 作用
X-Frame-Options: DENY 防点击劫持(面板会渲染上游返回的文本,这条最实际)
X-Content-Type-Options: nosniff 阻止 MIME 嗅探
Referrer-Policy: no-referrer 不把带凭据的 origin 泄出
Cross-Origin-Opener-Policy: same-origin 隔离浏览上下文
Cross-Origin-Resource-Policy: same-origin 关闭不必要的跨源读取
Content-Security-Policy 仅 HTML 文档,附带防注入的三条基础约束

关于 CSP 的强度:目前前端存在内联样式与内联事件属性,且图表库走外部 CDN,
因此 CSP 必须放开 unsafe-inline,它不是完整的 XSS 防护。
实际生效的是防点击劫持与 object-src/base-uri/form-action 约束。
想完全收紧需要先改造前端,那是独立的一次改动。

新增访问日志。 落盘到 data/app.log,格式为
access 方法 路径 状态码 字节数 耗时。只记录元数据,不记录请求体与响应体
(里面是你的提示词与模型输出)。此前想复盘「昨天那次为什么失败」是做不到的 ——
请求日志是 128 条内存环形,重启即丢。

非环回监听时更严格。 维持原有行为:对外监听 + 空管理密码 = 拒绝启动。

版本号显示已修正

本版本面板 logo 旁显示的是正确的 v0.1.2,文件属性里的「文件版本」也是
0.1.2.0。上一版 v0.1.2 的 exe 曾显示 v0.1.0、文件属性 1.0.0.0 ——
两个版本号来自不同来源且从未同步。现已改为单一来源(代码里的 const Version),
RT_VERSION 资源由构建脚本自动读取,不再手写。

升级说明

直接替换 exe 即可。config.json 会自动补上新增的 max_rotate 字段(默认 3)。

如果你是从 v0.1.1 升级:v0.1.1 已经移除了「首次启动自动导入其他目录账号」
的功能,本版本延续该行为 —— 账号只能通过面板登录,或手工把 auths/*.json
拷入程序目录。程序不会扫描你的用户目录。

快速开始

  1. 下载 workbuddy-api-windows-amd64.exe,放到任意目录
  2. 双击启动 —— 首次启动会自动生成一个随机 API Key 并打印在日志里
  3. 浏览器打开面板,添加账号

客户端配置:

Base URL : http://127.0.0.1:7863/v1
API Key  : 启动日志里那一串(或在面板「设置」里查看)
模型名   : GET /v1/models 可查,或直接用 qodercn/glm-5.2 这类带前缀的

校验

Windows 用户如遇 SmartScreen「未知发布者」提示,这是未做代码签名的正常现象。
二进制以 -trimpath -s -w 构建,已自检不含编译机的绝对路径与凭据。

校验值

SHA-256  a42e0abf1ee114837fcb23c1359d8cf73cb0176fd760f638962e0e558d9ed55f