Repository navigation
Releases: ShadowSmallBaby/ClawProxyHub
Releases · ShadowSmallBaby/ClawProxyHub
Release list
ClawProxyHub v2.0.1
ClawProxyHub v2.0.1
分页体验与插件 Turnstile 服务字段修复版。
主要更新
- 插件支持 Turnstile 服务表单字段,可为需要额外验证参数的上游服务提供完整配置。
- 修复 Web 列表页分页顶部间距,筛选区与分页控件布局更稳定。
ClawProxyHub v2.0.0
ClawProxyHub v2.0.0
Android、签名扩展与统一发行版本。新增原生 Android 客户端、独立 Lua 编辑器、CLI 和托管 MCP,让桌面与手机共用核心能力及组件安装流程。
主要更新
Android 与组件管理
- Android 提供本地核心、原生业务插件管理与 App 工作台;客户端、核心和前端版本独立显示。
- Go 业务插件与 Go 功能扩展通过私有 Service 加载,Lua 插件通过已安装的 Lua Host 运行。
- 原生设置管理 Lua Host 和使用 APP 证书签名的
.cphui界面包;界面加载失败时支持回退。 - 插件初始化和关闭增加执行期限,超时终止私有进程并回收 worker,支持故障后重新加载。
签名扩展与 Lua 编辑器
- 扩展中心支持签名包、挂载目录、在线目录、离线缓存和持久化信任源,校验资源摘要、权限、平台及签名。
- Lua Host 安装前通过协议握手和实际 Lua 执行校验,候选运行时失败时保留现用版本。
- Lua 编辑器作为独立扩展安装,桌面和 Android 共用 Go 后端、源码检查、声明式存储、持久化草稿及修订冲突保护。
- 扩展构建器统一生成平台和原生入口信息,缓存自动覆盖静态资产、SDK 桥及生成资源的生产依赖。
CLI 与 MCP
- 桌面发行包新增
cli,连接已有核心执行管理动作。 - MCP 在核心进程内运行,采用独立管理员密钥和显式工具授权;可接入外部 MCP 客户端。
- 每次初始化获得独立会话,共享密钥的客户端可以复用请求 ID,取消操作不会影响另一客户端。CLI 自动转发并关闭会话。
发行与界面
- 桌面统一发布 full ZIP,一级目录为
ClawProxyHub/,包含内嵌 Web 的核心、CLI、发行锁及data/packages/中的 Lua Host 和 Lua 编辑器签名包。 - 组件版本与更新源统一维护于
project.toml,桌面与 Android 使用 Release 更新清单,各组件保持独立版本。 - 首次启动安装可信挂载包,保留已有安装、停用与卸载状态;更新已有组件需显式安装。App 工作台不预配 Lua 编辑器。
- Web 按页面依赖导入 TDesign,缩减包体;删除影响预览隔离旧目标的迟到响应,失败时明确提示。
- 清理冗余代码和模块校验记录,修正文档与本地文件忽略规则。
组件版本
| 组件 | 版本 |
|---|---|
| 核心 / 桌面发行 | 2.0.0 |
| Android 客户端 | 1.0.0,versionCode 1 |
| Web / App 工作台 | 0.6.0 |
| Lua Host | 0.3.0 |
| Lua 编辑器 | 0.2.0 |
升级说明
- 升级前备份完整运行数据,尤其是数据库及配套加密密钥。核心自动迁移至
000020_managed_mcp;回退时使用升级前的完整备份,不直接让旧核心读取升级后的数据库。 - 桌面改用 full ZIP,保留原有数据目录。组件停用或卸载状态不会因为替换核心而自动重置。
- 运行时、功能扩展和业务插件分别管理;Lua 编辑器执行脚本需要启用 Lua Host。Android 需从扩展中心单独安装编辑器。
- MCP 客户端必须先 initialize,并在后续请求中携带
Mcp-Session-Id。核心重启、权限/密钥变更或会话过期后需重新初始化;不会自动重放工具调用。 - Compose 部署需在
.env或进程环境中设置CPH_ADMIN_PASSWORD。已有管理员密码仍以数据库为准。
ClawProxyHub v1.5.2
ClawProxyHub v1.5.2
协议兼容、调度与稳定性修复版。新增可配置的任务时区,统一管理后台布局与分页,并修复流式转发、凭据授权、插件安装及备份恢复问题。
主要更新
任务时区与保存体验
- 系统设置新增调度时区,默认
Asia/Shanghai(北京时间),支持自定义 IANA 时区。 - 每日任务和 Cron 按设置的时区执行,修复服务器使用 UTC 时出现的 8 小时偏差。数据库继续使用 UTC,页面仍按浏览器本地时间显示。
- 时区与每日随机偏移通过同一个底部保存按钮生效,手机端也可保存;提示信息同步精简。
- 切换时区后重新计算日历任务的下次执行时间,固定间隔和一次性任务保留原时间点。
- 限制任务执行并发,修复前面的到期规则没有可用账号时,后续任务长期无法执行的问题。
布局、分页与表单
- 页面统一为固定页头、内部滚动的内容区、固定底部分页区,筛选与功能按钮在滚动时保持可用。
- 补齐账号、实例、分组、代理、路由、密钥、OAuth 凭证和已安装插件列表分页。
- 修复筛选、切换页大小、删除末页记录后的页码与滚动行为,完善任务和日志页分页。
- 修复登录表单项间距与设置抽屉组件引用。
网关、SDK 与 LuaHost
- 修复流式响应缺少结束事件时被误判成功,以及上游错误分类不准确的问题。
- 完善交错工具调用、工具参数增量、停止序列和推理签名处理。
- 请求取消贯通网关、插件 RPC、SDK HTTP 与 LuaHost,及时结束取消后的上游处理。
- 网关继续兼容旧插件的无 ID 工具调用增量,无需同时升级全部插件即可升级核心。
- 收紧 Lua 文件加载与响应读取边界,关闭 Lua 总开关时停止已运行的 Lua 插件。
三协议兼容与输出保留
- Chat、Responses、Anthropic 入口加强内容、工具选择及调用历史校验,明确拒绝不支持的附件、托管工具和多候选请求。
- 保留工具 strict 的显式 true/false、并行工具控制和新版 token 上限,补齐 Chat ↔ Responses 结构化输出及图片 detail 转换。
- SSE 统一按事件分帧,支持多行 data、CRLF/BOM、正常 EOF 和大小限制;断流不补残帧,避免丢失最终 usage。
- Responses 从最终快照补齐正文、推理与工具参数;正文与摘要分别合并,防止重复或冲突。工具调用支持名称晚到,拒绝身份冲突、重复 ID 和结束时缺少名称。
- 统一推理强度与 thinking budget 映射;thinking.disabled 优先于同源 output_config.effort。
- 同协议保留 metadata、service_tier、缓存策略等关键白名单参数。引用和注解保留所属内容块,拒绝正文在 Chat/Responses 出口恢复专用结构,覆盖流式、非流式与历史回放。
- protobuf 仅新增可选字段,保持 protocol v2 和既有字段编号;LuaHost 同步传递新增结构。跨协议暂不转换不同格式的注解。
凭据、授权与恢复
- 加密密钥成功持久化后才投入使用,显式处理加解密失败;代理密码改为加密存储。
- 串行处理同一账号的凭据刷新与任务更新,避免覆盖较新的凭据。
- 修复 API 密钥初始化重复创建,授权关系事务保存;受限但未绑定路由的密钥不再获得全部路由权限。
- 增加登录限流,修改密码后撤销旧会话。
- 插件安装增加包内容校验和失败回滚,同时允许 ZIP 内正常的目录条目。
- 备份恢复增加数据库、密钥与包内容校验,并处理恢复过程被中断的情况。
- SDK 调试日志移除请求/响应正文等敏感内容;运行日志与任务执行记录按保留期分批清理。
发布构建
- 前端只构建一次,所有平台复用同一份产物。
- 核心改用各目标平台原生构建并启用 CGO,保证 SQLite 可用;LuaHost 保持 CGO 关闭。
- 继续提供完整版、轻量版和独立 LuaHost,发布 CI 不新增重复测试。
升级说明
- 数据库迁移:启动时自动执行
000015_security_state和000016_schedule_timezone,补齐授权状态、会话版本、代理密码密文及调度时区。 - 备份与回退:升级前备份数据库和配套加密密钥。首次启动会将现有代理密码转为密文;需要回退时使用升级前备份,不直接让旧版本读取升级后的数据库。
- 任务时区:默认按北京时间调度。原先使用其他时区的部署,请在“系统设置 → 任务”中调整后保存;每日随机偏移仍按原配置生效。
- 历史日志:本版没有历史日志脱敏或清空迁移。正常保留期清理仍会执行:调用日志沿用原设置,运行日志与已完成任务记录默认保留 30 天。
- 旧插件兼容:核心保留兼容处理。SDK 内的修复需要插件更新 SDK 并重新构建后生效;插件维护者可在核心 tag 发布后,将依赖更新至
v1.5.2,再递增已发布插件的补丁版本。 - Compose 部署:使用本版
docker-compose.yml时,需在环境变量或.env中显式设置CPH_ADMIN_PASSWORD。已有管理员仍以数据库中的密码为准。
ClawProxyHub v1.5.0
ClawProxyHub v1.5.0
移动端与布局版。管理后台全面移动端适配(三端断点、PWA),桌面端布局固定 + 筛选条容器化,代码编辑器暗色观感对齐 One Dark。纯前端版本,无后端 / DB 变更。
概览
- 移动端适配:手机端侧栏收抽屉、筛选收底部抽屉 + 悬浮按钮、表格转卡片、弹窗/抽屉自适应,可安装为 PWA
- 桌面布局固定:侧栏/Header/内容区尺寸锁死,内容区仅纵向滚动,横向溢出由筛选折行消化
- 编辑器暗色修复:选中/光标/搜索命中/补全浮层按 One Dark 对比度补齐,搜索面板居右,恢复 Ctrl+Z
明细
三端断点体系
useIsMobile/useIsTablet(767 / 1024px 断点):全部布局与业务页接入- 手机端:侧栏收抽屉、筛选收底部抽屉(
CDrawer)+MobileFab悬浮按钮、CTable转mobile-cards卡片视图(phone-cols指定保留列)、弹窗/抽屉改全屏自适应尺寸 - PWA:
web/public/manifest.webmanifest,可安装到主屏
桌面布局固定
- 外层
html/body/#app锁死 overflow,侧栏/内层min-width: 0压制 flex 内容撑开,内容区仅纵向滚动(overflow-x: hidden) PageHeader右侧改flex: 1; flex-wrap: wrap:筛选条放不下自动折行,不撑破内容区- 筛选输入宽度收敛为全局工具类
w-2xs~w-2xl(110~480px),业务页面行内style="width: …px"全部替换
表单与组件收口
- 抽取
FormItem/SysInfoCard组件,业务页面散落的 label 布局统一走FormItem CDialog重写为居中弹窗;CDraw更名CDrawer,内置手机/桌面两态尺寸(手机 85% / 桌面 width 默认 480px,复杂抽屉显式传 px),调用方免传 placementCPagination迷你折叠(页码只放前后几页中间省略);新增COptions/MobileFab基础组件
代码编辑器暗色修复
- 选中双路径覆盖(
::selection+.cm-selectionBackground),修复暗色下选中色与背景同色不可见 - 光标改亮蓝 2px,非聚焦半透明;搜索命中琥珀色、选中词匹配淡绿色,三者语义分离
- 补全浮层深底卡片 + 圆角描边阴影;搜索面板浮层居右上角(
width: fit-content)不挤占编辑区 - 补挂
history()+historyKeymap,恢复 Ctrl+Z;统一字体度量(font-variant-ligatures: none)修复长按选择错位
升级说明
- 无 migration(本版无 DB 变更)
- 纯前端版本:后端无变更,现有插件二进制无需重编
- 部署:重新构建 web(
pnpm build)或拉取新二进制即可;PWA manifest 随静态资源分发
ClawProxyHub v1.3.0
ClawProxyHub v1.3.0
插件创作版。新增在线 Lua 插件编辑器(自建插件零编译),luahost 补齐任务契约,作者来源统一为 manifest.json;全站时间按本地时区显示,离线市场快照全量同步至 26 条。
概览
- 在线 Lua 插件编辑器:自建插件落
data/plugins/local/<name>/,全屏编辑页 + CodeMirror 6(Lua 高亮/补全/搜索),保存即热更重启进程 - luahost 任务契约补齐:
RunTask/ListTaskCapabilities,Lua 插件可声明并执行任务(此前必落 Unimplemented) - 作者来源单一:author 统一以落盘
manifest.json为准,Go 插件 main.go / lua 脚本声明均不作数 - 全站时区修复:落库统一 UTC,展示按浏览器本地时区,修复服务器 UTC 导致的 8 小时偏差
- 离线市场全量同步:10 → 26 条,新增 16 个插件,10 个插件版本 bump
明细
在线 Lua 插件编辑器
- 新接口:
GET /admin/plugins/scaffold(内置脚手架)、POST /admin/plugins/local(multipart:name/label/lua/icon)、GET/PUT /admin/plugins/{name}/source(读/存源码) - 身份托管:name 建档后固定、version 恒
latest、双语 label(zh/en) 随main.lua顶部常量同步回 manifest.json;luahost 握手以 manifest.json 为准 - 仅
data/plugins/local/下的自建插件可编辑(插件列表editable标记);Lua 在系统设置禁用时拒建/拒存(403) - 卸载时 Windows 文件锁退避重试;新增 authoring/identity 单元测试
luahost 任务契约
ListTaskCapabilities→ 脚本tasks(),RunTask→ 脚本task(req),与 Go 插件契约同构;脚本未声明回空/501- ClawPlugin 8 个 RPC 全覆盖;
examples/luatask提供最小骨架(生产插件 autoclaw 不动)
lua 插件市场识别修复
- luahost 握手从 manifest.json 补全 author(原只补 name/version),修复市场按 author+name 判同插件失配、已装插件误显示「安装」
- 已装判定改用磁盘
Installed()取代运行时Names()/Get(),未运行/崩溃的插件也能识别 syncRecord首次入库补InstalledAt=time.Now(),修复零值覆盖 DBCURRENT_TIMESTAMP默认导致installed_at=0001-01-01
全站时区
- GORM
NowFunc统一created_at/updated_at落库 UTC,消除运行机系统时区差异 - admin keys/accounts 时间序列化改 RFC3339 带时区标识,logs CSV 用本地墙钟
- 前端
fmtTime改为new Date解析后按浏览器本地时区格式化;Keys/Accounts/NotifBell/Profile/OAuth 统一收口到utils/format.ts
其他
- 账号管理支持按「插件 · 实例」筛选(
instance_id=0记为默认实例) - VersionChip 更新日志弹窗 attach 到 body,修复组件化后被困 header 区域
- 密钥列表操作列加宽至 200px、路由列表超时列加宽至 108px,避免内容换行
离线市场快照
- 新增 16 个插件:autoclaw 0.1.1、chatjimmy 0.1.1、codearts 0.1.0、codebuff 0.1.1、doubao 0.1.1、gorkcli 0.1.1、improvado 0.1.1、joycode 0.1.1、loomy 0.1.1、mimo 0.1.1、notion 0.1.1、postman 0.1.1、puter 0.1.1、qoder 0.1.1、raccoon 0.1.0、trae 0.1.0
- 版本 bump:cline 0.1.5、commandcode 0.1.2、ima 0.1.3、lobsterai 0.1.7、mirasim 0.1.1、newapi 0.1.4、opencode 0.1.4、todofor 0.1.1、workbuddy 0.1.7、zcode 0.1.1(sha256 取自 CI 发布资产)
- plugins submodule → 0f52234
升级说明
- 无 migration(本版无 DB 变更)
- 时区:升级后新写入的时间列统一 UTC;历史存量数据的时区语义不变,前端按带时区偏移的时间串解析,旧数据如无偏移标识会按浏览器本地时区直显
- 插件:本版无 SDK 层变更,现有插件二进制无需重编;plugins submodule 指针已更新,插件
go.mod依赖如需引用本版核心,可 bump 至v1.3.0 - 自建插件:在线编辑器创建的插件落
data/plugins/local/,随数据目录备份即可,不进 git
ClawProxyHub v1.2.2
ClawProxyHub v1.2.2
稳定性修复版。修复长会话/大请求撞 core↔插件 gRPC 默认 4MB 上限导致的 502,改为经环境变量抬高上限。
概览
- 修复长会话 502:核心与插件间 gRPC 通信沿用默认 4MB 上限,长会话/大请求(含超大 tool_call、图片)会触发
ResourceExhausted: received message larger than max→ 502 - 新增
CPH_GRPC_MAX_MSG_SIZE:默认 64MB,支持64mb/64m/4096kb/ 纯字节等写法(大小写、是否带b、是否带空格均不敏感,1024 进制) - 两端一致:SDK 服务端与核心客户端读同一变量,非法或低于 4MB 回退默认
明细
gRPC 消息上限可配(CPH_GRPC_MAX_MSG_SIZE)
sdk.GRPCMaxMsgSize():解析 env(parseByteSize支持单位与纯字节),空/非法/过小回退默认 64MB,下限保护 4MB- 插件服务端:
sdk.Serve的grpc.NewServer追加MaxRecvMsgSize+MaxSendMsgSize(Go 插件与 Lua 插件 luahost 同走sdk.Serve,一处覆盖) - 核心客户端:
goplugin.ClientConfig.GRPCDialOptions设MaxCallRecvMsgSize+MaxCallSendMsgSize - 环境变量经父子进程继承(
exec.Command不改cmd.Env),核心注入即传递给全部插件子进程 - 新增
sdk/bytesize_test.go覆盖各单位/大小写/空格/纯数字/非法值与回退逻辑
升级说明
- 无 migration(本版无 DB 变更)
- 配置:如需调整上限,在
.env/ docker-compose 设CPH_GRPC_MAX_MSG_SIZE=64mb(不设走默认 64MB),改后重启核心 ⚠️ 插件须重编:读取逻辑在 SDK 层,现有插件二进制不会读该 env,须用本版 SDK 重编后才享受新的服务端上限;重编前插件服务端仍是 4MB- 插件
go.mod依赖如需引用本版核心,可 bump 至v1.2.2
ClawProxyHub v1.2.1
ClawProxyHub v1.2.1
插件生态版。插件全量重构至 SDK 统一传输层,新增 14 个插件与首个 Lua 插件(autoclaw),离线市场快照同步。
概览
- 插件全量重构:出站传输统一走
sdk.*与host.StreamSSE/StreamRaw,shared退为薄封装(标 Deprecated) - 已发布 7 个插件版本 bump:cline 0.1.3 / ima 0.1.2 / lobsterai 0.1.5 / newapi 0.1.3 / opencode 0.1.3 / workbuddy 0.1.6 / commandcode 0.1.1
- 新增 14 个插件(均 v0.1.0):chatjimmy / codebuff / doubao / gorkcli / improvado / joycode / mimo / notion / postman / puter / qoder / todofor / mirasim / zcode
- 首个 Lua 插件:autoclaw(
plugins-lua/,runtime=lua 示范) - 构建流程:CI 双目录扫描(
plugins/+plugins-lua/) - 离线市场快照:10 条(mirasim / todofor / zcode 0.1.0 上架,CI 发布 sha256)
明细
插件全量重构(sdk 统一传输)
shared.ScanSSE/shared.UpstreamClient/shared.ProxyURL→sdk.*(~80 处 / 28 个插件),全部享受 sdk 统一打码日志(debug 级请求/响应入库,敏感头保留前后 4 字符)- ima:旧
Host.HTTPStream(Deprecated)→host.StreamSSE(blockParser行级→块级适配,保留回调透传语义);至此全插件零HTTPStream调用 - 七文件分层拆分(auth / model / account / chat / upstream / envelope 等),workbuddy 任务按
task_*.go细拆(activities.go → task_checkin / task_growth / task_travel / task_blindbox) shared.go:传输层薄封装转调 sdk 并标// Deprecated:(契约已迁至 sdk.SSEParser 等);纯工具(RandHex/RandUUID/OrDefault/Failed/ReadLimited)保留- todofor 编译遗留修复(重复 credential 声明、clientFrom → credFrom)
- 插件模块
go.mod依赖升级至核心v1.2.0
新增插件(14 个,均 v0.1.0)
- chatjimmy / codebuff / doubao / gorkcli / improvado / joycode / mimo / notion / postman / puter / qoder / zcode:Go 插件,七文件分层,出站统一
sdk.* - todofor:WebSocket 订阅运行事件(gorilla/websocket)
- mirasim:mrs-sig-v2 / mrs-seal-v1 加密契约(x/crypto chacha20poly1305 + curve25519)
- devin / warp(含新依赖):本版未入库,待定(devin 用 protobuf + 本地 devinproto;warp 依赖外部 warp-proto-apis module)
Lua 插件(autoclaw)
plugins-lua/autoclaw:首个 runtime=lua 示范(main.lua + manifest),pack识别plugins-lua/目录并盖runtime="lua",产平台无关 zip- CI:build.yml 双目录扫描(
plugins/*/manifest.json+plugins-lua/*/manifest.json,shopt nullglob)
文档
- AGENTS.md:Go 插件(§1–10)/ Lua 插件(§11)双路径规范;目录布局更新(
plugins/plugins/+plugins/plugins-lua/) - 核心侧架构图与前端目录说明补运行时/新插件
升级说明
- 无 migration(本版无 DB 变更),直接替换二进制即可
- 离线市场快照已同步 10 条;市场在线索引由插件仓 CI 维护(
5a44d00) - 插件仓(submodule):指针 → 5a44d00(14 新插件 + 7 bump + autoclaw + 快照);devin / warp 留在本地待定
- 如需引用本版本核心,插件
go.mod依赖保持github.com/ShadowSmallBaby/ClawProxyHub v1.2.0(本版核心 API 无变化)
ClawProxyHub v1.2.0
ClawProxyHub v1.2.0
Lua 插件运行时版。新增脚本插件宿主 LuaHost(社区零 Go、零编译写 Lua 插件),并强化网关鉴权/恢复/超时体系、统一 SDK 传输层、插件 KV store 隔离持久化。
概览
- LuaHost 运行时:Lua 插件宿主(
hosts/luahost,独立 module),沙箱化 gopher-lua VM;社区作者只写main.lua - 分发与加载:pack 识别
runtime=lua;核心-tags luahost_embed内置注入;P1 共享单份 + P0 启动刷新 + 手动上传替换 - 系统设置「插件」板块:Lua 启用 / 隔离 / 更新三配置;插件卡片 Go/Lua 运行时徽章
- 插件 KV store:按插件名隔离 + 持久化到 DB(迁移 000014)
- 网关强化:O(1) 鉴权、凭据恢复链、首帧/首字双超时、超窗自动截断
- SDK 统一传输层:HTTP/SSE 出站统一 + 日志铺底
明细
LuaHost 运行时(hosts/luahost)
- 通用 go-plugin 宿主:把 ClawPlugin 契约翻成 Lua 调用——proto ↔ table 双向映射(snake_case 对齐)、
stream对象 typed 方法(message_start/content_delta/reasoning_delta/tool_call_delta/message_finish/failed) - 宿主能力
cph.*:http(request 回{body,status,headers},请求未完成 raise;stream 支持format="openai"宿主解析 SSE 驱动 stream 对象)、json/hash(md5/sha256/hmac_sha256/base64url)/time(now/sleep)/random(uuid/hex)/log(落核心 runlog)/openai.chat_body(信封→OpenAI body) - 约定函数(
return M,函数挂为字段):handshake(声明 capabilities/auth_methods,与 Go 插件 Handshake 同构;缺失回退 manifest.json)/chat(req, stream)/models/login/refresh/profile - 沙箱:白名单标准库(base/table/string/math)+ 剔除
dofile/load/print/collectgarbage;沙箱化require("lib.*")(仅插件目录、禁路径逃逸、模块缓存);一切出站只经cph.* - VM 复用池;所有 RPC 顶层
recover()(Go 侧 panic 转错误不崩进程,stderr 打[luahost] panic in X()) - 独立 module:依赖
sdk+ 纯 Gogopher-lua(交叉编译零痛)
分发与加载(P1 + P0)
- pack:双目录扫描(
plugins/+plugins-lua/);plugins-lua/即盖runtime="lua"+entry,protocol_version由 SDK 盖——作者 manifest 只写 name/version/author/label/icon;lua 产平台无关 zip(跳过 go build);市场 index.json 带runtime - 加载(方案 A):核心按
manifest.runtime=="lua"分流,启动共享 LuaHost(data/hosts/luahost-<os>-<arch>+--dir <插件目录>),manager 全程零改动(照标准 go-plugin 处理) - P1 共享单份:一份 LuaHost 服务所有 lua 插件(磁盘一份、每插件一进程=隔离不丢);
pack -install旧式逐插件拷贝仍兼容(回退) - P0 升级刷新:
ensureLuahost按 sha256 比对,核心升级带来新内置 LuaHost 时开机自动刷新共享文件;.manual标记(手动上传)跳过自动刷新 - go:embed:
-tags luahost_embed把internal/plugin/luahost.bin编进核心(默认 stub,装 lua 插件被拒并提示);Dockerfile 已带两步构建 - Start 取名:由插件目录取插件名(共享后 binPath 落 data/hosts,不能从二进制路径推名)——与 store 隔离命名空间对齐
系统设置「插件」板块(web + internal/admin)
- Lua 启用
plugin.lua_enabled(默认开):关闭则安装网关拒装 lua 插件(installZip单点读包内 manifest.runtime,市场/上传两路径覆盖) - Lua 隔离
plugin.lua_isolation:本版锁定为开(UI disabled + 服务端强制 true;共享运行态后续版本) - Lua 更新:手动更新(上传 LuaHost 二进制 → 停 lua 插件 → 覆盖共享运行时 → 打
.manual→ 拉起)/ 检查更新(占位禁用) - Go/Lua 运行时徽章:市场卡 + 已装卡(
MarketEntry/pluginView加runtime,取自落盘 manifest——决策 A:不动 proto、protocol_version 保持 2)
插件 KV store(internal/plugin)
- 按插件名隔离:
HostService加plugin字段 +forPlugin(name)派生(manager 从插件目录取名注入) - 持久化:迁移 000014
plugin_stores(PK plugin+key);StoreGet(Find 避免命中不到日志噪声)/StorePut(UPSERT);卸载级联清理;重启不丢
网关强化(internal/gateway)
- O(1) 鉴权:
keys.key_lookup确定性查找列(sha256(raw)),命中免全表解密 - 凭据恢复链:401 → 刷新同账号后重试;线性重试(
gateway.max_retries上限) - 首帧/首字双超时:
first_event_timeout(等首事件,探测上游/代理挂死)+first_token_timeout(首事件→首个内容 token,容纳推理),路由级可覆盖全局(迁移 000013 拆分旧timeout_seconds) - 输入超窗自动截断:
gateway.context_truncate_*(开关/阈值/估算系数)
SDK 统一传输层(sdk)
sdk/http.go出站 request/stream 统一:敏感头打码(api-key/authorization/cookie…,保留前后 4 字符)、debug 级全量入库、Host.LogFields结构化字段
其他
- 内部计划文档移出仓库(
docs/入.gitignore,不入库)
升级说明
- 新增 migration 000014(
plugin_stores):启动自动执行,无手工步骤 - 带 Lua 支持的核心需两步构建:先
go build -C hosts/luahost -o internal/plugin/luahost.bin .,再go build -tags luahost_embed ./cmd/cph(Dockerfile 已含);不带 tag 的核心为 stub——lua 插件仍能跑(共享文件在data/hosts/时),但从市场装新 lua 插件会被拒 - 插件仓(submodule):autoclaw(lua)与 pack 改动在插件仓,需单独提交/发布后回核心 bump 指针
- 如需引用本版本核心,把插件
go.mod依赖升到github.com/ShadowSmallBaby/ClawProxyHub v1.2.0
ClawProxyHub v1.1.6
ClawProxyHub v1.1.6
插件生态版。新增 commandcode 插件,ima 重构为七文件分层,修复前端重构遗留问题,离线市场快照同步。
概览
- commandcode 插件 v0.1.0:Command Code(api.commandcode.ai)反代
- ima 插件 v0.1.1:内部重构为七文件分层,修复 function_call 过滤器重复输出
- 前端修复:实例弹窗 API 调用、头部版本牌、复制文本
- 离线市场:新增 commandcode,ima 更新到 0.1.1
明细
commandcode 插件(plugins/plugins/commandcode)
- Command Code(api.commandcode.ai)反代:信封 ↔ CC 私有协议双向转换(
/alpha/generateNDJSON 流) - 七文件分层(main/auth/model/upstream/envelope/chat/fingerprint),与 ima 同构
- 反检测机制:apiKey 派生确定性设备指纹(登录时生成、随凭据 blob 持久化,该账号永远同一台设备)、fingerprint/lifecycle 预请求(8h+2h 抖动)、per-key session(12h+1h 抖动)
- 协议细节:空 system 占位(阻止上游注入 ~7.5K token 默认提示词)、noCacheTokens 用量语义(信封 Anthropic 语义 input 只计非缓存)、零输出报 429 让下游退避重试、idle 看门狗(默认 90s,可经
stream_idle_seconds调大) - 设备指纹随凭据持久化:
credential.Fingerprint进 blob,重启/换机/多实例不变;旧账号(blob 无指纹)按当前设置即时生成
ima 重构(plugins/plugins/ima)
- 七文件分层(main/auth/model/upstream/envelope/chat),与 commandcode 完全同构:auth 收编凭据、model 独立(get_models 同步)、envelope 收编 question 拼装、chat 只留编排
- function_call 过滤器修复:malformed 块在后续 chunk 反复输出(原以
parsed作解析起点,坏块不进parsed),改为独立seen计数器,坏块同样推进 - const 谁用谁定义:
maxQuestion/cjkRe归 envelope(唯一使用者)
前端修复(web)
- InstanceFormDialog 迁移
entitiesAPI(上轮 views 分域归一的漏网) - 头部挂上版本牌(
VersionChip,组件 v1.1.5 已存在但未挂载) - Accounts 复用
utils/common.copyText(原组件内私有实现无错误处理)
离线市场(internal/admin)
- 快照同步 7 条(含 ima 0.1.1、commandcode 0.1.0,CI 发布 sha256);plugins submodule →
5c81488
升级说明
- 无破坏性变更;无新 migration
- commandcode / ima 插件包已发布到插件仓库(离线市场可装);如需引用本版本核心,把插件
go.mod依赖升到github.com/ShadowSmallBaby/ClawProxyHub v1.1.6
ClawProxyHub v1.1.5
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表(migration000010):level / module / action / message / detail / account_id,按created_at、(module, id)建索引 runlog.Logger按配置级别过滤后落库,写库失败静默(日志不应影响主流程);级别读取走闭包实时取设置,改动无需重启- 埋点:
account登录/刷新失败(带account_id)、plugin崩溃自动重启与重启失败、tasktick 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列(migration000011),日志列表新增类型列展示同步/流式
账号测试诊断(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