Tailscale WireGuard mesh · SSH dispatch · MCP-over-SSH · Cloud UB async
2026-06-22 · Mac CLI 小克 2 (SS1) 研究提案
調查所有可行的 SS1↔SS2 雙向連接方案,涵蓋 skill、CLI、SDK、plugin、gateway、API 等層面。
| # | 方法 | 機制 | 優點 | 缺點 | 成本 | 狀態 |
|---|---|---|---|---|---|---|
| 1 | SSH CLI Wrappers | Shell scripts over Tailscale SSH | 零額外 infra、今天就能做、雙向檔案傳輸 | 需 per-command 包裝、無工具整合 | $0 | ✅ 部分已通 |
| 2 | MCP Server over SSH | claude mcp serve stdio over SSH |
最優雅:SS1 直接用 SS2 全工具 | SS2 需裝 Claude Code CLI | $0 | 🆕 提案 |
| 3 | Cloud UB Async | D1 + Vectorize BGE-M3 on SS3 | 已運作、跨船共腦、WO追蹤 | 非即時(async only) | $0 | ✅ 運作中 |
| 4 | Tailscale Direct | Tailscale funnel / serve 暴露端口 | Public URL 無需 SSH、NAT穿透 | 暴露端口、需 ACL 調整 | $0 | ⚠️ 備案 |
| 5 | CF Tunnel Relay | Cloudflare Tunnel + Access 門控 | 有 Access 認證閘、不暴露 IP | 多一層延遲、兩端需 cloudflared | $0 | ⚠️ 備案 |
| 6 | SDK Programmatic | Claude SDK / Codex SDK 直接呼叫 | 最靈活、可程式化控制 | 複雜度高、需維護 client 程式 | API cost | ⚠️ 備案 |
Shell scripts 透過 Tailscale SSH 隧道執行遠端命令
ss2-shell.sh — 通用 SSH wrapperss2-codex-dispatch.sh — Codex 派工(支援 --full-auto)rsync — 雙向檔案同步
核心指令:
ssh -o BatchMode=yes -o ConnectTimeout=8 -i "$KEY" XYZ@100.122.123.107 "$CMD"
前置條件:Tailscale 連線、SSH ed25519 key 已交換
Claude Code 原生 MCP server 透過 SSH stdio 透傳
claude mcp serve 輸出 MCP 協議到 stdio
設定指令:
claude mcp add ss2-cc -- ssh XYZ@100.122.123.107 "claude mcp serve"
前置條件:SS2 安裝 Claude Code CLI(🔒 需夏哥確認)
SS3 上的團隊共腦 — D1 + Vectorize BGE-M3 混合搜尋
ingest_fragment 知識共享search_brain 跨船搜尋端點:ub.superportia.dev
角色:異步調度 + 團隊記憶 + session 交接
Tailscale funnel/serve 直接暴露本地服務為 public URL
tailscale serve 暴露 Tailnet 內部端口tailscale funnel 產生 public URL不推薦原因:暴露端口風險 > SSH 隧道;ACL 管理增加複雜度
Cloudflare Tunnel 代理 + CF Access 認證閘門
cacoch.superportia.dev tunnel不推薦原因:多一層 proxy 延遲;SSH 直連更快更簡單
使用 Claude SDK / Codex SDK 程式化呼叫遠端 agent
不推薦原因:複雜度高;SSH wrapper + MCP 已能涵蓋 95% 場景
今天就能做 · 最簡單直接 · 預估 30 min
ss2-shell.sh 已驗證ss2-codex-dispatch.sh 已驗證ss1-shell.sh 待建(鏡像)ss1-claude-dispatch.sh 待建rsync over Tailscale SSH能力:雙向 shell 命令 + 檔案傳輸 + AI agent 派工
最優雅整合 · SS2 需裝 Claude Code · 預估 1 hr
claude mcp serve 暴露為 MCP server效果:SS1 session 裡直接用 SS2 的 Read/Write/Bash/全部工具
設定:claude mcp add ss2-cc -- ssh XYZ@100.122.123.107 "claude mcp serve"
已運作 · 跨船共腦 · 零設定
ingest_fragment 知識共享search_brain 跨船搜尋角色:異步調度 + 團隊記憶 + session 交接
| 來源 | 目標 | 方法 | 指令 | 狀態 | HITL |
|---|---|---|---|---|---|
| SS1 | SS2 shell | SSH | ss2-shell.sh '...' | ✅ 已驗證 | ✅ 自主 |
| SS1 | SS2 Codex | SSH+CLI | ss2-codex-dispatch.sh '...' | ✅ 通(quota 中) | ✅ 自主 |
| SS2 | SS1 shell | SSH | ss1-shell.sh '...' | 🔄 待建 | ✅ 自主 |
| SS2 | SS1 Claude | SSH+CLI | ss1-claude-dispatch.sh '...' | 🔄 待建 | ✅ 自主 |
| SS1 | SS2 全工具 | MCP-over-SSH | claude mcp add ss2-cc ... | 🆕 提案 | 🔒 首次設定 |
| SS2 | SS1 全工具 | MCP-over-SSH | 反向同理 | 🆕 提案 | 🔒 首次設定 |
| Any | Any | Cloud UB | WO + mailbox + search_brain | ✅ 運作中 | ✅ 自主 |
| SS1 | SS2 檔案 | rsync/scp | rsync -az ... XYZ@100.122.123.107:... | ✅ 可用 | ⚠️ 路徑限制 |
| SS2 | SS1 檔案 | rsync/scp | rsync -az ... xy2024air15@100.119.195.8:... | 🔄 需 SSH key | 🔒 key 交換 |
依據 L0 §3 HITL Boundary,跨船操作分為需確認與可自主兩類。圖示 + 文字標示(色弱友善)。
dispatch-scope-guard.sh 限定每次派工的檔案存取白/黑名單| ⚠️ 風險 | 影響 | 緩解措施 |
|---|---|---|
| SSH key 外洩 | 跨船存取失控 | Tailscale ACL 限制連線來源 + ed25519 key rotation |
| MCP scope creep | agent 越權讀寫遠端檔案 | dispatch-scope-guard.sh 白/黑名單 + CLAUDE_ALLOW_PATHS |
| 跨船 quota 消耗 | Claude Max 額度燒爆 | 同一 routing table,cheapest-first 路由 |
| 網路中斷 | SSH 連線失敗 | Cloud UB async fallback(L3 自動降級) |
| SS2 離線 | 無法 dispatch | Cloud UB mailbox 暫存,SS2 上線後接續 |
| 指令注入 | 惡意命令透過 SSH 執行 | wrapper script 參數驗證 + BatchMode 無互動 |
預估 30 min · 前置:SS2 Tailscale online + SSH key
ss1-shell.sh(鏡像 ss2-shell.sh)ss1-claude-dispatch.shss1-shell.sh 'hostname'交付:雙向 shell + agent 派工 + 檔案同步
預估 1 hr · 前置:SS2 裝 Claude Code CLI 🔒
claude mcp add ss2-cc交付:雙向 MCP 透明代理,全工具互通
預估 2 hr · 前置:Phase 1+2 驗證通過
cacoch-crossover skillcacoch-selftest.shsoul.md §4 交接鏈交付:跨船能力成為 cacoch 底盤一部分