AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
远程掌控 PC 端 Claude Code:会话速览、权限审批、任务通知。多端可用、云桥可自建、端到端加密。
Translation pending
Developer toolsJavaScript · TypeScriptGitHub @humumu130OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Claude Code's portable workbench: mobile / watch / web / desktop four‑end remote control (approval, injection, interruption, model switching), also a workflow‑enhancement layer—stronger task management (completion push, scheduled tasks), insert Q&A, structured transcription. Build your own cloud bridge, end‑to‑end encryption, a single protocol across four ends.
AI translation
Claude Code 的随身工作台:手机 / 手表 / 网页 / 桌面四端远程操控(审批、注入、打断、切模型),更是工作流增强层——更强的任务管理(完成推送、定时任务)、插入问答、结构化转录。自建云桥、端到端加密、一套协议四端同构。
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
在手机上使用 PC 端的 Claude Code:查看会话状态、批准权限、发送消息、切换模型、接收任务汇报;电脑断网重启会话不丢,手机点一下即可远程恢复。默认自建 relay,局域网内不经过任何第三方服务;跨网经可自建的 Cloudflare 中继,端到端加密。 • 多会话实时同步,四态徽标(运行中 / 等待输入 / 出错 / 完成),断线自动补发 • 权限审批推到手机点 Allow / Reject;AskUserQuestion 提问远程点选;随时打断 • 给会话发消息、传图片与文件(App 支持语音输入,桌面 / 网页可粘贴或拖入),会话产出的文件可拉回查看 / 保存;历史会话可续聊 • 消息即发即达:点发送立刻送达电脑(排队回显即时,注入后自动校验、回车被吞秒级补发) • 模型远程切换:下拉即切当前会话模型(注入 CLI 原生 /model),ctx 水位行内嵌当前模型,App / 网页 / 桌面三端一致 • 电脑死机 / 重启 / 意外断开,手机会话卡片保留不丢:点一下发消息,电脑自动原地恢复原会话(权限模式原样镜像,无人值守也不卡确认) • 电脑端正常退出的会话自动从手机列表清除,列表里留下的都是真正能用的会话 • Wi-Fi 中断数秒内自动切云桥保持可用,网络恢复后自动切回更快的直连;LAN 探测失败进入短冷却,不再拖慢切换Read the full README ↗
跑长任务离开电脑,回来发现 Claude Code 卡在等审批? CC Deck 把会话、任务与审批装进手机——点一下 Allow,它继续跑。
局域网直连不经任何第三方,跨网中继端到端加密,可自建(Cloudflare / 自有服务器)。 电脑断网、重启,会话不丢——在手机上点一下即可恢复。
下载最新版 · 直链下载页 · 网页控制台(需先完成快速开始)
#NNN 任务号点击速览,代码块语法高亮随身掌控
一屏全览(桌面端 · 在电脑前使用同样顺手)
断线不怕
替你盯着
多源多端
细节到位
| 能力 | 📱 手机 App | ⌚ 手表 | 🌐 网页 / PWA | 🖥️ 桌面客户端 |
|---|---|---|---|---|
| 会话列表 · 四态速览 | ✅ | ✅ 抬腕速览 | ✅ | ✅ 同网页 |
| 远程审批 · Ask 作答 | ✅ | ✅ 允许 / 拒绝 / 点选 | ✅ | ✅ |
| 发消息 · 图片 · 文件 | ✅ 语音 + 相册 + 文件 | — | ✅ 粘贴 / 拖入 | ✅ 粘贴 / 拖入 |
| 模型远程切换 | ✅ 水位行下拉 | — | ✅ | ✅ |
| 打断 / 停止 / 删除 | ✅ | ✅ 停止 | ✅ 删除带撤销 | ✅ |
| 任务清单 + 完成汇报 | ✅ 通知 | ✅ 轻震直达 | ✅ | ✅ |
| 子 Agent 活性面板 | ✅ 角标 + 面板 | — | ✅ | ✅ |
| 输出物看板(文档 / 报告) | ✅ 查看 + 打开 | — | ✅ | ✅ 查看 + 下载 |
| 上下文水位 / 定时任务 | ✅ | ✅ ctx 百分比 | ✅ | ✅ |
| 转录时间线 | ✅ 全量 | ✅ 压缩版 | ✅ 全量 | ✅ |
| 多源聚合(默认关) | ✅ | — 跟随手机 | ✅ | ✅ |
| 历史会话恢复 / 续聊 | ✅ | — | ✅ | ✅ |
PC 端两种装法,选一种即可(也可以都用:桌面端检测到插件已在运行会自动让位,互不冲突)。
claude plugin marketplace add humumu130/cc-deck
claude plugin install cc-deck@cc-deck-plugins
装好重启 Claude Code,在任意会话里执行 /cc-deck:后台启动本机控制服务 relay(电脑端常驻,手机 / 网页 / 桌面都连它),终端打出三张二维码(App 下载 / App 直连 / 网页控制台)。你自己新开的 Claude Code 会话自动接入;已运行的会话重开后接入。数据存于 ~/.cc-deck/data/,升级插件不影响已有数据。
配套命令:/cc-deck-pair 领 8 位云桥配对码(5 分钟内有效、一次性),/cc-deck-stop 停止后台 relay。
从 Releases 下载桌面端:
CC.Deck_<v>_x64-setup.exe(未签名 exe 首次运行触发 SmartScreen,选「更多信息 → 仍要运行」).dmg启动即自动带起内置 relay,在设置里领配对码或扫码,手机 / 网页即连;桌面里新建的会话全功能可用。
💡 装法 B 下,你自己开的终端 CLI 会话不会自动接入(内置 relay 不装 hooks)——需要桥接终端会话请再装装法 A 的插件,两者共存无冲突。
场景 A · 同一网络(局域网)
127.0.0.1:8787),无需配置即连;其他设备打开 http://<PC-IP>:8787/?token=…场景 B · 跨网络(外出 / 异地)
cd relay && npm install && npm run dev;要接入自己开的 CLI 会话再执行 node scripts/install-hooks.mjs;领配对码 npx tsx src/index.ts --pairwear-app/ 构建安装。经手机蓝牙 RFCOMM 中继零配置接入(手表免联网、免录入,无 GMS 设备可用);也支持 WS 直连 relay,或在手表设置粘贴云桥地址远程使用→:同网直连(同一局域网 / 本机),token 鉴权,仅限可信局域网⇒:跨网云通道,端到端密文——桥只按公钥派生的设备 id 路由,无法解密、不落盘;手表外出时直连云桥 /wan 端点透传,网页被拦自动降级 HTTP 长轮询data/token 重启或设 CCR_TOKEN把任意脚本 / cron / CI 的消息推到手机与网页的悬浮框。LAN token 鉴权;不指定 session_id 时自动投递给当前运行的会话(无则最新外部会话)。
# 绿色「任务完成」悬浮框(done 最多 10 条)
curl -X POST "http://127.0.0.1:8787/api/notify?token=<TOKEN>" \
-H "content-type: application/json" \
-d '{"done":["部署完成","冒烟全绿"]}'
# 黄色「待确认」悬浮框(text ≤120 字,点按直达会话)
curl -X POST "http://127.0.0.1:8787/api/notify?token=<TOKEN>" \
-H "content-type: application/json" \
-d '{"mode":"confirm","text":"发布包已就绪,等你确认"}'
| 变量 | 默认 | 说明 |
|---|---|---|
CCR_PORT | 8787 | 监听端口 |
CCR_TOKEN | data/token 文件 | 鉴权 token;设环境变量(≥8 位)可覆盖 |
CCR_CWD | 上次会话目录(无则主目录) | 托管新建会话的缺省工作目录 |
CCR_MODEL | ANTHROPIC_DEFAULT_SONNET_MODEL | 托管会话模型;不用默认值时请显式指定 |
CCR_DEBUG | – | 打印 CLI stderr 与工具原始结构 |
CCR_GATE_TOOLS | Bash,Edit,Write,NotebookEdit,WebFetch,WebSearch | 远程审批门控的工具名 |
CCR_BRIDGE_TOKEN | data/bridge-token 文件 | hooks 回连 relay 的桥接令牌 |
CCR_DATA_DIR | 插件 ~/.cc-deck/data / 开发 relay/data | 数据目录 |
CCR_CLOUD_URL | wss://cc.humumu.online/cloud | 云桥地址,逗号分隔可多桥;空串禁用 |
CCR_CLOUD_TOKEN | ccdeck-public-9f3k2m7v | 云桥层连接 token(自建桥换自己的) |
云桥是无状态密文路由:客户端帧 {to, data} 按设备 id 点对点转发,无持久化无缓冲。
| 形态 | 目录 | 适合 |
|---|---|---|
| Node + ws(Docker 就绪) | cloud-bridge/ | 有 VPS / 内网服务器 |
| Cloudflare Worker + Durable Object | cloudflare/ | 不想维护服务器,空闲不计费 |
# Cloudflare Worker(4 条命令)
cd cloudflare
npx wrangler login
npx wrangler secret put CLOUD_TOKEN # 设 ≥8 位随机串
# 编辑 wrangler.toml:改 name,routes 换成自己的域名(或删掉用默认 workers.dev)
npx wrangler deploy
# Node / Docker
docker build -t cc-cloud-bridge ./cloud-bridge
docker run -d -p 8790:8790 -e CLOUD_TOKEN=<8位以上随机串> cc-cloud-bridge
部署后 relay 侧设 CCR_CLOUD_URL 与 CCR_CLOUD_TOKEN 指向它,手机重新配对一次。
# relay(Node ≥ 20)
cd relay && npm install
npm run dev # 前台跑 relay
npm run test:bus # EventBus seq / 环形缓冲 / 断线补发
npm run test:sessions # 双会话并发全生命周期
npm run test:ws # WS 鉴权 / 快照 / 补发 / 幂等
npm run test:history # 历史持久化与重启恢复
npm run test:bridge # hooks 桥接外部会话 / 远程审批 / 超时
npm run test:cloud # 云通道端到端
npx tsx scripts/smoke-e2e.ts <token> # 浏览器等价全流程
# 手机端(Expo 57 / React Native 0.86)
cd expo-app && npm install && npx expo run:android
# 手表端(Kotlin + wear-compose)
cd wear-app && ./gradlew assembleDebug
# 桌面客户端
cd desktop && npm install && npm run dist # Electron
cd desktop-tauri && npx tauri build # Tauri
# 从源码重建插件
cd relay && node scripts/build-plugin.mjs
仓库布局:relay/(核心,协议唯一定义源 relay/src/types.ts)、web-console/(网页控制台)、expo-app/(Android 手机端 + 手表网关)、wear-app/(Wear OS 手表端)、desktop-tauri/(桌面客户端)与 desktop/(Electron,过渡期保留)、cloud-bridge/ 与 cloudflare/(云桥双形态)、mobile/(APK 分发页)、cc-plugins/(Claude Code 插件成品)、docs/(架构文档)。
CI:relay · android · desktop。版本号与发版流程见 CONTRIBUTING.md。
flowchart TB
YOU["👤 你"]
subgraph ORGBOX["🏛 常驻组织 · org 目录"]
direction TB
LEADER["🧭 Leader · 唯一<br/>分诊 · 立项 · 汇总 · 不进项目干活"]
BOOKS["📚 两本账<br/>组织记忆(经验 · 慢涨)<br/>派单台账(状态 · append-only)"]
ROUTE["🔀 路由表 · 熟手池<br/>亲和调度(M3)"]
LEADER ---|"读档恢复 / 先落账"| BOOKS
LEADER -.->|"查熟手"| ROUTE
end
subgraph PG["🧪 动态项目组 × N · cwd 物理隔离"]
direction TB
PJA["项目组 A · 在办<br/>编制 + worktree + 任务板"]
PJB["项目组 B · 挂起<br/>冻结任务板 · 成员退休"]
end
CASUAL["💬 普通会话<br/>逃生舱 · 不经组织"]
PERSONAL["✍️ 个人层记忆<br/>全局 CLAUDE.md · 你手写"]
YOU ==>|"一句话需求<br/>单线沟通"| LEADER
LEADER -->|"派单 · cwd=项目锚点"| PJA
LEADER -.->|"挂起 · 静默"| PJB
PJA -.->|"结项 · 经验回流(提案确认)"| BOOKS
YOU -.->|"直达"| CASUAL
CASUAL -.->|"随时可移交"| LEADER
YOU -.-|"手写 · 跨一切生效"| PERSONAL
⇒:核心通道(单线沟通);虚线 ⇢:弱关联(逃生舱 / 挂起 / 回流提案)MIT © humumu130