Personal Max · Single Owner · Single VPS

Claude Max 单服务器
安全运行手册

服务商负责首次安装、进程保活、线路切换与故障恢复;账号本人只在首次或登录过期时完成 Anthropic 官方授权。日常用户只聊天,不需要进入模型设置。

适用本人账号、本人服务器、本人亲自登录,只服务本人。
有风险但可控自定义 Channels 仍是研究预览,升级后接口可能变化。
禁止共享账号、收集 OAuth、服务商代登录、轮换消费账号或给多人调用。
版本:2026-07-17 · 请在每次大版本升级前复核 Anthropic 官方条款

一、先确认:什么情况下才能走 Max 客户端

下面四条要同时满足,少一条就改用 Claude 官方 API。

账号归属

Claude Max 账号、邮箱、二次验证和付款方式都属于实际使用者本人。

服务器控制权

VPS 是本人租用并控制;服务商不能保存、复制或代管 Claude 登录凭据。

用途

只让账号本人使用,不向其他顾客、家庭成员、团队成员或机器人池开放。

地区

账号本人和实际使用均应符合 Anthropic 支持地区政策;VPS 在新加坡不能替代这一条件。

不能承诺“零封号”。 Anthropic 可执行认证限制并可能不预先通知。这里能做的是让使用方式尽量接近官方定义的“普通个人使用”,同时准备合法 API 备用线路。

官方边界:Pro/Max OAuth 用于订阅者正常使用 Claude Code;开发者构建产品或代表用户路由请求应使用 API Key。详见 Claude Code Legal and complianceConsumer TermsSupported countries

二、推荐结构:凭据与聊天数据分层

Claude 登录只存在 Claude Code 的专用 Linux 用户目录;PWA、relay 和运营后台都不接触它。

手机 PWA本人发消息
不保存 Claude 凭据
私有 relay消息落库、媒体、SSE
唯一连接密钥
Companion Channel只拿 relay 密钥
游标补收断线消息
Claude Code本人 OAuth 登录
Max 套餐推理
备用线路:用户授权的 Claude 官方 API Key 单独保存在 provider loop;Max 不可用时由服务商从私有运营后台切换,不让用户进设置页,也不自动轮换消费账号。
语音不随模型切换:Claude Max 或 API 只生成回复文字;需要朗读时,relay 的 /app/tts 固定调用 MiniMax TTS。MiniMax 凭据和音色由服务商单独初始化,用户日常不用操作。
这套结构中的聊天“身份”属于 relay:聊天记录、角色设定和原始媒体不会因为 Claude Code 重启或切到 API 就消失。

三、首次安装:服务商主操作,用户只做一次官方授权

除 Anthropic 账号登录和二次验证外,安装、配置、启动、验收都由服务商完成。用户不接触 TidalEcho 设置页。

空服务器不能直接从 Max 开始:先在运营商 Mac 运行“开单一条龙”,看到“✅ 一条龙完成”,服务器里才会出现 /opt/tidal/customers/<客户ID>。命令中的尖括号是待替换文字,不是终端变量;粘贴后先改成真实值再回车。
先分清三个名字:demo001 是测试客户 ID;ubuntu 是运营商 SSH 进入客户所提供服务器时的用户;claude-max 是服务器内部运行 Claude Code 的专用 Linux 用户。它们都不是客户的 Claude 邮箱。
命令输入位置:ssh 在运营商自己的电脑终端输入;看到 ubuntu@...:~$ 后,sudosystemctl 才在客户服务器输入;claude auth loginclaude-max@...$ 的服务器终端输入;启动 claude 后,/status/mcp 才输入 Claude Code 界面;最终切换按钮在运营商私有后台点击。
不要接收客户账号密码:客户日常可以零操作,但首次或过期后的 Anthropic 官方授权必须由账号本人在自己的手机或电脑浏览器完成。即使不保存,运营商也不能代登录或接收密码、二次验证码、Cookie、OAuth token、登录码和回调。要求完全托管时请使用官方 API。
RELAY_ALLOW_DESKTOP_BRAIN=1 到底是什么:它只是客户 relay 的 Max 安全许可开关。0 表示无论谁连上 Channel 都不准接管;改成 1 后,也只是允许运营后台在客户端在线时切换。它不会安装、登录、连接或自动切换模型。
服务商先完成基础开单

在运营商 Mac 的“终端”运行 /Users/shibeibei/GetRich/TidalEcho/biz-kit/server/mac-开单一条龙.sh。只有出现“✅ 一条龙完成”后,才继续 Max。

服务商从自己的 Mac 登录客户服务器
ssh -i "/Users/shibeibei/GetRich/服务器信息/<客户ID>.pem" ubuntu@<客户服务器IP>

复制后把两个尖括号占位符换成真实值。看到 ubuntu@...:~$ 才是客户服务器窗口。

服务商运行 Max 无凭据准备脚本
sudo bash ~/deploy/bizkit/prepare-claude-max.sh demo001

demo001 换成真实客户 ID。脚本自动创建专用用户、安装 Claude Code 与 Bun、写 Channel/MCP/最小权限配置,并安装三个操作命令;不用手写 JSON,也不接收客户密码。

客户本人只做一次官方授权
sudo tidal-claude-login

这条命令在客户自己的服务器浏览器 SSH 中运行。客户本人按官方页面完成账号、二次验证和一次性 code;服务商不代填、不保存。

服务商选择模型
# 稳妥:跟随 Max 套餐当前默认
sudo tidal-claude-model default

# 需要固定 4.8,且该账号确实可用时
sudo tidal-claude-model claude-opus-4-8

若 4.8 未对该账号开放,立即运行 sudo tidal-claude-model default。Claude Code 的可用模型与套餐、客户端版本有关,不能靠脚本绕过。

服务商一条命令启动并检查 Channel
sudo tidal-claude-start start
sudo tidal-claude-start status

脚本自动创建或恢复 tidal-companion 会话并确认开发 Channel。只有状态中 plugin_subs 为 1 以上,才回私有运营后台切到 Claude Max。需要人工查看时运行 sudo tidal-claude-start attach

最小权限建议

为 Companion 使用独立工作目录,并在该目录的 .claude/settings.local.json 使用 dontAsk,只预批准 mcp__companion__replycallreact。不要用 --dangerously-skip-permissions 给聊天消息完整服务器控制权。权限规则以 Claude Code permissions 为准。

四、“聊天不断”的五层恢复

不是假装永不出错,而是每层出错后都有明确的续接点。

保存什么发生故障后
relay 数据库聊天记录、角色、媒体、消息 ID模型进程重启不影响用户看到的历史。
Channel 游标last_in_idSSE 自动重连,用 ?since=游标 补收断线消息,避免漏消息或重复回复。
Claude 会话本地 transcript 和上下文总从固定目录执行 claude --resume tidal-companion,恢复原会话而不是创建新人格。
进程看护运行状态与日志用用户级 systemd、tmux 或受控 expect 包装;异常退出后恢复同名会话并重新确认开发 Channel。
API 备用独立 API Key、最近 N 条 relay 历史Max 限额、登录失效或 Channel 兼容故障时,由服务商从运营后台切到 API,继续同一聊天记录。
注意会话差异:切换到 API 后,系统会用 relay 的角色和近期聊天重建上下文,但 Claude Code 内部未写入 relay 的隐藏工具状态不会自动复制。聊天内容连续,不等于两个运行时的内部状态完全相同。
仍有一个不能假装不存在的窗口:消息已交付 Claude Code、游标已经推进,但回复发出前进程正好崩溃,这一条不会被 SSE 自动重放。恢复同名会话后应核对 transcript 与手机最后一条;缺回复时只重发这一条,不能把游标批量回退。

常驻启动命令

sudo tidal-claude-start start
sudo tidal-claude-start status

官方说明 Channels 只有在会话打开时才收事件,所以必须运行在持续终端或后台进程中;重启时仍需再次带上 Channel flag。会话恢复规则见 Manage sessions,Channels 状态见 Channels

五、Max 用完或失效:走合法后路,不轮换账号

备用线路的目的是恢复服务,不是绕开 Max 的用量或执行措施。

情况正确处理不要做
Max 到达用量上限等待重置、本人决定是否启用官方 usage credits;需保持回复时由服务商切到已授权 API。让用户进设置页、换另一个消费账号、共享账号池、伪造新设备。
OAuth 将过期看到启动提醒后由本人提前运行 /login;用 /status 复核。让服务商索取 token 或复制 .credentials.json
401 / Login expired服务商先切 API 保持可回复;账号本人只完成官方重新登录;服务商验收 Channel 后切回。把 Cookie、回调 URL 或二维码贴到运营后台。
账号被限制立即停止 Max 线路、保留本地聊天、联系 Anthropic Support;需要服务时使用本人合法 API。自动切其他 Max 账号规避限制。
Channels 升级不兼容固定到已验证版本或修复插件;期间使用 API。反复重试造成重复消息或双模型同时回复。
API 备用和 Max 客户端必须遵守“单身体原则”:任一时刻只有一个 AI 线路消费消息。切换时先确认旧线路停止接收,再启用新线路,避免一条消息得到两份回复。

Max 的 Claude、Claude Code 等产品面共享用量;可通过 /status/usage 查看。官方处理选项见 Use Claude Code with Pro or Max

六、降低风控的日常规则

七、排障顺序

按顺序排,避免同时重启多个组件造成重复回复。

现象检查恢复
手机消息发出,无回复/relay/healthz、Claude 进程、Channel 日志、plugin_subs先保持单线路,再恢复 Claude 会话或临时切 API。
运营后台显示 Max 未连接Claude 是否从固定目录带开发 Channel flag 启动,/mcp 是否连接服务商恢复同名会话,重新确认开发 Channel,等待日志出现 stream connected
突然变成 API 计费/statusenv | grep ANTHROPIC移除 API 环境变量,重启终端,重新 /login
重启后像失忆启动目录、会话名、是否误用了新会话回固定目录执行 claude --resume tidal-companion
收到两份回复Max Channel 和 API loop 是否同时消费同一消息服务商立即停一个,只保留运营后台当前启用的线路。
登录失效/status 的 Login 行本人运行 /login;服务商不能代办。

交付前验收

官方资料