Skip to content

v0.1.17

Choose a tag to compare

@devilcoolyue devilcoolyue released this 22 Oct 23:59
· 55 commits to main since this release

Agentbox v0.1.17 新增 Claude 对话的缓存保活与五小时额度暂停,使用记录显示每次请求实测的首字时间、耗时与输出速度,网页对话逐次请求实时结算;Claude 与 Codex 的工具调用按各自 CLI 的样子显示,新增图标管理。数据库从 schema 19 迁移到 22(只加列加表),无需更新 Agent 镜像。

新增功能

  • 缓存保活:Claude 订阅的对话缓存在最后一次使用一小时后失效,回来再聊要把整段对话重新写入缓存(约为读取的二十倍费用)。空间可在「⋯ → 缓存保活…」开启(默认关闭,可连同终端里的 Claude 会话),用户离开期间服务端定时(默认 50 分钟)续读一次缓存,默认保留到最后一次请求后 3 小时(上限 6 小时),只保留上下文达到门槛(默认 100K token)的缓存。被空闲回收停掉的空间会被唤醒保活后再睡下,用户自己停止的空间保持停止;计划在服务重启和升级后恢复,/compact 后自动放弃旧缓存。费用在使用记录里单列为「缓存保活」。管理员在「系统设置 → 容器与资源」允许或关闭并设置默认值。
  • 五小时额度暂停:开启保活的空间在 Claude 订阅五小时窗口用到阈值(默认 95%,可设 50–99 或关闭)时,于下一次模型请求前停下当前回合,避免额度用光后保活被拒、缓存冷掉。暂停期间新消息排队,窗口重置后自动以「继续」接着执行;暂停状态在重启后保留。
  • 实测耗时与输出速度:使用记录显示每次请求的首字时间、总耗时和输出速度,CSV 同步增加这些列。Claude Code 与 Codex 经 OpenTelemetry 把计时报给服务端接收器(默认 172.17.0.1:1084,只保留请求 ID 与两个时间);终端请求按 CLI 日志估算,带「≈」。Codex 启动预热和终端旁路请求记为「后台请求」,只记花费不扣余额。
  • 逐次请求实时结算:长回合进行中,使用记录和余额随每次请求变化,回答底部显示「$x · 累计中」;使用记录与终端花费改为服务端推送,约 0.5 秒出现在页面上。
  • Claude 工具调用按终端样式显示:Update / Write 带编号 diff 与内容,Fetch、Web Search 显示结果摘要,连续的读取、搜索与命令折叠为一行,点开看完整输出;子代理调用归在 Agent 行内。连续的心跳检查与思考分别折叠为「心跳检查 · N 次」「思考过程 · N 段」。
  • Codex 工具调用按 CLI 样式显示:每个条目一行,带耗时、退出码与 diff 增删数,可展开命令、输出和 diff,执行中实时显示输出末尾。
  • 图标管理:「系统设置 → 图标管理」可以按位置或按图标替换,从内置的 Tabler 与 Lucide 图标库中选择,实时预览,登录页同样生效;设置纳入系统备份。默认图标改为 Tabler/Lucide。
  • 回合时限真正停止 CLI:超时后像用户点停止一样中断容器里的 CLI,不再让它在后台继续运行。默认时限改为 2 小时,可在「系统设置 → 容器与资源」设置(5–1440 分钟)。
  • 服务重启或升级打断的回合显示为一行「已重启 / 已升级」提示,不再显示为失败;向已停止的空间发消息时立即显示消息与「正在启动工作空间…」。

优化改进

  • 缓存保活恢复会话时不再重新附加 CLAUDE.md 等说明文件,一次保活写入的缓存从约 6K token 降到约 300 token。
  • 历史对话面板加载不再被会话轮询打断,失败或超时可重试;未发出消息的新对话不进入历史列表。
  • Claude 的思考进度事件不再写入历史,长回合的历史记录大幅变小。
  • 终端用量扫描改为增量读取转录文件。
  • README 首页重做,中英文各配一段真实控制台的动画导览与截图。

Bug 修复

  • 长回合进行中刷新页面,实时输出不再被隐藏、页面不再停在执行指示上。
  • Codex 终端用量自 Codex 0.160 起未被记录,现已恢复。
  • 引导消息里的图片显示为缩略图,不再撑出对话栏;附件关闭按钮回到缩略图右上角。
  • 对话流式输出时,空间头部的「⋯」菜单不再自动关闭。

升级与兼容

  • 从 v0.1.14~v0.1.16 升级会执行 schema 19 → 22 迁移(20 请求计时、21 缓存保活、22 五小时暂停),只加列加表,compatibility_epoch 不变,既有用量、价格与余额不变。v0.1.16 及更早的二进制不能打开新库:升级前保存并验证备份,回退须恢复升级前兼容备份到新目录,升级后记下的实测计时、保活设置与暂停状态不会保留。
  • 新增配置段 cache_keepalive、usage_telemetry 与 turn_timeout_min,旧版会忽略并在再次保存时丢掉。用量遥测接收器默认开启并监听 172.17.0.1:1084,可改 usage_telemetry.bind 或设 "usage_telemetry": {"disabled": true} 关闭;已自配 OTEL_* 收集器的账号与已有 [otel] 段的 Codex 配置不被改动。
  • 缓存保活默认关闭,每次保活是一次计费的模型请求。
  • Go 升级到 1.26.10,修复 GO-2026-6809(crypto/x509)。
  • 无需更新 Agent 镜像,默认固定镜像仍为 Claude Code 2.1.280。
  • 提供两个 Linux 服务端包、五个平台 abox-link、release.json 与 SHA256SUMS;桌面安装包独立发布,本次不发布新桌面包。
  • 请先结束当前网页任务。升级会创建并验证系统备份、重启服务,短暂断开 HTTP/WebSocket;完成后刷新网页。

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

set -e
version=v0.1.17
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"

已有实例不要重跑首次安装器。自定义安装路径请参考安装与升级说明。

已知问题

  • 终端会话的缓存保活依赖 Claude Code 2.1.303 起在转录里记录的系统提示与工具;默认固定镜像 2.1.280 上未单独验证。
  • 36 MB 左右的仓库经较慢的用户隧道克隆时,网桥约 160 秒后仍可能失败,原因仍在排查。

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

验证

  • 完整 CI:Go 构建/测试/vet、Linux 属主权限检查、网页类型/产物/契约、Chromium 与 WebKit、聊天故障恢复、漏洞检查及源码审计。
  • 发布候选 全部通过:七个平台归档与 Linux 安装、固定 CLI 镜像行为与合成会话、部署迁移/回退、真实 systemd 上从 schema 9 升级到 22 与备份恢复(确认保活运行时文件不进备份),以及历史和候选安装包敏感信息扫描。
  • 桌面开发包 在 macOS / Windows 上的单元测试与打包通过(本次不发布桌面包)。
  • 缓存保活、实测计时与逐次结算在生产环境用真实 Claude 订阅验证:50 分钟后续读一小时缓存(652,038 token 中读到 648,957)、连续三次保活、转录写入到页面推送约 0.5 秒;其余 CLI/恢复测试使用合成数据,不代表所有模型或真实设备验收。