核心用法
ngrok-preview 是一项任务级工具,用于将 OpenClaw 生成的本地产物(图片、图表、文件)通过 ngrok 隧道暴露为临时公网链接,并直接推送至 Telegram。其设计遵循“快速生成→即时分享→到期清理”的闭环:
1. 初始化:执行 python3 scripts/ngrok_preview.py up,传入任务标题、会话 ID(如 tg-20241225-report)、TTL(默认 120 分钟)及一个或多个产物路径;
2. 获取链接:命令返回 JSON 包含 public_url、expires_at、stop_command;
3. 推送分享:在 Telegram 发送附带过期说明的链接,明确告知用户“仅本次任务产物、到期自动清理”;
4. 会话管理:任务结束后执行 down --delete-session-dir 主动销毁,或依赖 cleanup 定期清理过期会话。
显著优点
- 零配置穿透:依托 ngrok 成熟内网穿透,无需公网 IP、域名或反向代理;
- 移动优先:链接针对手机端预览优化,解决开发者在 PC 生成图表后需在手机查看的痛点;
- 上下文隔离:强制
session-id绑定单次任务,避免目录级暴露风险; - 生命周期可控:短 TTL + 显式销毁,降低长期暴露面。
潜在缺点与局限性
- 依赖外部服务:ngrok 为第三方商业服务,需有效 authtoken,免费版有并发与带宽限制;
- 临时性限制:不适合需要长期托管或高可用访问的场景;
- Token 管理:
$NGROK_AUTHTOKEN需妥善保管,硬编码或日志泄露会导致隧道滥用; - 网络抖动:ngrok 连接质量受本地网络及 ngrok 服务器区域影响,偶发超时。
适合人群
- 需频繁在 PC 生成可视化产物并在手机/平板即时查看的开发者;
- 希望避免繁琐文件传输(微信/邮件/云盘)的 Telegram 重度用户;
- 追求“任务即链接、用完即焚”的临时分享需求的敏捷团队。
常规风险
- 隧道暴露面:虽限定单任务目录,但若产物包含敏感数据(内部截图、含 token 的日志),短窗口期内仍存在泄露风险;
- 链接传播:Telegram 消息可转发,用户可能忽视过期提示导致链接流入非预期渠道;
- Token 与日志:脚本参数
--auth-token若出现在 shell history 或 CI 日志,需配合 secret 管理机制; - 会话残留:异常退出未执行
down时,需依赖cleanup兜底,否则残留会话目录占用磁盘。
安全等级评估为 A,来源可信度为 T2(官方 ngrok 服务,但脚本为本地封装)。