Skip to content

release: v1.3.207 设置页去白名单、遥测页重做、遥测身份修复与上传间隔可调 - #643

Merged
dofastted merged 13 commits into
mainfrom
feat/settings-telemetry
Oct 21, 2026
Merged

dofastted merged 13 commits into
mainfrom
feat/settings-telemetry

Conversation

@dofastted

@dofastted dofastted commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

版本

VERSION 1.3.207(release: v1.3.207,只改 VERSION 与 CHANGELOG.md)。CHANGELOG 1.3.207 段即本 PR 全部内容。

改动

  • 白名单整套去掉:网关 persona_rules 规则引擎、{{rules}} 模板变量、前端白名单页与规则库;保存 compatibility 时删除残留的 persona_rules / persona_leak_append。
  • 设置导航:OpenAI 只留一个入口。
  • 遥测页重做:分布条、每槽实时旁路状态、按槽开关、上传时间线与脱敏记录、批量开关确认与进度、播种键对照、上传链路、关联开关。「上传中」要求 worker.json 遥测生效且进程在跑(旁路进程在遥测关闭时也常驻);无官方身份单独显示,集群槽注明且说明记录在节点上、面板读不到。
  • 遥测官方身份修复:当前 CLI 初装只写 userID,读取身份不再要求 machineID;回退改读槽记录的 fingerprint.official_user_id;GPT 槽不写 Claude 遥测身份。
  • 上传间隔可调:routing.telemetry.upload_interval_seconds(整分钟、1 分钟–24 小时,默认 10 分钟,原固定 10 秒)。kin-worker 读 worker.json 同名字段,热重载、不重发 init。保存后重写各 Claude 槽 worker.json:本机槽立即生效(telemetry_sync.updated),集群槽排队 SFTP 推送 run 文件集(telemetry_sync.queued,失败只记日志)。面板按分钟 / 小时设置。

验证

  • Node:persona / 模板、遥测身份、runtime / bootstrap / fingerprint、routing(含集群槽排队推送用例)相关用例全部通过。
  • Go:worker/internal/config、worker/internal/telemetry 通过(间隔、越界回退、热重载不重发 init)。go test ./... 的 internal/egress DNS 5000 字节 UDP 用例在本机超时,与本 PR 无关。
  • Web:tsc、eslint、prettier 通过;vitest 25 个文件 161 项通过。用 mock API 在 Chromium 1440 / 390px 点过遥测页、上传间隔(单位切换、预设、保存提示)。

部署

以下内容已在生产热部署,verify-live.py --auth-mode master 各 8 项全 PASS、7/7 容器 ID 不变:

内容 备份
白名单删除、OpenAI 去重、遥测页重做(初版)及 1.3.205/1.3.206 未上线部分 /opt/vm2api/.deploy-bak-vm2api-1.3.206-hot-20261021T012225Z
遥测官方身份修复 /opt/vm2api/.deploy-bak-telemetry-identity-20261021T015352Z

未部署:遥测页「上传中」判定修正、批量开启集群槽说明、上传间隔(含 kin-worker 改动)。上传间隔需要新的 kin-worker 才生效。

CI

unit 中 cli-hop-body.test.mjs(6)与 convert-cache-shape.test.mjs(1)失败,main 自 dcdeedea(1.3.205)起即如此,干净的 origin/main 上同样 29 中 7 失败,与本 PR 无关。

已知未处理

  • 集群节点槽不支持官方初装,拿不到身份,遥测不会上传;上传记录写在节点上,面板读不到。
  • officialCcShouldSkipAutoInit 仍要求 machineID,新 CLI 初装的槽会一直判为 missing_official_ids(推测会触发重复初装,未核实)。

park 与 overlay 只带 persona_standing;overlay 模板去掉 {{rules}},网关与面板两份目录保持一致。保存 compatibility 时删除 routing.json 里残留的 persona_rules / persona_leak_append。
删除 persona-rules 面板与前端规则库,协议保存不再写 persona_rules。导航每个 tab 只出现一次,去重指示条与窄屏去重辅助一并删除。
槽位分布条、每槽实时旁路状态与按槽开关;展开看上传时间线和脱敏原始记录。全开 / 全关先确认并逐槽显示进度,旁路重启失败单独提示,GPT 槽不再被批量写入。附播种写入键对照、上传链路与关联开关。
readClaudeIdentityDocument 不再要求 machineID,优先取两者都有的文件。回退改读槽记录的 fingerprint.official_user_id(loadVmIdentity 的 fingerprint 不带该字段)。GPT 槽不写 Claude 遥测身份。
v1.3.206 已于这些改动之前发布。条目留到下次 release 提交随版本写入。

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit bef3e64. Configure here.

export const OVERLAY_TEMPLATE_VARS = Object.freeze([
Object.freeze(['overlay_body', 'body 块拼接结果,只能出现在 wrapper 块']),
Object.freeze(['standing', 'persona_standing 常驻约束']),
Object.freeze(['rules', '命中末轮 user 的 persona_rules append 拼接']),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Saved overlay templates still use rules

Medium Severity

{{rules}} was removed from overlay variable allowlists, but stored overlay_templates are not rewritten. Settings saves send the full routing draft, so validatePersonaRoutingPatch rejects any template that still has that placeholder and the PUT fails. Operators with a saved overlay (including a customized official/minimal copy that kept the old rules body block) cannot save 协议 or any other settings tab until those templates are edited by hand.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit bef3e64. Configure here.

@dofastted

Copy link
Copy Markdown
Owner Author

CI unit 的 7 个失败不是本 PR 引入的:

  • test/unit/cli-hop-body.test.mjs 6 个、test/unit/convert-cache-shape.test.mjs 1 个,都是 cli-hop system / 缓存标记 / TTL 用例。本 PR 没改这些代码。
  • 在 origin/main(894a78da,即 v1.3.206)的干净 git archive 上跑这两个文件,同样 29 项里 7 项失败。
  • main 自身 CI 在 dcdeedea(1.3.205 出站缓存 TTL)和 894a78da(release v1.3.206)都已是 failure;最后一次绿是 f14e68b9(v1.3.204)。

本 PR 其余检查:web、worker、kernel、arm64 通过。本 PR 改动相关的 Node 用例(persona / 模板 148 项,遥测身份与 runtime / bootstrap / fingerprint 130 项)本地全部通过。这 7 个失败需要单独修,合并前要确认 unit 是不是必过检查。

旁路进程在 worker.json 关闭(无官方身份)时也会常驻。上传中改为要求 worker.json 生效且进程在跑;种子开但无官方身份单列「开 · 无官方身份」,集群槽注明。集群槽展开时说明上传记录在节点上、面板读不到。
@dofastted

Copy link
Copy Markdown
Owner Author

新增 376d948a fix(web): 遥测页不再把空转旁路显示成上传中。

  • 旁路进程在 worker.json 遥测关闭(没有官方身份)时也会常驻。旧逻辑只看进程在跑就显示「上传中」。
  • 生产核对(只读):集群槽 jp-max、jp-pro、jp-pro2、vm-21、vm-19 的容器和旁路进程都在跑,但 worker.json 是关的,节点上也没有 telemetry-upload.log。集群槽目前不支持官方初装(SLOT_CAPS_NODE 只有 codex),所以拿不到身份。
  • 现在「上传中」要求 worker.json 生效且进程在跑;种子开但没有官方身份,单独显示「开 · 无官方身份」,集群槽会注明。集群槽展开时说明上传记录写在节点上、面板读不到(readTelemetryUploadLog 只读控制面 vms/<id>/run)。
  • 判定抽到 telemetry-slot-state.ts,新增 4 个用例;web vitest 24 个文件 157 项通过。

集群节点不支持官方初装,开了也拿不到身份。确认弹窗列出其中集群槽的数量;批量行为不变。
worker.json telemetry.upload_interval_seconds(60s–24h),缺省或越界按 10 分钟。热重载生效,不重发 init 事件;GrowthBook 6 小时周期与 10 分钟会话窗口不变。
routing.telemetry.upload_interval_seconds 按整分钟、1 分钟到 24 小时校验,默认 600。worker.json 遥测块带上该值;间隔变化时重写所有 Claude 槽的 worker.json 并推到集群节点,保存结果返回 telemetry_sync。
预设 5 分钟到 24 小时,步进器可切换分钟 / 小时单位,走设置保存栏。上传链路说明按当前间隔显示,超过 10 分钟时提示会话窗口的影响。
集群槽读节点上推过去的 worker.json,推送是排队执行、失败只记日志,不能算已生效。telemetry_sync 新增 queued;测试覆盖集群槽:控制面副本已写、按 run 文件集推送。
@dofastted dofastted changed the title 设置页:去掉白名单、OpenAI 去重、遥测页重做,修复遥测官方身份 release: v1.3.207 设置页去白名单、遥测页重做、遥测身份修复与上传间隔可调 Oct 21, 2026
@dofastted

Copy link
Copy Markdown
Owner Author

1.3.207 合并前生产门禁:

  • 热换 5 个网关文件(上传间隔)、VERSION 与新构建的 web/dist(nginx 直接以 /opt/vm2api/web/dist 为 root;先同步带哈希资源、再原子换 index.html、最后清理,dl 保留)。二进制与 share/wrap-cli 未动,未做 wrap-cli/sync,未重启槽。部署前核对线上这 5 个文件与 3592f922 一致。Node 重启一次。
  • 备份:/opt/vm2api/.deploy-bak-vm2api-1.3.207-hot-20261021T032628Z
  • verify-live.py 1.3.207 --auth-mode master:exit 0,8 项全 PASS(version 1.3.207、health、面板 12 VM、公网页面、7/7 容器 Up 且 ID 不变、真实 200 pong)。公网入口 index-DMIs10Ep.js 与本次构建一致。
  • kin-worker 未换:线上旁路仍每 10 秒上传,上传间隔要换新 kin-worker 后才生效。
  • CI unit 的失败与 main 既有的 7 个 cli-hop 用例完全相同,没有新增失败;按决定放行。

@dofastted
dofastted merged commit eee8f6e into main Oct 21, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant