实时捕获 Claude Code 终端输出,通过 WebSocket 推送到浏览器。支持远程/移动设备观察 CC 执行任务,也可嵌入监控面板。
条件说明Node.js ≥ v18运行后端服务npm包管理Claude Code CLI需 claude 命令可用C++ 编译工具node-pty 编译需要(Linux: build-essential, macOS: Xcode CLT)
服务端和浏览器之间需要网络可达:
场景方案同一台机器http://localhost:18798/,无需额外配置局域网(同 WiFi)用服务端局域网 IP,如 http://192.168.1.x:18798/远程/移动设备推荐装 Tailscale,手机连上后通过 Tailscale IP 访问,无需公网 IP 或端口转发
⚠️ 手机和服务端不在同一网络且没有 Tailscale 时,浏览器会显示空白或反复重连。
bash
cd ~/.openclaw/workspace/skills/cc-log-viewer
cd assets && npm install && cd ..
bash assets/start-all.sh
bash
curl http://localhost:18798/api/status
# → {"running":true,"clients":0,"bufferLines":87}
text
http://localhost:18798/
嵌入模式:http://localhost:18798/?embed=1
方法路径说明GET``/api/status状态查询POST``/api/send向 CC 发命令(body: {"command":"..."})POST``/api/restart重启 CC 进程
text
log-streamer.js (单进程,端口可配置 — 默认 18798)
├─ node-pty — 为 CC 提供真实 pty 环境
│ ↓ stdout
├─ 环形缓冲 (1000行)
│ ↓ 100ms 轮询
├─ WebSocket Server — 实时推送
│ ↓
├─ xterm.js (自托管 /cdn/) — 浏览器终端渲染
└─ HTTP API
bash
kill $(lsof -t -i:18798) 2>/dev/null
# 仅重启 CC 不停服务:
curl -X POST http://localhost:18798/api/restart
路径说明scripts/log-streamer.js后端服务(HTTP + WebSocket + CC 进程管理)assets/index.html前端 xterm.js 页面assets/start-all.sh一键启动脚本assets/package.jsonnpm 依赖