# mode_procedure 查看服务 + 公网分享 使用说明 把本地的程序控制类型评估查看服务(`server.py`,默认 `:8771`)一键起好,并通过 Cloudflare 隧道生成一个**公网链接**,发给任何人就能看 —— 无需对方在同一局域网、无需对方改代理设置。 脚本:`share.sh`(本目录) --- ## 快速开始 ```bash cd /Users/max_liu/max_liu/company/Agent/examples/process_pipeline/script/search_eval/mode_procedure/shell ./share.sh start # 起服务 + 隧道,打印公网链接 ``` 执行后会输出类似: ``` 🌐 公网链接(发给同事即可,无需局域网/改代理): https://advanced-how-leasing-brief.trycloudflare.com ``` 把这个链接发到群里即可。**进程一直保留**(已脱离终端),关掉终端窗口也不会断。 --- ## 全部命令 | 命令 | 作用 | |------|------| | `./share.sh start` | 起 `server.py`(后台)+ cloudflared 隧道(后台,http2),打印公网链接 | | `./share.sh stop` | 停掉服务和隧道 | | `./share.sh restart` | 重启两者(**会换一个新链接**,记得重新发) | | `./share.sh status` | 查看运行状态 + 当前链接 + 本地自检(HTTP 状态码) | | `./share.sh url` | 只打印当前公网链接(方便复制) | `start` 是幂等的:服务已在跑就跳过,不会重复起进程,可放心反复执行当作"确保它在跑"。 --- ## 典型场景 **第一次分享 / 重新分享:** ```bash ./share.sh start # 拿到链接,发群 ``` **链接突然打不开了(先别慌,一条命令查):** ```bash ./share.sh status ``` - `server.py ❌` → 后端挂了,执行 `./share.sh start` 拉起来。 - `cloudflared ❌` 或链接变了 → 隧道断了,执行 `./share.sh restart`(换新链接)。 - 两个都 ✅ 但对方打不开 → 多半是对方浏览器/系统代理拦截,见下方"常见问题"。 **忘了链接是多少:** ```bash ./share.sh url ``` **用完关闭分享:** ```bash ./share.sh stop ``` --- ## 它替你规避的坑(为什么不直接用局域网 IP / 不直接 `python server.py`) | 坑 | 现象 | 脚本的处理 | |----|------|-----------| | 前台运行,关终端被 SIGHUP 杀掉 | 关窗口/休眠后链接 502 | 用 `setsid`/`nohup` 脱离终端守护 | | QUIC/UDP 被公司网或 VPN 封 | 隧道死循环重连,公网打不开 | 固定 `--protocol http2`,走 TCP 443 | | 局域网共享要求同网段 | WiFi 客户端隔离 → ping 不通 | 走公网隧道,完全绕开局域网 | | 访客本地代理拦截内网 IP | 同事打不开 `192.168.x.x` | 公网 HTTPS,访客代理正常放行 | | 重复启动起一堆进程 | 端口冲突/混乱 | `start` 先检测端口,幂等 | --- ## 常见问题 **Q:链接打开是 502 / Bad Gateway?** 后端 `server.py` 没在跑(隧道只是转发器)。`./share.sh status` 确认,再 `./share.sh start`。 **Q:对方打不开,但我本地和 `status` 都正常?** 对方浏览器或系统开了代理(Clash/V2Ray 等),把公网域名也拦了。让对方临时关代理,或把 `trycloudflare.com` 加进代理白名单/直连规则。 **Q:链接每次重启都变,能不能固定?** `trycloudflare` 是临时地址,绑定在 cloudflared 进程生命周期上,进程停就失效、重启换新。要**永久固定地址**需要 Cloudflare 账号 + 自有域名做 named tunnel —— 需要时再单独配置。 **Q:日志在哪?** - 服务日志:`../.server.log` - 隧道日志:`../.cloudflared.log` (都在 `mode_procedure/` 目录下,以 `.` 开头隐藏。) **Q:换个端口?** ```bash PORT=9000 ./share.sh start ``` **Q:用指定的 python 解释器?** ```bash PYTHON=/path/to/python ./share.sh start ``` --- ## 依赖 - `cloudflared`(已安装;如缺失:`brew install cloudflared`) - `python`(项目当前用 conda `base` 环境的 `python`) - `lsof` / `curl`(macOS 自带)