CACOCH Crossover Architecture

SS1↔SS2 雙向派工網路拓樸

Tailscale WireGuard mesh · SSH dispatch · MCP-over-SSH · Cloud UB async

2026-06-22 · Mac CLI 小克 2 (SS1) 研究提案

TAILSCALE WIREGUARD MESH SS1 — MacBook Air M3 100.119.195.8 ⬡ Claude Code (Opus 4.8) — 指揮 ⬡ OpenCode (kimi/qwen) — worker ⬡ Hermes (qwen3) — cron/bg ⬡ Antigravity — research ⬡ Codex + Copilot + Gemma4 7 AI agents · 53+ MCP tools SS2 — MSI Windows 100.122.123.107 ⬡ Codex CLI (gpt-5.5) — worker ⬡ OpenSSH Server — SSH 接入 ◇ Future: Claude Code ◇ Future: OpenCode / Hermes 32GB RAM · GPU (RTX) quota reset ~13:12 TPE SS3 — VPS Helsinki 100.79.163.88 ⬡ n8n Workflows — automation ⬡ Cloud UB (D1 + Vectorize) — 共腦 ◇ Future: Hermes VPS 24/7 Hetzner CAX11 · 4GB ARM ✅ SSH 已通 🔄 待建 🆕 MCP Cloud UB async Cloud UB async LEGEND: ✅ 已驗證 🔄 待建 🆕 提案中 Tailscale mesh

研究總覽 — 6 種跨船方法比較

調查所有可行的 SS1↔SS2 雙向連接方案,涵蓋 skill、CLI、SDK、plugin、gateway、API 等層面。

#方法機制優點缺點成本狀態
1SSH CLI Wrappers Shell scripts over Tailscale SSH 零額外 infra、今天就能做、雙向檔案傳輸 需 per-command 包裝、無工具整合 $0 部分已通
2MCP Server over SSH claude mcp serve stdio over SSH 最優雅:SS1 直接用 SS2 全工具 SS2 需裝 Claude Code CLI $0 🆕 提案
3Cloud UB Async D1 + Vectorize BGE-M3 on SS3 已運作、跨船共腦、WO追蹤 非即時(async only) $0 運作中
4Tailscale Direct Tailscale funnel / serve 暴露端口 Public URL 無需 SSH、NAT穿透 暴露端口、需 ACL 調整 $0 ⚠️ 備案
5CF Tunnel Relay Cloudflare Tunnel + Access 門控 有 Access 認證閘、不暴露 IP 多一層延遲、兩端需 cloudflared $0 ⚠️ 備案
6SDK Programmatic Claude SDK / Codex SDK 直接呼叫 最靈活、可程式化控制 複雜度高、需維護 client 程式 API cost ⚠️ 備案

各方法詳細說明

已驗證 SSH CLI Wrappers

Shell scripts 透過 Tailscale SSH 隧道執行遠端命令

  • ss2-shell.sh — 通用 SSH wrapper
  • ss2-codex-dispatch.sh — Codex 派工(支援 --full-auto
  • rsync — 雙向檔案同步
  • 🔄 反向 SS2→SS1 wrapper 待建

核心指令
ssh -o BatchMode=yes -o ConnectTimeout=8 -i "$KEY" XYZ@100.122.123.107 "$CMD"

前置條件:Tailscale 連線、SSH ed25519 key 已交換

提案 MCP Server over SSH

Claude Code 原生 MCP server 透過 SSH stdio 透傳

  • 🆕 claude mcp serve 輸出 MCP 協議到 stdio
  • 🆕 SSH 透明管道傳輸(零額外 infra)
  • 🆕 SS1 session 直接呼叫 SS2 的 Read/Write/Bash 全工具

設定指令
claude mcp add ss2-cc -- ssh XYZ@100.122.123.107 "claude mcp serve"

前置條件:SS2 安裝 Claude Code CLI(🔒 需夏哥確認)

運作中 Cloud UB Async

SS3 上的團隊共腦 — D1 + Vectorize BGE-M3 混合搜尋

  • Work Order 系統跨船追蹤
  • Agent Mailbox 非同步訊息
  • ingest_fragment 知識共享
  • search_brain 跨船搜尋

端點ub.superportia.dev

角色:異步調度 + 團隊記憶 + session 交接

備案 Tailscale Direct

Tailscale funnel/serve 直接暴露本地服務為 public URL

  • ⚠️ tailscale serve 暴露 Tailnet 內部端口
  • ⚠️ tailscale funnel 產生 public URL
  • ⚠️ 需修改 Tailscale ACL policy

不推薦原因:暴露端口風險 > SSH 隧道;ACL 管理增加複雜度

備案 CF Tunnel Relay

Cloudflare Tunnel 代理 + CF Access 認證閘門

  • ⚠️ 已有 cacoch.superportia.dev tunnel
  • ⚠️ 可新增 ingress rule 給跨船通訊
  • ⚠️ 兩端都需 cloudflared daemon

不推薦原因:多一層 proxy 延遲;SSH 直連更快更簡單

備案 SDK Programmatic

使用 Claude SDK / Codex SDK 程式化呼叫遠端 agent

  • ⚠️ 最靈活的整合方式
  • ⚠️ 需維護自訂 client 程式
  • ⚠️ API 按量計費(非訂閱內)

不推薦原因:複雜度高;SSH wrapper + MCP 已能涵蓋 95% 場景

推薦:三層漸進架構

為什麼推薦三層? L1 SSH 今天就能用(已驗證)→ L2 MCP 最優雅整合(Claude Code 原生協議)→ L3 Cloud UB 異步共腦(已運作)。三層逐步疊加,任一層獨立可用。Tailscale funnel / CF Tunnel / SDK 三方案作為備案保留——現階段複雜度超過收益,不急。

Layer 1 SSH CLI Wrappers

今天就能做 · 最簡單直接 · 預估 30 min

  • SS1→SS2: ss2-shell.sh 已驗證
  • SS1→SS2: ss2-codex-dispatch.sh 已驗證
  • 🔄 SS2→SS1: ss1-shell.sh 待建(鏡像)
  • 🔄 SS2→SS1: ss1-claude-dispatch.sh 待建
  • 資料讀寫: rsync over Tailscale SSH

能力:雙向 shell 命令 + 檔案傳輸 + AI agent 派工

Layer 2 MCP Server over SSH

最優雅整合 · SS2 需裝 Claude Code · 預估 1 hr

  • 🆕 claude mcp serve 暴露為 MCP server
  • 🆕 SSH 透明傳輸 stdio(零額外 infra)
  • 🆕 SS1 掛上 SS2 的全部工具(反向同理)

效果:SS1 session 裡直接用 SS2 的 Read/Write/Bash/全部工具

設定:claude mcp add ss2-cc -- ssh XYZ@100.122.123.107 "claude mcp serve"

Layer 3 Cloud UB Async

已運作 · 跨船共腦 · 零設定

  • Work Order 系統跨船追蹤
  • Agent Mailbox 非同步訊息
  • ingest_fragment 知識共享
  • search_brain 跨船搜尋

角色:異步調度 + 團隊記憶 + session 交接

跨船派工矩陣

來源目標方法指令狀態HITL
SS1SS2 shellSSHss2-shell.sh '...' 已驗證✅ 自主
SS1SS2 CodexSSH+CLIss2-codex-dispatch.sh '...' 通(quota 中)✅ 自主
SS2SS1 shellSSHss1-shell.sh '...'🔄 待建✅ 自主
SS2SS1 ClaudeSSH+CLIss1-claude-dispatch.sh '...'🔄 待建✅ 自主
SS1SS2 全工具MCP-over-SSHclaude mcp add ss2-cc ...🆕 提案🔒 首次設定
SS2SS1 全工具MCP-over-SSH反向同理🆕 提案🔒 首次設定
AnyAnyCloud UBWO + mailbox + search_brain 運作中✅ 自主
SS1SS2 檔案rsync/scprsync -az ... XYZ@100.122.123.107:... 可用⚠️ 路徑限制
SS2SS1 檔案rsync/scprsync -az ... xy2024air15@100.119.195.8:...🔄 需 SSH key🔒 key 交換

⚖️ HITL 邊界 — 跨船操作授權分類

依據 L0 §3 HITL Boundary,跨船操作分為需確認與可自主兩類。圖示 + 文字標示(色弱友善)。

🔒 需夏哥確認

  • 🔒 首次在 SS2 安裝 Claude Code CLI
  • 🔒 修改 Tailscale ACL 或新增 SSH key
  • 🔒 建立新的 CF Tunnel ingress route
  • 🔒 跨船 dispatch 影響 production 的操作
  • 🔒 跨船寫入 protected files(CLAUDE.md, .env, hooks, SSH keys)
  • 🔒 跨船刪除任何檔案或停止 process
  • 🔒 跨船安裝或更新 dependencies

✅ 可自主執行

  • ✅ SSH shell read-only 查詢命令
  • ✅ rsync 檔案同步(非 protected 路徑)
  • ✅ Cloud UB 讀寫(已授權 MCP tools)
  • ✅ 跨船 dispatch subagent(scope-guarded)
  • ✅ 跨船 git pull / status 等唯讀 git 操作
  • ✅ 跨船讀取 log / ps aux / df 等診斷
  • ✅ 跨船 evaluate.sh 送審(read-only review)

🛡 安全架構與風險分析

⚠️ 風險影響緩解措施
SSH key 外洩跨船存取失控Tailscale ACL 限制連線來源 + ed25519 key rotation
MCP scope creepagent 越權讀寫遠端檔案dispatch-scope-guard.sh 白/黑名單 + CLAUDE_ALLOW_PATHS
跨船 quota 消耗Claude Max 額度燒爆同一 routing table,cheapest-first 路由
網路中斷SSH 連線失敗Cloud UB async fallback(L3 自動降級)
SS2 離線無法 dispatchCloud UB mailbox 暫存,SS2 上線後接續
指令注入惡意命令透過 SSH 執行wrapper script 參數驗證 + BatchMode 無互動

實作優先序

Phase 1 — 雙向 SSH

預估 30 min · 前置:SS2 Tailscale online + SSH key

  • 1. SS2 建 ss1-shell.sh(鏡像 ss2-shell.sh)
  • 2. SS2 建 ss1-claude-dispatch.sh
  • 3. SS2→SS1 SSH key 交換(ed25519)🔒
  • 4. 驗證:SS2 跑 ss1-shell.sh 'hostname'

交付:雙向 shell + agent 派工 + 檔案同步

Phase 2 — MCP-over-SSH

預估 1 hr · 前置:SS2 裝 Claude Code CLI 🔒

  • 1. SS2 安裝 Claude Code CLI 🔒
  • 2. SS1: claude mcp add ss2-cc
  • 3. 驗證:SS1 session 呼叫 SS2 工具
  • 4. 反向:SS2 掛 SS1 MCP server

交付:雙向 MCP 透明代理,全工具互通

Phase 3 — Skill 固化

預估 2 hr · 前置:Phase 1+2 驗證通過

  • 1. 建 cacoch-crossover skill
  • 2. 整合入 cacoch-selftest.sh
  • 3. 寫入 soul.md §4 交接鏈
  • 4. Cloud UB ingest 架構決策

交付:跨船能力成為 cacoch 底盤一部分