第一部分 · 认识项目  /  职责边界
01 第一部分 · 认识项目

职责边界

做什么、不做什么;与 CLI / 云 / SaaS 的分界。

阅读约 8 分钟 5 / 28 篇 源自 README.md · docs/hard-rules.md · SECURITY.md

为项目确定边界,其价值往往大于堆叠功能。明确产品「坚决不做什么」,是防止项目滑向失控复杂度的核心防线。

产品定位与产品宪法 C1–C5

Claude Chat Mobile 遵循明确的自托管产品宪法(见 docs/hard-rules.md):

C1

严格单用户 (n=1)

单实例单用户。通过鉴权的请求等价于物理坐在终端前的机主,不设立租户隔离或多账号概念。

C2

数据不出本机

模型 API Token、会话记录与开发源码绝不经过任何第三方托管平台或中心云中继。

C3

继承原生权限体系

完全复用本机 claude CLI 的已有配置(settings.json)与 MCP 规则,不发明并行的权限孤岛。

C4

单驾驶员防分叉

任意时刻同一会话只允许终端或 Web 之一持有写入锁,通过只读镜像与锁流转彻底杜绝数据分叉。

C5

终端行为等价性

CLI 有的功能 Web 端无缝对齐;CLI 放弃的复杂性 Web 坚决不自造轮子。

系统核心职责:做什么

  • 提供移动端原生友好的终端等价界面。实时流式输出渲染、Markdown 与代码语法高亮、工具调用过程卡片、用户确认提问(AskUserQuestion)交互。
  • 会话生命周期与双向同步。复用本机 CLI 的 Transcript 记录(~/.claude/projects/),支持 Web 端发起会话、继续历史会话(resume)、工作区切换与中断。
  • 安全闭环的人机权限审批。当 Agent 尝试执行白名单外的危险工具(如执行命令、写敏感文件)时,推送审批请求并在移动端提供一键同意/拒绝。
  • 本地工作区保护与安全浏览。在显式配置的 WORKDIRS 白名单内安全浏览、检索项目文件与查看 Git 变更,杜绝路径穿越。
  • 自托管基础设施服务。结构化配置管理、启动自检(doctor)、智能离线推送与跨设备已读状态同步。

明确不做的技术债清单

编号决议不做的方向架构理由与考量
AD-1多租户、RBAC 角色权限与按用户数据隔离违背 n=1 自托管核心。引入租户会严重破坏单用户与本机 CLI 的映射边界,带来数倍无收益复杂度。
AD-2云端托管代理或中心化 SaaS 服务代码和会话是用户核心隐私,架构设计上只允许直连或点对点隧道连接。
AD-3重新实现 Agent 状态机与 LLM 编排层直接依托官方 Agent SDK。自造 Agent 调度不仅极易滞后于官方演化,还会破坏工具执行契约。
AD-4开放免鉴权的网络数据端点即使是 /health/metrics 或静态状态检查,也一律过鉴权网关拦截,杜绝信息侧漏。
AD-5全端端到端加密(E2EE)离线推送推送仅作为唤醒信号;真实正文拉取依然走 WebSocket 双向受控通道,避免引入重型加密握手协议。
AD-6自造插件系统与动态运行包管理插件出仓库会导致静态类型与安全门禁体系全面失明,扩展统一使用 CLI 原生的 MCP 与 Skills。

与相邻系统的分工分界

flowchart LR subgraph Client["移动端 (手机 PWA)"] UI["聊天操作界面\n输入 · 审批 · 工作区切换"] end subgraph Edge["公网 / 隧道边缘"] CF["Cloudflare Tunnel / 反代\n负责传输加密与外网接入"] end subgraph CCM["Claude Chat Mobile 本地服务"] App["CCM Server\n鉴权 · 协议转发 · 镜像锁 · 状态同步"] end subgraph Native["本机环境与系统"] CLI["claude CLI & Agent SDK\n执行决策 · 权限判断 · 工具调用"] Disk["本地代码工作区 & ~/.claude\n项目源码 · 配置 · 会话记录"] end UI <-->|"HTTPS / WSS"| CF CF <--> CCM CCM <-->|"Agent SDK Stdio"| CLI CLI <--> Disk CCM -.->|"读元数据"| Disk
claude CLI
真实任务执行者,拥有工具执行与全局权限判定的最终决定权。
Cloudflare / 反代
外部网络打通与证书接入层,CCM 自身不负责动态管理 tunnel 守护进程。
Web Push / ntfy
仅提供异步通知唤醒功能,通道不可用不影响主流程的正常运转。