📋 工作交接文档 — Claw 工作区(完整版)

交接日期: 2026-08-04
工作区路径: D:\clawx\workb\Claw
接替对象: 接替本工作区的下一个 Agent(本文件为自包含文档,清除上下文后仅凭本文件即可接手)

〇、第一优先级待办

  1. 网安项目:用户在 2026-07-17 曾说"回到之前的网安项目",但所有记录中均未找到该项目的上下文。
  2. → 新 Agent 接手后需先向用户确认:网安项目名称、进度、文档位置。

    1. 站点清理确认:站点异常项是否清理(见第五节),用户尚未明确回复。

    2. 一、环境信息(本机)

      项值
      OSWindows(bash shell,Git Bash)
      Python(managed,推荐)C:\Users\36108\.workbuddy\binaries\python\versions\3.13.12\python.exe(已装 requests)
      Node(managed)C:\Users\36108\.workbuddy\binaries\node\versions\22.22.2\node.exe / npx
      Docker已安装 Docker Desktop,但 daemon 通常未运行(docker ps 会失败,别依赖)
      Cloudflare API TokenC:\tools\cf_token.txt(内容为 cfut_ 开头的一行)
      隧道辅助脚本参考C:\tools\tunnel_add.py(有完整 CF API 调用范式)
      Hermes 双 Agent 协同方案~/.hermes/vault/5-项目/Hermes双Agent协同方案.md

      常用 Cloudflare 参数:

      • 账号 ID:a049a1e50011bb3d3c06d896629f451d
      • 主隧道 hermes-tunnel:43441e59-039d-46b1-a93c-c99ea44879c8(健康,4 连接)
      • 域名 zone:
      • bearqh.fun → 3c6eacc2411be7f704c07b6be42896d7
      • 熊.online(xn--2vx.online)→ 3584a83dd92277f78b9c57bb84c1bd2f
      • 保康.top(xn--ruqx57a.top)→ 475c3f7908bc4bbbe55a49ceec27110d

      二、已完成项目 A:内网 4npsd 访问指南页面 ✅

      背景

      单位内网电脑(Win7、开天国产系统)无法打开 https://4npsd.stats.gov.cn。

      根因:内网 DNS 10.42.1.54 将域名解析到不可达内网地址 10.210.24.133;正确公网 IP 为 219.235.151.30。

      交付物

      • 在线页面: https://临时.保康.top(✅ 可用)
      • 页面源码: D:\clawx\workb\Claw\index.html(最终版,21716 字节)

      页面功能(最终版)

      • 两种解决方案(页面顶部大按钮选择):
      • 方案一:修改本机 DNS(推荐)——首选 DNS 改阿里 223.5.5.5,备用 DNS 填用户自己记下的原内网 DNS(步骤引导"先记下原地址")
      • 方案二:修改 hosts——写入 219.235.151.30 4npsd.stats.gov.cn
      • 支持 4 种系统:Windows 7 / 10 / 11 / 开天国产系统(统信 UOS / 麒麟)
      • hosts 内容一键复制 + 按系统下载 hosts 文件(下载文件名 hosts,无扩展名,含标准注释头)
      • 每个方案带原理说明(DNS=进入外网 DNS 环境;hosts=直接导向外网解析结果)

      部署架构(Cloudflare)

      • Worker 脚本: npsd-4npsd-guide(把整个 HTML 嵌入 JS 模板字符串,fetch 时返回)
      • Worker 路由: 临时.保康.top/* → npsd-4npsd-guide
      • DNS: 临时.保康.top(punycode xn--miq029c.xn--ruqx57a.top)CNAME → 主隧道 endpoint(proxied=true)

      更新页面的方法(后续改版必看)

      1. 修改 D:\clawx\workb\Claw\index.html
      2. 重新部署 Worker(不能只传 HTML,必须更新 Worker 里的 JS):
         - PUT https://api.cloudflare.com/client/v4/accounts/{ACCT}/workers/scripts/npsd-4npsd-guide
         - multipart: metadata(JSON: main_module=worker.js, compatibility_date=2024-01-01)
                    + worker.js(module, 内容为 export default { fetch ... } 返回 `HTML` )
         - 关键:HTML 中的 \ ` ${ 需转义为 \\ \` \${ 再嵌入模板字符串
      3. 部署后可用 urllib GET https://xn--miq029c.xn--ruqx57a.top/ 验证(需带浏览器 UA,否则可能 403/1010)

      相关文档

      • 交接文档原件:~/.hermes/vault/5-项目/内网4npsd访问-工作交接.md
      • 原排查笔记:~/.hermes/cache/documents/doc_2f3ffa07cf4b_问题总结-4npsd访问.md

      三、已完成项目 B:站点总览整理 ✅

      • 产出:D:\clawx\workb\Claw\站点总览.md(2026-07-31)
      • 覆盖:3 域名、5 Pages 项目、3 Worker、隧道配置、全部子域名 HTTP 实测状态

      关键站点事实

      • 多数站点经主隧道 → nginx :8081;特殊端口:portainer:9000、gitea:3000、status:3001、minio:9001
      • Pages:all.bearqh.fun、agent.保康.top(agent-kb)、botguard.熊.online 已绑定
      • GitHub Pages 外链:baokang.bearqh.fun、knowledge.bearqh.fun → gbyhj.github.io
      • 邮件:Cloudflare Email Routing(bearqh.fun + 熊.online,MX+SPF+DKIM 已配);mail.bearqh.fun → exmail.qq.com(当前 404)

      四、用户偏好与沟通习惯

      • 语言:简体中文
      • 风格:喜欢先给结论/汇总表格,再补充细节;重要概念喜欢配图解释(SVG 流程图对比)
      • 页面交互:偏好"大按钮选择"式引导页(非技术用户友好)
      • 部署偏好:倾向 Cloudflare 系(Worker/Pages/Tunnel)+ GitHub Pages
      • 命名:任务曾被称为"勾玉任务"(即 4npsd 项目)
      • 记忆习惯:工作日志在 .workbuddy/memory/YYYY-MM-DD.md(append-only),长期笔记在 MEMORY.md

      五、待办 / 遗留事项

      1. 网安项目(🔴 最高优先,见第〇节)
        1. 站点异常项(🟡 待用户确认是否清理):
        2. 无法连接:熊.online 根域、保康.top 根域、welcome.xn--2vx.online
        3. 410 已停:nextcloud.xn--2vx.online
        4. 闲置隧道(全 down):hermes-tunnel-v2 / v3 / v4、熊启航
        5. 空 Pages:baokang-top、xiong-online(无自定义域名、无部署)
          1. 邮件:mail.bearqh.fun 404,如需可排查腾讯企业邮配置

          2. 六、可复用脚本范式

            1. Cloudflare API 调用(Python urllib,无需 requests 也可)

            import json, urllib.request
            TOKEN = open(r'C:\tools\cf_token.txt').read().strip()
            headers = {'Authorization': f'Bearer {TOKEN}', 'Content-Type': 'application/json'}
            req = urllib.request.Request(url, headers=headers)
            d = json.load(urllib.request.urlopen(req))

            2. 部署 Worker(需 requests,已装)

            import requests, json
            TOKEN = open(r'C:\tools\cf_token.txt').read().strip()
            ACCT = 'a049a1e50011bb3d3c06d896629f451d'
            html = open(r'D:\clawx\workb\Claw\index.html', encoding='utf-8').read()
            escaped = html.replace('\\','\\\\').replace('`','\\`').replace('${','\\${')
            worker_js = 'export default { async fetch(request){ const url=new URL(request.url); if(url.pathname==="/"||url.pathname.startsWith("/index.html")){ return new Response(`' + escaped + '`,{headers:{"content-type":"text/html;charset=UTF-8"}});} return new Response("Not found",{status:404}); } };'
            meta = json.dumps({'main_module':'worker.js','compatibility_date':'2024-01-01'})
            resp = requests.put(f'https://api.cloudflare.com/client/v4/accounts/{ACCT}/workers/scripts/npsd-4npsd-guide',
                headers={'Authorization': f'Bearer {TOKEN}'},
                files=[('metadata',(None,meta,'application/json')),('worker.js',('worker.js',worker_js.encode(),'application/javascript+module'))])
            print(resp.json())

            3. 中文域名 punycode

            临时=xn--miq029c · 保康=xn--ruqx57a · 熊=xn--2vx(API 操作一律用 punycode)


            七、风险与注意

            • ⚠️ 不要把完整 Token 明文写进会被分享的文档(交接文档里只写位置 C:\tools\cf_token.txt)
            • ⚠️ 改 DNS 记录前先确认 zone_id 和 record_id,误改会影响线上站点
            • ⚠️ Cloudflare Pages 直传 API 的 manifest 字段易踩坑(值为文件大小,不是文件名)
            • ⚠️ 本机 Docker daemon 常未运行,涉及容器的操作需先确认 docker ps 可用