Skip to content

ClawProxyHub v1.1.5

Choose a tag to compare

@ShadowSmallBaby ShadowSmallBaby released this 23 Sep 09:49
· 104 commits to main since this release
894a087

ClawProxyHub v1.1.5

可观测性版本。新增运行日志体系(系统级事件统一落库、级别可配、明细可导出),任务偏移从硬编码改为可配置,账号测试补齐信封请求与事件明细诊断,并修复默认实例编辑、i18n 键缺失等问题。

概览

  • 运行日志:账号刷新/登录失败、插件日志、插件崩溃重启、任务扫描异常、日志清理统一落 run_logs,日志页新增「运行日志」标签,点击行展开明细抽屉并可导出 JSON
  • 级别可配:error / warn / debug / info 递增包含(默认 error),管理端改动实时生效;debug 级记录上游请求与响应明细
  • 任务偏移可配:daily 触发抖动窗口由固定 30 分钟改为 0–45 分钟可配,0 = 关闭偏移
  • 调用日志区分同步/流式:新增 stream 列与类型展示
  • 账号测试诊断:回传信封请求与事件明细,可一键导出 JSON;扫码登录二维码内联渲染
  • 默认实例保护:系统生成的默认实例不再暴露名称/站点地址输入

明细

运行日志(internal/runlog + internal/admin)

  • 新增 run_logs 表(migration 000010):level / module / action / message / detail / account_id,按 created_at、(module, id) 建索引
  • runlog.Logger 按配置级别过滤后落库,写库失败静默(日志不应影响主流程);级别读取走闭包实时取设置,改动无需重启
  • 埋点:account 登录/刷新失败(带 account_id)、plugin 崩溃自动重启与重启失败、task tick panic、janitor 清理过期调用日志
  • 插件侧经宿主 Log 落库:LogEntry.Fields 约定 action(固定词表 chat/login/refresh/profile/models/http/task/store,未命中按 other)+ detail(排查明细)
  • 新增 GET /admin/run-logs(分页 + 级别/模块/关键字/时间区间筛选)与 DELETE /admin/run-logs

SDK(sdk)

  • Host.LogFields(level, message, fields):支持结构化字段,原 Log 签名保持兼容
  • 新增 sdk/http.go 出站助手 HTTPPost / HTTPStream(SSE 逐块回调),debug 级统一记录请求与响应:敏感头打码(api-key / authorization / cookie / x-api-key / set-cookie,保留前后各 4 字符)
  • 注意:请求体与响应体在 debug 级为全量明文入库,该级别仅建议本机排查时开启

任务偏移(internal/task + internal/setting)

  • 删除硬编码 dailyJitter = 30 * time.Minute,改读 task.daily_jitter_minutes(默认 30,上限 45)
  • jitter = 0 时跳过抖动(避免 rand.Int63n(0) panic),语义为关闭偏移

调用日志(internal/gateway + web)

  • request_logs 新增 stream 列(migration 000011),日志列表新增类型列展示同步/流式

账号测试诊断(internal/admin + web)

  • 测试接口回传 request(清除凭据后 protojson 序列化的信封请求)与 events(事件明细,上限 200 条防爆)
  • 前端折叠面板展示,一键导出 请求/事件/回答/日志 为 JSON
  • 登录步骤 url 为 data:image/ 时内联渲染二维码,不再误调浏览器打开
  • 客户端选择卡片改 grid 布局(每行三个、可滚动)

修复(web)

  • 运行日志表格点击无响应:TDesign row-click 为单参数回调,原两参数签名解构失败
  • 单实例插件的默认实例:弹窗内隐藏名称/站点地址、跳过校验并沿用原值;无附加设置字段时隐藏编辑入口
  • 插件与实例设置弹窗统一「打开即预填 schema 默认值」(原先仅下拉类字段预填)
  • 补回误删的 logs.tokenDetail 中文键(LogCells 仍在引用,中文界面会显示原始键名)
  • 任务页/日志页表格由固定像素高度改为 flex 高度链,随窗口自适应并保留表格内部滚动

代码清理

  • sdk/http.go 移除重复实现:零调用的 map 版 redactHeaders、空实现 maskBody、itoa→fmtInt 无效包装,以及手写的 lower/indexOf/splitLines/hasPrefix/trimSuffix/trimSpace/bytesIndex/jsonQuote,统一改用 strings / strconv / encoding/json(后者对 map 键自动升序,日志字段顺序稳定可对照)
  • plugin.Manager.Get 修复变量遮蔽:重启失败日志原先取到的是外层 err(必为 nil),真实错误被丢弃
  • setting.RunLevel 去掉重复读取;runlog.Logger 字段更名并对非法级别配置回退处理

升级说明

  • 无破坏性变更;新增 migration 000010(建 run_logs 表)与 000011(request_logs 加 stream 列),启动自动执行
  • 运行日志默认 error 级,仅记录失败事件,正常运行不产生写入压力;切到 debug 前请留意上节关于明文入库的说明
  • 插件仓库无需改动;如需引用本版本核心,把 go.mod 依赖升到 github.com/ShadowSmallBaby/ClawProxyHub v1.1.5