# 本机环境备忘（全局记录，别重新摸索）

> 用途：记录本机常被遗忘的基础设施信息。更新于 2026-08-23。
> 遇到相关故障先查本文件；grok 任务相关的要点也固化在 `~/.dsh/skills/grok-run/SKILL.md`。

## 1. Grok CLI（x.ai）

- 二进制：`~/.grok/bin/grok`（v1.0.5）；x.ai 被墙，必须走本机 v2ray 代理。
- 标准调用（封装脚本）：`~/.dsh/skills/grok-run/scripts/grok-run.sh "<任务>" --cwd <目录> --max-turns N --out 结果.txt`
  - 必须 `--yolo`、`--output-format json`；stderr 输出 sessionId / turns / cost(USD)。
- **坑：沙箱内 `~/.grok` 只读** → 报 `Couldn't create session ... Read-only file system`。
  解法：`export GROK_HOME=~/Downloads/grok-home`（先 `mkdir` 并 `cp ~/.grok/{auth.json,config.toml,active_sessions.json,models_cache.json}` 过去）。用后清理。
- 续接会话：`grok -p "后续任务" -r <sessionId>`。

## 2. v2ray 代理（JMS / JustMySocks）

- 进程目录：`/home/zyw/Downloads/v2ray-setup/`；二进制 `./v2ray`（v5.52.0）。
- 当前配置：`ss-config.json`（Shadowsocks，aes-256-gcm，密码 `KYJ96mK4x56KcgKb`，端口 6623，双节点）。
- 本地监听：HTTP `127.0.0.1:10809`，SOCKS5 `127.0.0.1:10808`。
- 启动：`cd ~/Downloads/v2ray-setup && nohup ./v2ray run -c ss-config.json > v2ray.log 2>&1 &`
- 停止：`kill <pid>`（用 pgrep 精确匹配，别用 pkill -f "v2ray run" 会误杀自身 shell）。

### 订阅（节点轮换时用它刷新）

- **订阅 URL**（用户提供，2026-08-23 找回）：
  `https://jmssub.net/members/getsub.php?service=1395999&id=430e4562-83ab-4cad-910d-c34f792fcb24&sub=1`
  备用域名：`https://jjsubmarines.com/members/getsub.php?service=1395999&id=430e4562-83ab-4cad-910d-c34f792fcb24`
- 刷新流程：
  1. `curl -s "<订阅URL>" -o sub-new.b64`（返回 base64 的 ss:// + vless:// 列表）
  2. `base64 -d sub-new.b64` 查看新节点（SS 的 IP 经常轮换；vless reality 节点一般不可用，忽略）
  3. 把新 SS 节点的 address/port 写进 `ss-config.json`（method/password 不变）
  4. 重启 v2ray → `curl -x http://127.0.0.1:10809 https://www.google.com/` 验证（期望 200）
- 已知事实：vless 节点（reality，sni=portal.citygrainla.com）TCP 通但 reality 认证失败（凭据过期），不要浪费时间；SS 才是可靠线路。

## 3. 文件下载服务（8899 页面）= 下载中心 dl-hub

- 代码：`/home/zyw/Downloads/download-server.js`（零依赖单文件，原生 Node http）。
- **服务根目录（DL_ROOT）= `/home/zyw/Downloads/dl-hub/`**：所有 DSH 会话产出的统一出口，按项目分子目录
  （`01-AI课程设计项目/` `02-兰德-CNAS报告核实/` `03-AI写小说调研/` `04-事实核查/` `grok-skill/`，结构见根目录 `00-说明.md`）。
- 运行方式：`DL_ROOT=/home/zyw/Downloads/dl-hub DL_PORT=8899 DL_HOST=0.0.0.0 node /home/zyw/Downloads/download-server.js`
- 一键重启：`bash /home/zyw/Downloads/restart-dl-server.sh`（pkill 旧实例后 nohup 启动；**不要用 bwrap --die-with-parent，会随脚本退出被杀**）。
- 页面：http://192.168.31.76:8899/ （内网 LAN IP）。
- 功能：目录列表 + 下载；`.md`/`.txt` 支持在线预览（文件名加 `?preview=1`），内置 Markdown 解析器，2MB 上限，HTML 转义防 XSS；**图片（jpg/jpeg/png/gif/bmp/webp/svg/ico/avif/tiff）与视频（webm/mp4/ogg）直接内联预览**（2026-08-27 新增，右侧分栏与整页均支持）。
- **WMV/ASF/RMVB 预览（2026-09-02 新增）**：浏览器无法原生解码这些格式，预览时服务器自动用本机 ffmpeg 转码为 MP4（H.264+AAC，`-preset veryfast`）缓存后交给 HTML5 播放器；首次预览显示转码进度（player 页轮询 status，含 %），之后命中缓存秒开。缓存目录默认 `~/Downloads/.dl-transcode-cache`（可用 `DL_CACHE_DIR` 覆盖），同文件单飞 + 全局单任务队列，自动清理（保留 7 天 / 总量 6GB）。支持扩展名：.wmv/.asf/.rmvb/.rm（`TRANSCODE_EXTS` 表）。实测 617MB / 71 分钟的 ASF(wmv3+wmav2) 与 RealVideo4 样本均可正常转码播放，速度约 10 倍速（71 分钟片约 7 分钟转完）。
- **上传功能（2026-08-27 新增）**：仅 `用户上传/` 目录及其子目录页面有拖拽/多选上传区（POST multipart 到当前目录，流式写盘、单次上限 2GB、同名覆盖），其他目录只读；匿名 FTP 根目录同为此目录（读写全开，`_upload` 已改名 `用户上传`）。
- **发布产出**：`~/Downloads/publish-to-dl.sh <文件|目录> [目标子目录]`（复制进 dl-hub 并打印 LAN 地址）；
  或直接写 `/home/zyw/Downloads/dl-hub/<项目>/`。
- **全局规则**：`~/.dsh/AGENTS.md`（用户级全局指令，随每个会话注入）已约定"所有面向用户的产出必须发布到 dl-hub"。修改后对新会话自动生效；对旧会话即时生效需新建会话。

## 4. 常用链接/凭据（勿外传）

- DSH Web GUI：http://127.0.0.1:3080 （用户通过 192.168.31.76 访问）。
- v2ray SS 密码：`KYJ96mK4x56KcgKb`；JMS 服务号 1395999，UUID `430e4562-83ab-4cad-910d-c34f792fcb24`。
- grok 认证：`~/.grok/auth.json`（勿复制到公共目录；本次已清理临时副本）。

## 5. 迅雷下载（cnk3x/xunlei，2026-08-31）

- **DSH 机下载文件默认优先迅雷**（多线程加速，实测 11MB/s；skill：`~/.dsh/skills/xunlei-download/SKILL.md`）。
- 服务：容器 `xunlei`，Web `http://127.0.0.1:2345`（用户侧 http://192.168.31.76:2345）；落盘 `~/Downloads/xunlei-downloads/`（= dl-hub/09-迅雷下载，下载中心 http://192.168.31.76:8899/09-迅雷下载/ 实时可见）。
- **一键封装脚本**：`~/.dsh/skills/xunlei-download/scripts/xunlei.sh`（`add <URL>` 自动解析文件名+建任务；`wait <id>` 等完成；`status/del/tasks/probe` 配套）。
- 关键参数（写死在脚本里）：认证 `pan-auth`=首页 uiauth JWT（实时提取）；设备 `device_id#85292dba0b98d9d02db23e5509bc36d6`；下载根目录 `84b584c0ee8a20b73ad3a408b9f9b109`。
- ⚠️ 坑速记：① 建任务 body 必须带 `space=device_id#…`、`params.target`、`params.parent_folder_id`（否则任务 PENDING 不被认领）；② 落盘文件名=任务 name（先 `resource/list` 解析真名当 name）；③ 大文件下载后 sha256 与源比对；④ qqdl 链接先 `curl -sI` 看 Server：`tencent-cos` 可下、`Lego Server` 基本 403（换 GitHub 镜像等替代源）；⑤ API 卡死时 `echo yueling408 | sudo -S docker restart xunlei` 恢复。
- 详细排查文档：`~/Downloads/xunlei-downloads/迅雷API下载任务排查说明.md`（下载中心可预览）。

## 7. USB WiFi 5G 网卡（2026-08-30）
- 硬件：Realtek RTL8821CU（USB 2.0 原生，1×1 ac，PHY 上限 433Mbps），接口 wlx502b73c502b3，SSID mynet_5G，IP **192.168.31.118**
- 驱动：**第三方 rtl8821cu**（morrownr/8821cu-20210916，源码在 ~/Downloads/8821cu-20210916-main，打了 6.6 内核 drvwrap 补丁），模块 8821cu.ko 在 ~/rtl8821cu-mod/；开机自启 systemd 服务 `rtl8821cu-load.service`（insmod）；rtw88_8821cu 已黑名单（/etc/modprobe.d/blacklist-rtw88-8821cu.conf）
- 实测：iperf3 下行 ~170Mbps / 上行 ~113Mbps（rtw88 旧驱动只有 ~120）；scp 用 sshpass 达 14-16MB/s
- ⚠️ **坑：expect 包装的 scp/ssh 大批量传输会卡死 0 字节**（PTY 问题，与网卡无关），必须用 **sshpass**（`sshpass -p yueling408 scp ...`）或 HTTP 方式传大文件
- 旧 2.4G 网卡（RTL8723BE，wlp4s0，192.168.31.76）仍有频繁掉线问题，5G 为主要出口（默认路由 metric 100）
