2026-08-23 决策记录(凌晨场 00:32–01:05 + 午后场 14:56–15:01 + 晚间场 18:40–21:06)

会话 20260822_063401_73a076 凌晨段(webwatch SSO 修复完成 + WSL 重启韧性 + 元素骑士交付)+ 午后段(usage 审计:cron 模型漏改修复 + smart_model_routing 更正)+ 晚间段(Tuya 白名单自动化闭环 + 远程开机方案)。详情见 2026-08-23

1. webwatch 韧性双保险定案(00:32–00:33,webwatch 域)

  • systemd user 服务 ww-server.service(Restart=always + WantedBy=default.target)= 主保险(WSL 启动即拉起 + 崩溃 5s 自愈实测)
  • Windows 计划任务 WebWatchWatchdog(每 5 分钟 webwatch_watchdog.ps1)= 兜底(WSL 未启动/服务异常时拉起,RECOVERED 实测)
  • 选择理由:systemd 与 WSL 生命周期天然同步(0 轮询延迟);watchdog 兜底 WSL 未启动场景
  • SSO 检测双检(env 或 .sso_secret 文件)——start.sh 只查 env 是 401 误报根因之一

2. 元素骑士交付 + ox-alpha 长代码纪律(01:01–01:05,test-lab 域)

  • 90KB 单文件游戏(3 层地牢 + BOSS + 无限循环)交付,2h10m,13 段 alpha 代码
  • ox-alpha 长代码 5 条纪律:① 强契约(contract.md 前置)② 分段 ≤8KB ③ 顶格即拆(20k token 硬瓶颈)④ 汇编者审读每段 ⑤ 行为验证自动化
  • 结论:免费 + 1M ctx + 90KB 级项目 = 性价比极高的「后台造物」模型;已知边界 = BOSS 三阶段节奏需真人试玩

3. 元素骑士部署方案定案:GitHub Pages(05:49–05:51,test-lab 域)

  • 选方案 A(独立 Pages 项目):URL https://jakebilu.github.io/element-knight/——不沾官网 hsdesign.biz(游戏与官网内容不搭)
  • 触发原因:Cloudflare token(D:\hermes\secrets\cf_global_key.txtcfk_ 格式)实测 9109 Invalid access token(已轮换过,图谱注明值在 Telegram 8/19 会话 + CF 控制台)→ CF Pages 路线放弃,改用实测可用的 GitHub PAT
  • GitHub 部署管线定案:PAT fine-grained(gh_pat_hermes_cicd.txt)走 REST API(gh CLI 未安装);repo JakeBilu/element-knight(public)+ git push 即部署(Pages 自动构建)——以后更新游戏只 push
  • PWA 路线:manifest + service worker 已入 v4(添加主屏 → 独立窗口全屏)——一劳永逸解决浏览器栏问题

4. cron 段模型漏改修复:v4-flash → vision-exp(14:56–14:58,DeepSeek usage 审计)

  • 起因:用户导出 DeepSeek usage 数据(usage_data_2026-08-23.zip → cost-.csv + amount-.csv)→ 发现 deepseek-v4-flash(非 vision-exp)8 条共 $0.377——01:00–08:00 SGT 每小时/隔小时固定一笔,规律像周期任务而非随机用量

  • 根因config.yaml L511-512 cron: model: deepseek-v4-flash——08-21「四端统一」(决策 #19:Hermes 主 agent / OpenClaw / 手机 Termux Hermes / PI 发布默认模型全切 vision-exp)时独漏 cron 段

  • 使用方:所有 LLM 定时任务(知识同步每 3h、每日待办 8am、Prime 播报、新闻播客等)——与每小时/隔小时用量规律吻合

  • 修复cron.modeldeepseek-v4-flash-vision-exp;备份 config.yaml.bak.20260823_cron_model;读回验证 ✅。生效机制:cron 调度每次任务运行读 config——大概率立即生效;若再导 usage 仍见 flash → 重启 gateway 强制

  • 全量盘点结论(确认无其他漏网):

    模型状态
    cronv4-flash → v4-flash-vision-exp✅ 已修
    openrouter / auxiliary / bedrock / security / prompt_cachingv4-flash-vision-exp
    OpenClaw agentsvision-exp(v4-flash 仅登记 {} 无引用)
    privacy / ttsgpt-4o-mini-tts设计如此,不动
    fallback_modelv4-pro(备胎,主模型挂时才用)保留
    sessions / onboarding / updates / lsp / x_searchgrok-4.2x(Hermes 元功能走 Grok,非 DS,不烧 DS 钱)不动
    smart_model_routing死配置(config 的 Pro 无实际挂钩——Hermes 路由=固定链「主模型→fallback」,不参与、不产生用量;8/13 已查实定论「不管它」)不动(不算漏网)
  • 审计方法(可复用):usage CSV 按模型汇总 → 找非 vision-exp 行 → 小时级规律 = 定时任务 → 查 config.yaml 对应段模型;排除法:OpenClaw 登记列表(无引用则不是)→ Hermes cron jobs(模型字段全空走全局)→ 全局 cron.model教训:全端统一时 config.yaml 的每个段都要过一遍(cron 段最易漏)

  • 🔁 更正(15:00–15:01,用户纠正):上一条把 smart_model_routing 说成「用户心智设计」是脑补——查实定论 = 死配置(8/13 查源码零引用;Hermes 模型路由为固定链「主模型→fallback」,该字段不参与、不会产生任何使用量)→ 不算漏网,继续不管(表内该行已按此更正)

  • fallback_model: deepseek-v4-pro = 唯一真功能例外(主模型故障时的后备链,会真实使用/烧钱)——建议保留 Pro 作最后保险(默认保留;若用户想统一 vision-exp 可 10 秒改掉)——待用户最终确认

  • 验收预期:下一份 usage 导出应零 v4-flash——明日用户再导 usage 验证(若仍见 flash → 重启 gateway 强制)


5. Tuya 白名单自动化闭环定案(18:40–20:53,晚间场)

  • 卡点真相(8/16 遗留):Tuya「Allow List」= 电脑公网出口 IP 白名单(非设备 IP)——家宽动态 IP 变一次即失联(18:45 实测 code 1010;8/16 卡死根因水落石出)
  • 选型:放弃 CF Worker(免费 IP 池 13/15 不可加白;Enterprise $500/月)弃 Oracle(注册卡点)→ CU 自动化闭环:guard(6h 检测 IP 变 → 自动写 CU 请求)+ cu-requests-poller cron(5min 扫描 → 子代理 CU 执行)+ cu_direct.py(PI 即时驱动)——零成本、零用户参与(仅首次登录 + 偶发 cookie 过期重登)
  • 执行纪律(用户两次批评后定案):PI 写请求 → cron 自动触发 → 子代理静默执行 → 回执 → 主 agent 验收;主 agent 不得亲手执行 CU / 不得把执行流程灌进聊天流;分工铁律:复杂/长期/需记忆 → PI 域(system-ops/test-lab/webwatch/master-app……)
  • 白名单更新已生效:7→8 IPs(新增 27.125.248.198;.171 不在列表无需删除);F5 持久化验证 + API 重测 OK

6. CF Worker 代理 Tuya 提案否决(18:52–19:03)

  • 用户最初拍板「免费+固定 IP → 走 Worker」→ PI 实测否决:CF 免费计划出口 IP 池约 13 个不同 IP(15 次采样),Tuya 白名单只支持单 IP;静态出口 = Enterprise $500+/月 → 条件不成立,不用
  • 附带关键认知:手机 Smart Life App 控制不走白名单(官方 App 认证通道)→ 手动/定时开关插座不依赖任何服务器
  • 证据存档:PI 报告 [PI]-20260823-2115-tuya_continue + tuya-proxy Worker(已建未部署)

7. 智能插座选型:ZigBee 优先(19:02–19:07)

  • 用户经验 > 便利性:WiFi 插座偶发断连/不稳,ZigBee 更稳(独立 2.4GHz mesh)→ 买 ZigBee 插座(配现有 Multi-Mode Gateway);前提先确认网关在 Smart Life App 在线
  • 避开小米米家(不兼容 Tuya 云);认 Tuya/Smart Life 认证 logo;额定 10A/2500W 够主机用(只插主机,显示器独立)
  • 远程开机链定案:插座断电/通电 = 硬恢复(强于 WOL:Mesh 下 WOL 死线 + 硬重启可救卡死/蓝屏)→ BIOS 设「Restore AC Power Loss = Power On」→ 通电自启

8. cua-driver 权限模型破解:MCP 模式 = PI 直连钥匙(20:24–20:53)

  • 背景:PI 想即时驱动桌面(不等 5min 轮询)——用户 20:24 拍板「现在 off-peak 就执行」
  • 技术定案:cua-driver 0.14.1 裸 CLI call 被权限墙拦(standard 模式要求每个工具「reviewed risk classification」)——所有参数组合均拒;cua-driver mcp(stdio 模式)无风险拦截(50 工具全暴露,get_desktop_state 直接返回 PNG)→ 这条路 = PI 直连唯一钥匙
  • 产物cu_direct.py wrapper(state 截图/click/type/key/list-windows)连续 3/3 稳定;截图 1920×1080 实测含「8 IP(s) added」活证据
  • 架构演进:cu_requests 轮询降级备份(poller 5min 兜底)+ guard 6h 保底 + cu_direct 即时 = 三层;后续加 CDP browser_* 透传(DOM 级,快一个量级)

9. DeepSeek 错峰规则更新(20:19)

  • 新规:周末全天 = off-peak(此前仅深夜时段)——off-peak 窗口扩大,工程类工作可周末白天做(用户 20:24 引用此规则要求立即执行 cua-driver 破解)

10. fallback_model 统一:DS 全链 100% vision-exp(18:40–18:41)

  • 用户拍板「统一」→ fallback_model: deepseek-v4-prodeepseek-v4-flash-vision-exp(嵌套 provider+model 格式——18:41 修正后正确)+ smart_model_routing.cheap_model 顺手改(死配置,无用量影响)
  • 唯一残留:reasoning_overrides 表 deepseek-v4-flash: max(推理预算覆盖规则——不产生调用,留作保险)
  • 至此 DeepSeek 侧实际会调用的模型链全部 = vision-exp(主/cron/辅助链/fallback/OpenClaw);验收预期:下份 usage 导出应零非 vision-exp 行

11. webwatch 公网入口定案:CF Tunnel 取代 funnel/Tailscale(21:39–23:28)

  • 背景:用户要求「App Portal 一次过进入 + 不依赖 Tailscale(公网可达)」;手机移动网络实测 funnel TLS 全断TLS decode error + IPv6 优先;PC 侧 funnel 正常;Windows 8787 只绑 127.0.0.1 外部不可达)→ funnel 手机路径作废
  • 定案Cloudflare Tunnel(与 Portal 同级公网入口)——App Portal webwatch 卡片 → SSO(一次过、单次消费安全)→ https://webwatch.hsdesign.biz → 本机 8787;任何网络(手机/平板/PC)免 Tailscale;备胎保留 tailscale serve + funnel(内网)
  • CF zone 通配 Workers Route*.hsdesign.biz → hsdesign-saas)劫持子域——精确 route 透传后才通(坑记录在案)
  • 稳定性闭环:tunnel 启动器加 WSL 唤醒(Windows 重启 → WSL 自动起 → 8787 服务 → tunnel 连上)+ 单实例检测 + 计划任务自启
  • 用户手机验收通过(23:27)

12. cu-requests-poller 退役 + guard 双路径(21:17–21:59)

  • 用户指出双通道竞争:PI 已能 cu_direct 直连,poller 旧机制该退役 → cu-requests-poller cron 已暂停(主 agent 忘关被点名认错)
  • guard 双路径:IP 变 → ① tuya_fix_cu.py 直连(CDP,2 次尝试)→ ② 失败自动 fallback cu_requests;检测频率 6h→1h(WSL crontab 0 * * * *

13. 安妮印章 v1 缩小方案否决 → v2 视觉纪律(21:17–21:33)

  • v1(缩至 56px + 下移)被用户否决:「没有公司为了配合缩小印章」→ v2 恢复 80px 原尺寸 + 移入签名行 flex(与 THE CONTRACTOR + signature 同线)+ 96px 双侧对称 + 视觉验证 4 项 PASS(远端 main a8aaea7 上线)
  • 视觉纪律:客户可见内容为顾客而做,不为系统便利缩印章;QA 域独立验收链(用户否决过 v1 → 验收必须严格)

14. webwatch 手机端三根因定案(21:24–21:58)

  • SW PRECACHE 缓存旧 index.html(版本号不变不更新)→ SW 版本自动注入(服务重启=新版本,用户零操作)
  • hermes bridge 偶发失败根因 = GBK 编码(commit fcfff44;编码修复 + 重试 + 连续 3 次才判离线)
  • overview 聚合 5.1s(zstd 冷解压 4s + 串行等慢源)→ 3s 缓存 + 后台预热 → 0.02s(160×)——手机 5s 超时 reset(Errno 104)根因消除
  • 方法论:电脑/手机差分 → 服务端模拟全链(SSO 票→cookie→API)→ 移动网络实测(SSH 真机)三层定位法

15. Chrome CDP 直连:attach 突破 + semantic_v2 死穴(22:09–22:20)

  • attach 稳定性根因 = 缺调试端口 → 启动链(PowerShell Start-Process + 专用 profile + 端口 9229)后 10/10(之前 6 次 4 败)
  • 死穴:cua-driver 0.14.1 attach 模式 semantic_v2 refs 从不分发(tool 声明支持、实现未启用——全参数变体实测)→ DOM 点击层被卡 → 出路:a. 升级 cua-driver b. get_accessibility_tree 兜底
  • 待办:cu_direct.py 加 CDP browser_* 透传(DOM 级操作,秒级加白)