TOPn动态规则+MCP首次检测+browser-harness依赖检测+环境检查系统分流(Windows/macOS)

This commit is contained in:
maogeigei committed 2026-08-31 16:30:51 +08:00
1 parent 268ce29aae
commit 9b878eccc3
12 files changed
+135 -37

No files matched your search

@@ -141,30 +141,53 @@
## 五、browser-harness 调用方式(环境 SOP)
> **环境说明(2026-08 实测)**:browser-harness 由 uv 工具安装,可执行文件在 `~/.local/bin/browser-harness.exe`;技能本体在 `~/.dsh/skills/browser-harness/`(随 dsh_MCNProject 仓库分发,换机器自带)。
> **环境说明(2026-08 实测)**:browser-harness 由 uv 工具安装,可执行文件位置**按系统区分**——Windows:`~/.local/bin/browser-harness.exe`;macOS/Linux:`~/.local/bin/browser-harness`;技能本体在 `~/.dsh/skills/browser-harness/`(随 dsh_MCNProject 仓库分发,换机器自带)。
### 5.0 环境检查与安装(每次浏览器任务前【必做】)
**① 检测是否已安装(任一方法即可判定):**
| 方法 | 操作 | 判定 |
|------|------|------|
| ① 可执行文件 | 检查 `~/.local/bin/browser-harness.exe`(Windows)/ `~/.local/bin/browser-harness`(macOS/Linux)是否存在 | 存在 = 已安装 |
| ② 命令探测 | `command -v browser-harness`(macOS/Linux)/ `where browser-harness`(Windows)是否有输出 | 有输出 = 已安装 |
| ③ doctor 验证(可选) | `browser-harness doctor`(确认工具/daemon/Chrome 三要素) | 三要素就绪 = 可用 |
**② 未安装 → 提醒用户安装**(由 SKILL.md「browser-harness 依赖(红线)」驱动):
- **可跳过**:改用三方数据 API / MCP 兜底数据源,但功能一/二浏览器抓取无法执行
- **同意安装**:`uv tool install --python 3.12 --upgrade --force browser-harness`(`--python 3.12` 防止选中过旧版本;`--upgrade --force` 覆盖旧安装)
- **技能本体** `~/.dsh/skills/browser-harness/` 随 dsh_MCNProject 仓库分发(换机器自带;如缺失可从 browser-harness 仓库的 `browser-harness skill` 命令重新生成)
- **安装后验证**:`command -v browser-harness`(macOS/Linux)/ `where browser-harness`(Windows)有输出 + `browser-harness doctor` 三要素全绿,再进入下方 5.1 环境准备
### 5.1 环境准备(每次浏览器任务前【必做】)
**① 清除代理环境变量(最重要,漏掉必踩坑)**:本机 Shadowsocks 的 Privoxy 组件监听 10800,会劫持 127.0.0.1 的 CDP 请求(报 "Internal Privoxy Error" 或连接失败)。
**① 清除代理环境变量(最重要,漏掉必踩坑)**:本机代理软件(如 Shadowsocks 的 Privoxy 组件监听 10800)会劫持 127.0.0.1 的 CDP 请求(报 "Internal Privoxy Error" 或连接失败)。**按系统清除**:
- **Windows(PowerShell)**:
```powershell
Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:http_proxy, Env:https_proxy -ErrorAction SilentlyContinue
$env:NO_PROXY = "127.0.0.1,localhost,::1"
```
- **macOS/Linux(bash/zsh)**:
```bash
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
export NO_PROXY="127.0.0.1,localhost,::1"
```
**② 连接方式(按顺序尝试)**:
| 方式 | 操作 | 说明 |
|---|---|---|
| A. 自动(推荐) | 直接运行 browser-harness(daemon 自动启动并连接浏览器) | 最简单;可能触发 Chrome 授权弹窗(见 5.2) |
| B. 定向连接 | `$env:BU_CDP_URL="http://127.0.0.1:<端口>"` 后运行 | 端口:先探测 9222(用户 Chrome 隐式调试端口)/ 9223(独立实例),取有效者 |
| C. 独立实例 | `chrome.exe --remote-debugging-port=9223 --user-data-dir=<固定目录> about:blank` | 与用户浏览器隔离;Chrome 151+ 首次连接同样可能弹授权 |
| B. 定向连接 | 设置 BU_CDP_URL 后运行:Windows `$env:BU_CDP_URL="http://127.0.0.1:<端口>"` / macOS `export BU_CDP_URL="http://127.0.0.1:<端口>"` | 端口:先探测 9222(用户 Chrome 隐式调试端口)/ 9223(独立实例),取有效者 |
| C. 独立实例 | Windows:`chrome.exe --remote-debugging-port=9223 --user-data-dir=<固定目录> about:blank`;macOS:`"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9223 --user-data-dir=<固定目录> about:blank` | 与用户浏览器隔离;Chrome 151+ 首次连接同样可能弹授权 |
### 5.2 Chrome 151+ 远程调试授权(关键机制)
- Chrome 151+ 无论隐式(9222)还是显式(--remote-debugging-port)启动,**CDP 端点默认 404,首次连接会弹「Allow remote debugging?」授权框**;点击「允许」后端点才可用(Chrome 会记住,后续不再弹)
- 弹窗可能出现在**后台窗口**:看不到时打开 `chrome://inspect/#remote-debugging` 页面启用(勾选后同样生效)
- 连接前探测授权状态:`Invoke-WebRequest http://127.0.0.1:<端口>/json/version` —— **返回含 "Browser" 的 JSON = 可用**;404/超时 = 未授权或非 CDP
- 连接前探测授权状态:Windows(PowerShell)`Invoke-WebRequest http://127.0.0.1:<端口>/json/version` / macOS/Linux(bash/zsh)`curl -s http://127.0.0.1:<端口>/json/version` —— **返回含 "Browser" 的 JSON = 可用**;404/超时 = 未授权或非 CDP
### 5.3 失败排查顺序(按此执行,不跳步)