Skip to content

v0.1.16 — 扩展、Webhook 通知与后台 Git 操作

Latest

Choose a tag to compare

@devilcoolyue devilcoolyue released this 19 Oct 04:22
· 14 commits to main since this release

Agentbox v0.1.16 新增管理员「扩展」菜单与两个官方扩展(循环保护、Webhook 通知),对话显示回合计时,网页 Git 网络操作改为后台执行并支持经内网隧道访问 HTTP 内网 Git 服务器。数据库仍为 schema 19,无需更新 Agent 镜像;未启用扩展时行为不变。

新增功能

  • 扩展:侧栏新增管理员专用的「扩展」菜单。扩展各自独立,通过统一的 SPI 接入;管理员逐项批准权限,按账号、用户或全部选择作用范围,作用于某个空间的扩展会在空间头部显示拼图图标。设计与边界
  • 循环保护(官方扩展):绑定 Claude 或 Codex 的 API Key / 中转账号后,这些账号的对话与终端经模型网关转发(默认 172.17.0.1:1083,按账号出口代理出站)。模型反复说同样的短句时中断这次回复,并在冷却期内以 422 拒绝相同的重试,包括 Claude Code 中断后改发的非流式兜底请求。只读取回复文字与加盐的请求指纹,不读提示词、工具参数和凭证;Claude 订阅与 ChatGPT 登录的账号不改道。扩展失效默认放行,并在扩展页标出。
  • Webhook 通知(官方扩展):把空间的创建、启动、停止、删除和对话回合结果(状态、模型、耗时、费用,不含对话内容)推送到通用 JSON 地址,或飞书、钉钉、企业微信机器人;可以只推失败的回合,文案支持简体、繁体和英文。
  • 模型网关设置:位于「系统设置 → IP 代理 → 模型网关」,只在有扩展用到模型钩子时启动,可开启「每次请求独占一条连接」。
  • 对话回合计时:回合进行中,执行指示旁逐秒显示已用时间,刷新页面后接着计;回合结束后,回答底部显示本轮总用时,历史记录同样保留。
  • 页面顶部加载条:点击、回车或切换页面后,请求超过 150ms 未返回时,页面顶边显示一条走动的细线;后台轮询不触发。
  • HTTP 内网 Git:Token 连接走自己的内网隧道且不配置 CA 时,可以使用 http:// 地址;直连仍只允许 HTTPS,路由保存后不可更改,仓库地址必须与连接的协议一致。

优化改进

  • 网页里的 Git 克隆、获取、拉取、推送和项目 Git 导入改为后台执行,页面轮询结果,不再受反向代理单次响应时限限制(如 Cloudflare 约 100 秒);单条网络命令最长 30 分钟,可以取消。上游、平台接口或线路失败返回 424,保留原因与操作编号,不再被反向代理换成它自己的 502/504 页面。
  • GitLab 连接自动给项目页地址补 .git(GitLab 会重定向这类 Git 请求,而网桥为保护令牌不跟随重定向)。
  • 文件上传:传输完成后提示服务器正在处理(压缩包需要解压);响应丢失或超时时只刷新目录,并提示先检查文件,不自动重传。

Bug 修复

  • 独立循环保护网关(开发预览):Claude Code 的流被中断后,会改发一次非流式、max_tokens 减半的同一请求。这个兜底原先能绕过冷却到达上游,而非流式回复网关检查不了。现在请求指纹不计 stream、max_tokens 等只影响返回方式的字段;服务端扩展使用同一规则。
  • 主题编辑器:「已复制」提示不再被稍后返回的校验结果覆盖。

升级与兼容

  • 从 v0.1.15 升级不新增数据库迁移,仍为 schema 19,compatibility_epoch 不变,无需更新 Agent 镜像。新增配置段 extensions 与 model_gateway。
  • 回退到 v0.1.15 不涉及数据库,但旧版会忽略这两段,再次保存配置时会丢掉它们,回退前请保留配置备份。绑定过 Codex 账号的空间,其 .codex/config.toml 指向模型网关,而旧版不监听网关:回退前先在扩展页解绑或停用。
  • 已用独立 abox-loop-guard 保护账号的部署,按迁移步骤先绑定扩展、再把账号地址改回原供应商,最后停用独立服务。
  • 提供两个 Linux 服务端包、五个平台 abox-link、release.json 与 SHA256SUMS;桌面安装包独立发布,本次不发布新桌面包。
  • 请先结束当前网页任务。升级会创建并验证系统备份、重启服务,短暂断开 HTTP/WebSocket;升级完成后刷新网页。

标准 Linux/systemd 版本目录安装可以使用「关于与更新 → 升级并重启」,或在 Bash 中执行:

set -e
version=v0.1.16
case "$(uname -m)" in
  x86_64) arch=amd64 ;;
  aarch64|arm64) arch=arm64 ;;
  *) echo "不支持的架构"; exit 1 ;;
esac
upgrade_dir=$(mktemp -d)
cd "$upgrade_dir"
package="agentbox_${version}_linux_${arch}"
base="https://github.com/devilcoolyue/agentbox/releases/download/${version}"
curl -fL --retry 3 -o "$package.tar.gz" "$base/$package.tar.gz"
curl -fL --retry 3 -o SHA256SUMS "$base/SHA256SUMS"
sha256sum --ignore-missing -c SHA256SUMS
tar -xzf "$package.tar.gz"
sudo python3 "$upgrade_dir/$package/deploy/release.py" install --package "$upgrade_dir/$package"
sudo python3 "$upgrade_dir/$package/deploy/release.py" activate --version "$version"

已有实例不要重跑首次安装器。自定义安装路径请参考安装与升级说明。v0.1.13 及更早版本直接升级仍涉及 schema 19 迁移,回退需恢复兼容备份。

已知问题

  • 36 MB 左右的仓库经较慢的用户隧道克隆时,网桥约 160 秒后仍可能失败;同一隧道下在终端直接 git clone 可以完成,原因仍在排查。
  • 循环保护只检查流式回复:客户端一开始就发非流式请求时不受保护(被中断后的非流式兜底会被冷却拒绝)。中断记录目前只保存在内存里,重启后清空。

完整变更记录 · 相对 v0.1.15 的源码差异

验证

  • 完整 CI 全部通过:Go 构建/测试/vet、Linux 属主权限检查、网页类型/产物/契约、Chromium 与 WebKit、聊天故障恢复、真实 Docker Git 网桥、漏洞检查及源码审计。
  • 发布候选 全部通过:七个平台归档与 Linux 安装、固定 CLI 镜像行为与合成会话、部署迁移/回退、真实 systemd 合成数据升级与备份恢复,以及历史和候选安装包敏感信息扫描。
  • 循环保护:真实 Claude Code 2.1.302 与 Codex 0.163.0(exec、app-server)经服务端模型网关访问合成上游,正常回复通过,复读被中断,CLI 的重试(含 Claude 的非流式兜底)全部在网关被冷却拒绝(verify.py run --step cli.model-gateway);生产空间(默认网桥 + 透明网络)到网关端口可达。未覆盖真实供应商与终端交互界面。
  • CLI/恢复测试使用合成数据,不代表所有模型或真实设备验收。