diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 7ceb519b..72bf270d 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -149,7 +149,7 @@ NAS 上用于本项目部署的目录有两个(容器挂载源): > **职责边界(所有 session 必须遵守)**:开发/数据/策略 session 改完代码 `git push` 即完成(NAS 自动验证,到此为止);**VPS prod 部署绝不自动**,必须 nas-verify 绿后由人确认触发 `vps-deploy.yml`。**业务 session 不要自己推 VPS**(push 只到 NAS);推 VPS 是运维 agent + 人协作的决策。 > **commit 必须打环境标签(CI 强制,所有 session 必读)**:每条 commit message 末尾带 `[vps]`(VPS 也中招,含通用代码,待推 prod)或 `[nas]`(NAS/docker 专属,VPS 不中招)。`ci-cd.yml` 的 `enforce-label` 步骤:本次 push 的 commit 无标签 → **CI 直接 fail**(merge commit 豁免)。 -> - **判定**:维度是「VPS 运行时是否触发」,不是「文件改了没」。触及面清单见 `docs/three-env-code-promote.md` §12(VPS 触及=data/backtest/portfolio.runner_backtest+runner_live/live/trader/provider/scripts.qmt_relogin;不触及=orchestrator/api.web/web前端/docker/.gitea)。 +> - **判定**:维度是「VPS 运行时是否触发」,不是「文件改了没」。触及面清单见 `docs/three-env-code-promote.md` §12(VPS 触及=data/backtest/portfolio.runner_backtest+runner_live/live/trader/provider/scripts.qmt_relogin+**api+前端**——VPS 常驻 sanguo-api 生产控制台+挂公网前端 dist,2026-10-01 勘误;弱触及=orchestrator 随 api 常驻加载;不触及=web(legacy 已退役)/docker/.gitea)。 > - **`[vps]` 触发链**(Gitea 无 approval gate,用 issue+tag 替代 GitHub 的 action_required 黄色):nas-verify 绿后 CI 自动开/更新 `[待推VPS]` issue(**open=黄/待推**,持久可见);人工/agent 推 `vps-deploy.yml` 成功 → 打 `vps-deployed` tag + 自动关 issue(**close=绿/已推**)。CI run 保持绿(NAS 部署成功不污染)。 > - **查 VPS 还差哪些**:`git log vps-deployed..HEAD --grep='\[vps\]'`(VPS 版本真相 = 移动 tag `vps-deployed`,指向最后部署 VPS 的 sha)。 @@ -179,7 +179,7 @@ bash scripts/nas_sync/promote.sh --module sanguo_portfolio --target nas # 单 ``` 手动晋升/rollback/数据铁律 runbook:`docs/three-env-code-promote.md` -**reload**:VPS 无常驻 web,代码下次 schtask/回测启动自动生效;立即让采集生效: +**reload**:采集/回测=一次性任务,下次 schtask/启动自动生效;**VPS 常驻进程须显式重启**(2026-10-01 勘误:sanguo-api 生产控制台常驻中,改 api/orchestrator/前端后须 `schtasks /end /tn sanguo-api && schtasks /run /tn sanguo-api`)。立即让采集生效: `ssh 49.232.102.198 'schtasks /end sanguo-bs-daily && schtasks /run sanguo-bs-daily'`(2026-08-20 重组:bs-eod+bs-fund 已合并为 sanguo-bs-daily,18:05 串行 eod→fund) ### NAS SSH / Docker 访问 diff --git a/README.md b/README.md index 5573ea27..84b483c0 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,8 @@ python run_web.py uvicorn sanguo_web.api:app --host 0.0.0.0 --port 8000 --workers 2 ``` +> ⚠️ **2026-10-01 勘误(audit/20261001_docs_audit/ P0-1)**:上方「生产模式」命令启动的是 **`sanguo_web` legacy 平行后端**——已退役、生产不部署、自带硬编码密钥/默认口令/CORS 全开(架构审计 P0-3),**勿按此启动**。现行生产入口=`run_web.py`(`sanguo_api.main:create_app` 工厂,单进程 :8000,NAS 容器与 VPS sanguo-api 同款)。 + ## API 文档 启动服务后访问: @@ -113,12 +115,7 @@ uvicorn sanguo_web.api:app --host 0.0.0.0 --port 8000 --workers 2 ## 认证 -默认登录凭据: - -- **用户名**: `admin` -- **密码**: `admin123` - -**⚠️ 重要**: 首次登录后请立即修改密码! +> ⚠️ 2026-10-01 勘误:本节为 07 月历史内容。现行认证=`sanguo_api` JWT(凭据在 `config/backtest.yaml` auth 段 bcrypt hash,**不入库不写文档**);`sanguo_web` 的 admin/admin123 默认口令随该后端一并退役。 ## WebSocket 连接 @@ -156,10 +153,8 @@ pytest tests/ -v 详细开发指南请查看: +- [文档中心索引](docs/README.md) - [开发文档](docs/development.md) -- [API 设计文档](docs/api/README.md) -- [部署文档](docs/deployment/README.md) -- [用户指南](docs/user_guide/README.md) ## 主要功能模块 diff --git a/docs/deployment/README.md b/docs/archive/deployment/README.md similarity index 100% rename from docs/deployment/README.md rename to docs/archive/deployment/README.md diff --git a/docs/deployment/d-phase-windows-deploy.md b/docs/archive/deployment/d-phase-windows-deploy.md similarity index 100% rename from docs/deployment/d-phase-windows-deploy.md rename to docs/archive/deployment/d-phase-windows-deploy.md diff --git a/docs/deployment/vps-native-brain.md b/docs/archive/deployment/vps-native-brain.md similarity index 100% rename from docs/deployment/vps-native-brain.md rename to docs/archive/deployment/vps-native-brain.md diff --git a/docs/deployment/windows-bridge-setup.md b/docs/archive/deployment/windows-bridge-setup.md similarity index 100% rename from docs/deployment/windows-bridge-setup.md rename to docs/archive/deployment/windows-bridge-setup.md diff --git a/docs/design/architecture/provider-mcp-expose-design.md b/docs/archive/design/provider-mcp-expose-design.md similarity index 100% rename from docs/design/architecture/provider-mcp-expose-design.md rename to docs/archive/design/provider-mcp-expose-design.md diff --git a/docs/superpowers/plans/2026-07-07-phase3c-paper-trading.md b/docs/archive/plans/2026-07-07-phase3c-paper-trading.md similarity index 100% rename from docs/superpowers/plans/2026-07-07-phase3c-paper-trading.md rename to docs/archive/plans/2026-07-07-phase3c-paper-trading.md diff --git a/docs/superpowers/plans/2026-07-11-backtest-result-page.md b/docs/archive/plans/2026-07-11-backtest-result-page.md similarity index 100% rename from docs/superpowers/plans/2026-07-11-backtest-result-page.md rename to docs/archive/plans/2026-07-11-backtest-result-page.md diff --git a/docs/superpowers/plans/2026-08-12-strategy-management-backend.md b/docs/archive/plans/2026-08-12-strategy-management-backend.md similarity index 100% rename from docs/superpowers/plans/2026-08-12-strategy-management-backend.md rename to docs/archive/plans/2026-08-12-strategy-management-backend.md diff --git a/docs/superpowers/plans/2026-08-24-factor-batch1-alpha101-158.md b/docs/archive/plans/2026-08-24-factor-batch1-alpha101-158.md similarity index 100% rename from docs/superpowers/plans/2026-08-24-factor-batch1-alpha101-158.md rename to docs/archive/plans/2026-08-24-factor-batch1-alpha101-158.md diff --git a/docs/research/README.md b/docs/archive/research/README.md similarity index 100% rename from docs/research/README.md rename to docs/archive/research/README.md diff --git a/docs/superpowers/specs/2026-07-07-phase3b-vue-frontend-design.md b/docs/archive/specs/2026-07-07-phase3b-vue-frontend-design.md similarity index 100% rename from docs/superpowers/specs/2026-07-07-phase3b-vue-frontend-design.md rename to docs/archive/specs/2026-07-07-phase3b-vue-frontend-design.md diff --git a/docs/vps-deploy-pending.md b/docs/archive/vps-deploy-pending.md similarity index 100% rename from docs/vps-deploy-pending.md rename to docs/archive/vps-deploy-pending.md diff --git a/docs/deployment/env-version-matrix.md b/docs/deployment/env-version-matrix.md index 2c18baf2..3435f832 100644 --- a/docs/deployment/env-version-matrix.md +++ b/docs/deployment/env-version-matrix.md @@ -2,6 +2,7 @@ > 创建:2026-07-14。目的:记录三机 Python + 关键依赖版本现状,暴露不一致,给出 Lock 建议。 > 数据来源:Mac venv311 + NAS 容器均经实地 `pip list` 核实;VPS 基于部署文档 `vps-production-runbook.md`,未本轮直接 SSH 复核(SSH 不通)。 +> ⚠️ **2026-10-01 注(audit/20261001_docs_audit/):本文 VPS 侧快照截至 07 月,架构已大变**——miniQMT 于 09-08 退役、现役=大QMT 桥栈(XtItClient+redis RPC);VPS 常驻 sanguo-api 生产控制台+live/shadow supervisor 跑 17 个 schtask 采集。**VPS 现势以 runbook §1/§7 为准**,本文 §12 快照仅作历史参照(NAS 数据副本等条目已被现实超越)。 --- @@ -12,7 +13,7 @@ | **Mac Mini** | 开发 + 测试 | 3.11.15(venv311) | `./venv311/`(项目内) | 实地 `pip list` | | Mac 系统 Python | 不参与项目 | 3.14.6(homebrew)/ 3.9.6(/usr/bin) | — | `python3 --version` | | **NAS 容器** `sanguo_vnpy_v2` | 测试 + 回测 + 采集(生产近邻) | 3.10.20 | `/app`(容器内)= NAS `/volume1/homes/admin/.sanguo_projects/sanguo_vnpy_v2` | 实地 `docker exec ... pip list` | -| **Windows VPS** `49.232.102.198` | 生产(miniQMT + bridge) | 3.10.11 | `C:\Python310\python.exe` | 部署文档(本轮未直连) | +| **Windows VPS** `49.232.102.198` | 生产(大QMT 桥栈+常驻 api/引擎,07 月时为 miniQMT+bridge) | 3.10.11 | `C:\Python310\python.exe` | 部署文档(本轮未直连) | --- diff --git a/docs/deployment/nas-deploy-plan.md b/docs/deployment/nas-deploy-plan.md index 4f91d95a..92733f08 100644 --- a/docs/deployment/nas-deploy-plan.md +++ b/docs/deployment/nas-deploy-plan.md @@ -111,26 +111,22 @@ ssh sanguo-nas \ ssh sanguo-nas << 'EOF' D=/var/packages/Docker/target/usr/bin/docker $D stop sanguo_vnpy_v2 && $D rm sanguo_vnpy_v2 -$D run -d --name sanguo_vnpy_v2 --restart unless-stopped \ - -p 8000:8000 -p 8080:8080 \ +$D run -d --init --name sanguo_vnpy_v2 --restart unless-stopped \ + -p 8000:8000 \ -v /volume1/homes/admin/.sanguo_projects/sanguo_vnpy_v2:/app \ + -v /volume1/stock:/volume1/stock \ sanguo_vnpy_v2:latest EOF ``` > ⚠️ NAS CPU 弱,build 编 TA-Lib + 大包约 30–60 分钟。 +> ⚠️ 2026-10-01 勘误(audit P1-3):旧命令漏 `--init`——无 init 的容器后台进程会被 docker 清杀(曾实杀 02 长任务,铁律见 three-env §9);同漏 `-v /volume1/stock` 数据挂载、多挂了不存在的 8080。**现役容器参数以 `docker inspect sanguo_vnpy_v2` 实查为准**。 --- -## 五、外网链路(部署时不要动) +## 五、外网链路(⚠️ 已废弃,勿按此排障) -``` -外网 https://vnpy.mysanguo.top - → VPS Caddy :18000 → frps → Mac Mini frpc :8001 - → socat → 192.168.2.154:8000 → NAS 容器 -``` - -**部署应用只动 NAS 容器,绝不碰 frpc / socat / Caddy。** 详见 `~/.openclaw/workspace/docs/vps-deployment-guide.md`。 +> 2026-10-01 勘误(audit):本节描述的「vnpy.mysanguo.top → VPS Caddy :18000 → frps → Mac frpc → socat → NAS 容器」链路已废弃(.top 首尔入口 502 残留)。**现行外网入口=VPS 常驻 sanguo-api 直绑 vnpy.mysanguo.top**(runbook §7.1);NAS 容器仅内网 192.168.2.154:8000。此节仅存档排障历史。 --- diff --git a/docs/session-environment-guide.md b/docs/session-environment-guide.md index 7bb5858f..3ecb01c0 100644 --- a/docs/session-environment-guide.md +++ b/docs/session-environment-guide.md @@ -61,13 +61,17 @@ bash scripts/nas_sync/promote.sh --target nas # 全 ### Step 3 — NAS 冒烟(数据层/读取层改动必跑) +> ⚠️ 2026-10-01 勘误:旧文本引用 `scripts/smoke_e2e.py`——该一次性脚本已在审计卫生批(da32cca)删除,勿再找。**现行 NAS 验证=CI 自动覆盖**(nas-verify:login+strategy/list+/health+dbbardata 秒级 gate);CI 没跑(Mac 睡眠)时手动等效探针: + ```bash -ssh sanguo-nas 'cd /volume1/stock/sanguo_vnpy_v2 && \ - /var/packages/Docker/target/usr/bin/docker run --rm \ - -v /volume1/stock:/volume1/stock -v $(pwd):/app \ - sanguo_vnpy_v2:with-sqlite python /app/scripts/smoke_e2e.py' +# ① NAS web API 存活(免凭据探针) +curl -s -o /dev/null -w "%{http_code}\n" http://192.168.2.154:8000/health # 期望 200 +# ② NAS 副本数据可读(dbbardata 600519 行数>0,与 CI 同款) +ssh sanguo-nas "python3 -c 'import sqlite3 +c=sqlite3.connect(\"/volume1/stock/sanguo_vnpy_v2/data_backup/quant_trading.db\") +print(c.execute(\"SELECT COUNT(*) FROM dbbardata WHERE symbol=?\",(\"600519\",)).fetchone()[0])'" ``` -**预期**:`RESULT: 读取 N 条 BarData`(N>0)。验证 `read_db_daily` 能读 NAS `quant_trading.db`。 +**预期**:①=200;②=正数。容器内全量 login+strategy 探针见 ci-cd.yml `nas-verify` job(凭据不进文档)。 ### Step 4 — VPS 落盘验证(确认新代码到 prod) @@ -108,14 +112,18 @@ ssh 49.232.102.198 'cd C:\sanguo_vnpy_v2 && C:\Python310\python.exe -X utf8 scri --- -## 6. Reload 机制(VPS 无常驻 web) +## 6. Reload 机制(VPS 常驻+一次性两类) -VPS 是**一次性任务**模型(回测 runner + 采集 schtask),**没有常驻 web 服务**。 +> ⚠️ 2026-10-01 勘误:旧文「VPS 无常驻 web」过时——VPS 常驻 sanguo-api 生产控制台(runbook §7.1/§7.6)。 -- 代码部署后 **下次启动自动加载**,不用 hot reload、不用重启服务。 -- **立即让采集生效**: +- 采集/回测等**一次性任务**:代码部署后 **下次启动自动加载**。 +- **sanguo-api(常驻控制台)**:改 `sanguo_api`/`sanguo_orchestrator`/前端后须显式重启: ```bash - ssh 49.232.102.198 'schtasks /end sanguo-bs-eod && schtasks /run sanguo-bs-eod' + ssh 49.232.102.198 'schtasks /end /tn sanguo-api && schtasks /run /tn sanguo-api' + ``` +- **立即让采集生效**(bs-eod+bs-fund 已合并为 sanguo-bs-daily,2026-08-20): + ```bash + ssh 49.232.102.198 'schtasks /end sanguo-bs-daily && schtasks /run sanguo-bs-daily' ``` --- @@ -142,7 +150,8 @@ push master → ci-cd.yml 自动: test(pytest) → nas-deploy(推NAS后端+前 ⏸️ VPS 不自动推,停下等触发 推 VPS(nas-verify 绿后,触发 vps-deploy.yml,两种 approve): 人工 = Gitea UI → Actions → vps-deploy.yml → Run workflow(填 sha) - agent = curl -H "Authorization: token $PAT" POST .../dispatches body {"ref":"master","inputs":{"sha":""}} + agent = curl -H "Authorization: token $PAT" POST .../dispatches body {"ref":"master","inputs":{"sha":"","confirm":"推vps"}} + (⚠️ confirm 必填——vps-deploy.yml 口令闸门第一步校验,缺了直接 fail;仅当用户对话原话说「推vps」才可 dispatch) ↓ checkout 你传的 SHA(= NAS 验证过的) → promote --target vps → verify_unified_e2e ``` - **NAS 自动**:push 即触发 ci-cd.yml;nas-verify 是秒级 gate(API 健康 + 数据可读)。runner 是 Mac(睡眠时 CI 不跑,手动 `promote --target nas` 应急)。 diff --git a/docs/three-env-code-promote.md b/docs/three-env-code-promote.md index 5ce7f2ec..12e3dcb5 100644 --- a/docs/three-env-code-promote.md +++ b/docs/three-env-code-promote.md @@ -8,7 +8,7 @@ | 机器 | 角色 | 代码路径 | 工具 | |------|------|----------|------| | **Mac** | dev 源头(改代码) | `~/.openclaw/sanguo_projects/sanguo_vnpy_v2` | rsync/scp | -| **NAS** | test 镜像(只读副本) | `/volume1/stock/sanguo_vnpy_v2` | rsync(LAN 快) | +| **NAS** | test 镜像(只读副本) | `/volume1/homes/admin/.sanguo_projects/sanguo_vnpy_v2`(容器挂载源;⚠️`/volume1/stock/sanguo_vnpy_v2`=数据备份区非代码位) | rsync(LAN 快) | | **VPS** | prod 生产(实跑) | `C:\sanguo_vnpy_v2` | scp(无 rsync) | ``` @@ -42,7 +42,7 @@ bash scripts/nas_sync/promote.sh ``` 推送内容: -- 模块目录(13 个): `sanguo_api sanguo_backtest sanguo_common sanguo_data sanguo_factor sanguo_live sanguo_orchestrator sanguo_portfolio sanguo_qmt_bridge sanguo_research sanguo_trader sanguo_web scripts config tests` +- 模块目录(15 个): `sanguo_api sanguo_backtest sanguo_common sanguo_data sanguo_factor sanguo_live sanguo_orchestrator sanguo_portfolio sanguo_qmt_bridge sanguo_research sanguo_trader sanguo_web scripts config tests` - 根文件(4 个): `pyproject.toml pytest.ini requirements-lock.txt run_web.py` ### 3.2 单模块快速补推 @@ -59,21 +59,21 @@ bash scripts/nas_sync/promote.sh --module sanguo_portfolio ## 4. Reload 机制(重要) -VPS 进程模式是 **一次性任务**(回测 runner_backtest + 采集 schtask bs_eod/akshare),**无常驻 web 服务**。 +VPS 进程分两类:**常驻**(sanguo-api 生产控制台 / live-supervisor / shadow-desk,开机自启)+ **一次性任务**(回测 runner_backtest + 采集 schtask)。⚠️ 2026-10-01 勘误:旧文「无常驻 web 服务」过时(见 §12 勘误注);旧任务名 `sanguo-bs-eod` 已于 2026-08-20 并入 `sanguo-bs-daily`。 | 场景 | reload 动作 | |------|-------------| | 采集 schtask(定时) | **无需操作**。下次 schtask 触发时自动加载新代码 | | 回测任务 | **无需操作**。下次启动回测时自动加载新代码 | -| 立即让采集生效 | `schtasks /end sanguo-bs-eod && schtasks /run sanguo-bs-eod` | +| sanguo-api(常驻控制台) | `schtasks /end sanguo-api && schtasks /run sanguo-api`(改 sanguo_api/orchestrator/前端后必须) | +| 立即让采集生效 | `schtasks /end sanguo-bs-daily && schtasks /run sanguo-bs-daily` | -> 一句话: 代码部署后,**下次启动自动生效**,不用 hot reload、不用重启服务。 +> 一句话: 代码部署后,**下次启动自动生效**;常驻进程(api/supervisor)须显式重启。 立即生效命令(在 VPS 上执行,通过 ssh): ```bash -ssh 49.232.102.198 'schtasks /end sanguo-bs-eod' -ssh 49.232.102.198 'schtasks /run sanguo-bs-eod' +ssh 49.232.102.198 'schtasks /end sanguo-bs-daily && schtasks /run sanguo-bs-daily' ``` ## 5. 落盘验证 @@ -88,7 +88,7 @@ ssh 49.232.102.198 'powershell -NoProfile -Command "Get-ChildItem C:\sanguo_vnpy ssh 49.232.102.198 'powershell -NoProfile -Command "Select-String -Path C:\sanguo_vnpy_v2\sanguo_common\__init__.py -Pattern SOME_TOKEN"' # NAS: 查某文件 -ssh sanguo-nas "ls -la /volume1/stock/sanguo_vnpy_v2/sanguo_portfolio/" +ssh sanguo-nas "ls -la /volume1/homes/admin/.sanguo_projects/sanguo_vnpy_v2/sanguo_portfolio/" ``` > 教训(memory: commit≠部署VPS): 改完代码必须晋升,否则 VPS 跑旧代码。用 `Select-String`/`grep` 验证新代码落盘。 @@ -266,11 +266,15 @@ CI `enforce-label` 强制:本次 push 的 commit 必须带 `[vps]`(VPS 运 | 🔴 | `sanguo_common/` | 被上述引用 | | 🔴 | `scripts/data_platform/*.py` | VPS schtask 跑的采集/merge/verify | | 🔴 | `scripts/qmt_relogin/` | 三层防御本体;⚠️**promote 不部署它——须手动 scp 到 `C:\sanguo_bigqmt\`**(§11.3) | +| 🔴 | `sanguo_api/`(routes/app/uvicorn) | **VPS 常驻 sanguo-api**(run_api.ps1→run_web.py→:8000=生产控制台 vnpy.mysanguo.top,runbook §7.1);改后须 `schtasks /end /tn sanguo-api && schtasks /run /tn sanguo-api` | +| 🔴 | `frontend/`(Vue 源码) | VPS 挂 `frontend/dist`(公网前端);vps-deploy.yml 每次自动构建+推送+重启 sanguo-api(§13) | +| 🟡 弱触及 | `sanguo_orchestrator/` | 随 sanguo_api 常驻加载(run_web.py 单进程内存态,app.py 直接 import);VPS 控制台动作可触发,改后同样须重启 sanguo-api | | 🟡 弱触及 | `requirements-lock.txt` | VPS 手动 pip 装,lock 仅参考 | -| 🟢 **NAS 专属**(=[nas]) | `sanguo_orchestrator/`(仅 web 启动) | VPS 不跑 web→不跑 ProcessPool | -| 🟢 | `sanguo_api/`(routes/app/uvicorn) `sanguo_web/`(前端) | VPS 无常驻 web | +| 🟢 | `sanguo_web/`(**legacy 平行后端,不是前端**) | 已退役、任何环境不部署(2026-10-01 架构审计 P0-3 待终裁处置);前端=`frontend/` | | 🟢 | `docker/` `Dockerfile` `entrypoint.sh` `.gitea/` | VPS 无 docker | -| 🟢 | `config/`(vnpy_db 等容器 config) | VPS 用 `SANGUO_DB_PATH` env 覆盖 | +| 🟢 | `config/`(vnpy_db 等容器 config) | VPS 用 `SANGUO_DB_PATH` env 覆盖(backtest.yaml 仍作种子直推) | + +> **⚠️ 2026-10-01 勘误(audit/20261001_docs_audit/ P0-2)**:旧矩阵曾把 `sanguo_api/`+前端整行标 🟢「VPS 无常驻 web」——**错**。VPS 一直常驻 sanguo-api(runbook §7.6 09-25 勘误原文:「本就常驻跑纯 API」),vps-deploy.yml 每次部署都构建前端 dist 推 VPS 并重启 sanguo-api。api/前端改动按上表现判 **🔴 [vps]**。同病原文当时还复制在 `.claude/CLAUDE.md`、`session-environment-guide.md`、`vps-deploy-pending.md` 三处,本轮一并修正。 - **混合模块**(`sanguo_portfolio/` 若只改 orchestrator 调度、`sanguo_api/` 若只改 routes)看 diff 具体文件对照上表,不整模块一刀切。 - **判定 3 步**:①看 commit 标签 → ②对照触及面表 → ③问「VPS 跑这段代码吗」。 diff --git a/scripts/ops/README.md b/scripts/ops/README.md index ebdc94a8..07298b0a 100644 --- a/scripts/ops/README.md +++ b/scripts/ops/README.md @@ -40,7 +40,7 @@ BRIDGE_URL=http://192.168.2.101:8765 BRIDGE_TOKEN=xxx \ **环境变量**: | 变量 | 默认 | 说明 | |------|------|------| -| `BRIDGE_URL` | `http://192.168.2.101:8765` | bridge 基址(Mac tunnel 端点) | +| `BRIDGE_URL` | `http://192.168.2.101:8765` | bridge 基址。⚠️ 2026-10-01 注:此默认值指向旧 FastAPI bridge(:8765,09-08 已随 miniQMT 整体退役);现役=大QMT 桥栈 redis RPC(探针见 runbook §3/§4),本探针仅作历史工具保留 | | `BRIDGE_TOKEN` | — | 设了才探 `/account`;从环境读,绝不硬编码 | | `BRIDGE_TIMEOUT` | `8` | 单请求超时秒数 |