把「安装本体、对接代理网关、注入令牌、三级自检、失败回滚」收成一条命令。面向不需要也不应该手写 ~/.claude/settings.json 的使用者。
one-click-deploy-claude-code/
├── README.md 使用说明与边界声明
├── SKILL.md 技能定义:触发词 / 平台矩阵 / 六阶段流程 / 故障对照
└── scripts/
├── deploy.ps1 Windows 执行器(PowerShell 7)
└── deploy.sh macOS / Linux 执行器(bash)
官方文档已把安装降到一行命令,真正的门槛在装完之后:配置文件在哪个路径、JSON 语法怎么写、密钥该落在哪、怎么自证成功、坏了怎么退。本包把这段补齐。
系统版本、包管理器、Node 来源、已有安装、配置合法性、网关可达性,出厂前先体检。
Windows 走 winget,macOS 走 install.sh 或 brew,npm 仅作降级并显式警示失效风险。
建目录、备份原文件、只 patch env 块、JSON 复核、无 BOM 写回,不覆盖用户已有键。
先探活再写入;落在用户级环境变量而非配置文件,因此 settings.json 可安全备份与分享。
L1 版本、L2 网关探针、L3 真实会话。L2 通过不等于 L3 通过,缺一层就等于没验证。
还原最近备份、清环境变量、保留用户数据;每次执行生成 Markdown 体检报告留证。
# 只诊断,不改任何东西 pwsh -File scripts\deploy.ps1 -Action probe # 安装 + 配置 + 注入 + 自检 pwsh -File scripts\deploy.ps1 -Action all ` -BaseUrl https://api.openai-next.com ` -TokenFile .\token.txt # 配置坏了,只重写配置 pwsh -File scripts\deploy.ps1 -Action configure # 卸载并还原 pwsh -File scripts\deploy.ps1 -Action uninstall
# 只诊断 bash scripts/deploy.sh probe # 全流程 bash scripts/deploy.sh all \ --base-url https://api.openai-next.com \ --token-file ./token.txt # 只自检 bash scripts/deploy.sh verify # 卸载并还原 bash scripts/deploy.sh uninstall
| 项目 | 普遍说法 | 本包在 Windows 10 18362 / PowerShell 7.6.4 实测 |
|---|---|---|
| 安装方式 | irm https://claude.ai/install.ps1 | iex |
该地址返回 HTTP 200、307,909 字节,但首字节是 <!DOCTYPE html>,是落地页而非脚本,管道执行会语法失败。脚本内置首内容校验,命中 HTML 即中止,改走包管理器。 |
| Windows 首选路径 | 只能用 WSL 或 npm | winget install --id Anthropic.ClaudeCode 有正式包(2.1.318),可静默无人值守安装,是当前网络条件下唯一可靠路径。 |
| Node 可用性 | 有 node 就能 npm 装 | 本机 node -v 为 v22.23.2 满足要求,但其路径位于沙箱运行时目录,重建即失效,npm 装出的 CLI 会跟着消失。故 npm 仅降级使用。 |
令牌只通过 -TokenFile 或环境变量传入,最终落在用户级环境变量。配置文件内只保留 ANTHROPIC_BASE_URL 与三个功能开关,因此可以随意备份、截图、交付他人审阅。
注入前先用该令牌请求网关 /v1/models,返回 2xx 才继续,401/403 直接中止并说明原因,避免把无效凭证固化进环境导致后续排查困难。
只做 env 块的最小 patch,其他键原样保留,改动前自动备份为 settings.json.bak-<时间戳>;原文件 JSON 非法时拒绝写入而非强行覆盖。
发布包经过脱敏处理,不含任何密钥、内部路径或私有地址。若你的分发渠道要求更高,可只取 scripts 目录内的执行器自用。
| 环节 | 状态 | 说明 |
|---|---|---|
| probe 环境探测 | 已实测 | 0 失败 3 警告,完整输出环境画像与网关状态判断 |
| configure 配置写入 | 已实测 | 写出 env 四键、无 BOM、JSON 复核通过、不含令牌 |
| 幂等与不覆盖 | 已实测 | 预置两个自定义键后重跑,两键均保留、目标键正确改写、仅增一份备份 |
| report 体检报告 | 已实测 | 生成 Markdown 报告,逐项列出结果与回退方式 |
| install 安装本体 | 未执行 | 在无可用令牌的环境下不装入无法使用的本体,避免留下半成品 |
| verify L1 / L2 / L3 | 未执行 | 同上,阻塞于缺少可在目标网关通过校验的令牌 |
| macOS / Linux 执行器 | 未实机验证 | deploy.sh 与 ps1 功能对齐,但未在真机跑通全流程 |
| 现象 | 原因 | 处置 |
|---|---|---|
装完敲 claude 提示找不到命令 | PATH 未刷新或安装落在非系统级目录 | 重开终端;Windows 用 winget 路径重装而非 npm |
| 报 401 / Invalid token | 令牌对网关无效,或写到了错误变量 | 先跑 probe 看网关探针,再核对 ANTHROPIC_AUTH_TOKEN |
| 配置改了但行为没变 | 改的是项目级 settings.local.json,被覆盖 | 改用户级 settings.json,或确认项目级优先级 |
| 配置文件被写坏 | 手工编辑漏了逗号或括号 | 用 settings.json.bak-* 还原,再跑 configure 重写 |
| 装上了但沙箱重建后消失 | Node 位于沙箱运行时目录,npm 全局包随之丢失 | 改用 winget 系统级安装 |