Repository navigation
workbuddy-api v0.1.2 — 账号轮换可配置 + 安全响应头与访问日志
功能与改进
账号池调度
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
拷入程序目录。程序不会扫描你的用户目录。
快速开始
- 下载
workbuddy-api-windows-amd64.exe,放到任意目录 - 双击启动 —— 首次启动会自动生成一个随机 API Key 并打印在日志里
- 浏览器打开面板,添加账号
客户端配置:
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