{"id":"e696352b-9a0f-4371-b0d3-548e1d4f18d0","entityType":"agent","slug":"clawhub-bao2200220-claude-code-allinone","name":"Claude Code All-in-One for arkclaw","canonicalUrl":"https://www.xpersona.co/agent/clawhub-bao2200220-claude-code-allinone","canonicalPath":"/agent/clawhub-bao2200220-claude-code-allinone","generatedAt":"2026-10-12T19:01:07.251Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:36:47.275Z","emptyReason":null},"description":"ArkClaw / OpenClaw 沙箱里一键安装并配置 Anthropic Claude Code CLI 的 all-in-one skill。当用户提到 claude code、claude-code、想在 ArkClaw 里用 Anthropic 官方 Coding CLI、提到 ark-code-la...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 975 downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17e1c4k97x70sf7n28e3fmaqd83qqt6:claude-code-allinone","sourceUrl":"https://clawhub.ai/bao2200220/claude-code-allinone","homepage":"https://clawhub.ai/bao2200220/skills/claude-code-allinone","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/bao2200220/claude-code-allinone","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/bao2200220/skills/claude-code-allinone","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Claude Code All-in-One for arkclaw technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:36:47.275Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:36:47.275Z","emptyReason":null},"stars":null,"forks":null,"downloads":975,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.1","tractionLabel":"975 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:36:47.262Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T23:36:47.275Z","lastCrawledAt":"2026-10-11T23:36:47.262Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T23:36:47.262Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.1","createdAt":"2026-05-17T13:49:58.513Z","changelog":"### v1.0.1 - 增加 profiles/codingplan.json 支持 Coding Plan 配置，完善多模型套餐自动检测与模式切换能力。 - 新增 scripts/setup-codingplan.sh，支持 Coding Plan 的零感知自动配置及回退（自动 fallback）机制。 - doctor.sh 输出字段扩展，明确标识 ark_agent_plan/ark_coding_plan/ark_api_key_set 等沙箱环境变量检测状态。 - 安装/激活流程升级：首次配置时优先零感知从环境自动读取套餐与 Key，不再总是询问用户粘贴 Key。 - 配置流程内置多套餐自动优先级与回退逻辑，充分利用沙箱环境管理端点。 - SKILL.md 文档大幅补充，详细说明“零感知优先”与多套餐检测与切换流程。","fileCount":19,"zipByteSize":39548},{"version":"1.0.0","createdAt":"2026-05-16T21:52:22.390Z","changelog":"v1.0.0 - 初版发布 - review / build 双模式智能路由:review 走 --permission-mode plan(只读),build 走 --allowedTools 白名单 - 双 provider 支持:火山方舟 AgentPlan(ark-code-latest) + 自定义 Anthropic 兼容网关 - 110s 防挂死三件套:nohup setsid + </dev/null + log file + PID 轮询超时 - doctor.sh 环境体检 + ensure-onboarding.sh 幂等修复 - 完整 troubleshooting 文档(15 条踩坑处方) - 默认 AgentPlan,无感配置:首次配置只问一次 Key,不再列 A/B 菜单 - 仅当用户主动提及\"自定义网关 / 自己的 base_url / claude-code-router / Bedrock / Vertex\"等关键词时,才触发 custom 分支 - 更新 SKILL.md / routing-flow.md / providers.md 的引导话术,明确禁止主动展示菜单","fileCount":16,"zipByteSize":30992}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17e1c4k97x70sf7n28e3fmaqd83qqt6:claude-code-allinone","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17e1c4k97x70sf7n28e3fmaqd83qqt6:claude-code-allinone` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/bao2200220/claude-code-allinone before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-12T19:01:07.250Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-bao2200220-claude-code-allinone/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:36:47.275Z","emptyReason":null},"readme":"Skill: Claude Code All-in-One for arkclaw\n\nOwner: bao2200220\n\nSummary: ArkClaw / OpenClaw 沙箱里一键安装并配置 Anthropic Claude Code CLI 的 all-in-one skill。当用户提到 claude code、claude-code、想在 ArkClaw 里用 Anthropic 官方 Coding CLI、提到 ark-code-la...\n\nTags: agentplan:1.0.0, anthropic:1.0.0, ark:1.0.0, arkclaw:1.0.0, claude-code:1.0.0, cli:1.0.0, code-review:1.0.0, coding:1.0.0, latest:1.0.1, openclaw:1.0.0\n\nVersion history:\n\nv1.0.1 | 2026-05-17T13:49:58.513Z | user\n\n### v1.0.1\n\n- 增加 profiles/codingplan.json 支持 Coding Plan 配置，完善多模型套餐自动检测与模式切换能力。\n- 新增 scripts/setup-codingplan.sh，支持 Coding Plan 的零感知自动配置及回退（自动 fallback）机制。\n- doctor.sh 输出字段扩展，明确标识 ark_agent_plan/ark_coding_plan/ark_api_key_set 等沙箱环境变量检测状态。\n- 安装/激活流程升级：首次配置时优先零感知从环境自动读取套餐与 Key，不再总是询问用户粘贴 Key。\n- 配置流程内置多套餐自动优先级与回退逻辑，充分利用沙箱环境管理端点。\n- SKILL.md 文档大幅补充，详细说明“零感知优先”与多套餐检测与切换流程。\n\nv1.0.0 | 2026-05-16T21:52:22.390Z | user\n\nv1.0.0\n- 初版发布\n- review / build 双模式智能路由:review 走 --permission-mode plan(只读),build 走 --allowedTools 白名单\n- 双 provider 支持:火山方舟 AgentPlan(ark-code-latest) + 自定义 Anthropic 兼容网关\n- 110s 防挂死三件套:nohup setsid + </dev/null + log file + PID 轮询超时\n- doctor.sh 环境体检 + ensure-onboarding.sh 幂等修复 \n- 完整 troubleshooting 文档(15 条踩坑处方)\n- 默认 AgentPlan,无感配置:首次配置只问一次 Key,不再列 A/B 菜单\n- 仅当用户主动提及\"自定义网关 / 自己的 base_url / claude-code-router / Bedrock / Vertex\"等关键词时,才触发 custom 分支\n- 更新 SKILL.md / routing-flow.md / providers.md 的引导话术,明确禁止主动展示菜单\n\nArchive index:\n\nArchive v1.0.1: 19 files, 39548 bytes\n\nFiles: profiles/agentplan.json (420b), profiles/codingplan.json (422b), profiles/custom.json (378b), references/providers.md (5178b), references/routing-flow.md (5723b), references/troubleshooting.md (5803b), scripts/doctor.sh (5930b), scripts/ensure-onboarding.sh (517b), scripts/health-check.sh (5003b), scripts/helpers.sh (7063b), scripts/install.sh (2120b), scripts/run.sh (4675b), scripts/setup-agentplan.sh (7237b), scripts/setup-codingplan.sh (5498b), scripts/setup-custom.sh (4789b), scripts/switch-profile.sh (3252b), skill-card.md (2388b), SKILL.md (17118b), _meta.json (139b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: claude-code-allinone\ndescription: ArkClaw / OpenClaw 沙箱里一键安装并配置 Anthropic Claude Code CLI 的 all-in-one skill。当用户提到 claude code、claude-code、想在 ArkClaw 里用 Anthropic 官方 Coding CLI、提到 ark-code-latest / 火山方舟 AgentPlan 接 claude code、想切换 claude code 的模型供应商、需要做代码 review / 代码改写、或者说\"我没有 Anthropic 官方 API Key 但想用 claude code\"时,使用本 skill。\nlicense: MIT\n---\n\n# Claude Code All-in-One for ArkClaw\n\n让 ArkClaw / OpenClaw 用户在**对话框里**完成 Claude Code CLI 的全部配置 — 不用打开终端、不用手写 `~/.claude/settings.json`、不用记 base_url。本 skill 还内置 **review / build 双模式智能路由**:\n\n- **review 模式**(`--permission-mode plan`):只读分析,不改文件,适合代码审查 / 评估改造方案\n- **build 模式**(`--allowedTools` 白名单):允许 Read / Edit / Write / Bash 等动手工具,适合实现代码\n\n---\n\n## 整体流程(决策树)\n\n```\n用户触发本 skill(说\"用 claude code 帮我...\" / \"/claude-code-allinone ...\" / 报错 等)\n        │\n        ▼\n  ┌───────────────────────────┐\n  │ 运行 scripts/doctor.sh    │  ← 每次触发都会运行,检测当前环境状态\n  └─────────────┬─────────────┘\n                │\n       当前配置状态 = ?\n                │\n  ┌─────────────┼──────────────────────────────────┐\n  │             │                                  │\n\"全新环境\"    \"本 skill 配过\"                   \"用户手动配过\"\n(从未配置)   (之前用本 skill 配置的)          (有 settings.json/config 但不是本 skill 写的)\n  │             │                                  │\n  ▼             ▼                                  ▼\n路径 ①        路径 ②                             路径 ③\n首次配置      正常使用(绝大多数情况)              兼容性检查\n  │             │                                  │\n  │             │                                  ├─ 检查通过 → 保留不动,转到路径 ②\n  │             │                                  └─ 检查不通过 → 告知用户具体问题,\n  │             │                                       询问是否用本 skill 重新配置\n  │             │\n问用户选择   智能判定 review/build 模式\nA/B 菜单     然后执行: claude -p \"用户的需求\" --permission-mode plan\n  │              或:    claude -p \"用户的需求\" --allowedTools <白名单>\n  ▼\n完成配置后\n转到路径 ②\n```\n\n### 三条路径说明\n\n| 路径 | 什么时候走 | 用户需要做什么 |\n|---|---|---|\n| ① 首次配置 | 环境里从未配过 claude code,或用户主动要求重新配置 | **默认直接走 AgentPlan**,优先尝试自动从 ArkClaw 沙箱环境变量(`ARK_AGENT_PLAN` / `ARK_CODING_PLAN` / `ARK_API_KEY`)零感知配好;失败再让用户粘贴一次 Key。**用户主动说\"我有自己的 Anthropic 兼容网关 / 别的 base_url / 自定义模型\"时才走 custom 分支** |\n| ② 正常使用 | 已经配好了(本 skill 配的,或用户自配且体检通过) | **什么都不用做**,直接说编程需求即可 |\n| ③ 兼容性检查 | 用户手动写过 settings.json,本 skill 首次遇到 | 如果检查通过:无需操作;如果不通过:选择重配或自己修 |\n\n---\n\n## 重要:正常使用时不要打扰用户\n\n当配置已经就绪(路径 ②)时,**不允许**:\n\n- 复述配置流程\n- 解释 skill 在做什么\n- 询问\"是否需要切换 / 是否需要重新配置\"\n- 把 skill 的存在感暴露给用户\n\n**只做**:\n1. 运行 `bash scripts/ensure-onboarding.sh`(确保 `~/.claude.json` 标记 onboarding 完成)\n2. 调用 `bash scripts/run.sh \"用户的完整需求原文\"`(自动判定 review / build 模式)\n3. 把 claude code 的输出原样返回给用户\n\n**用户体验**应该等同于\"直接跟 claude code 对话\",完全感觉不到 skill 的存在。\n\n只有这三种情况允许打扰用户:\n1. 首次配置(环境全新)\n2. 兼容性检查不通过,且无法自动修复\n3. 用户主动说\"切换 / 换一家 / 切到 X\"\n\n---\n\n## 触发方式\n\n- **自然语言**:\"用 claude code 帮我重构 utils.py\" / \"claude code review 一下这个 PR\"\n- **显式命令**:`/claude-code-allinone <你的编程需求>`(强制走本 skill)\n- **报错触发**:用户贴出 `command not found: claude` / `Onboarding has not been completed` / `ANTHROPIC_AUTH_TOKEN is not set` 等\n\n---\n\n## 详细流程\n\n### Step 0 — 运行 doctor.sh 检测环境\n\n每次触发都先运行 `bash scripts/doctor.sh`,它会输出一个 JSON,包含:\n\n```json\n{\n  \"claude_installed\": true,\n  \"claude_version\": \"2.1.143\",\n  \"claude_outdated\": false,\n  \"config_state\": \"clean | managed-by-skill | user-managed\",\n  \"active_profile\": \"agentplan | custom | null\",\n  \"user_settings_summary\": {\"base_url\": \"...\", \"model\": \"...\"} | null,\n  \"user_health\": {\"is_healthy\": true/false, \"checks\": [...], \"issues\": [...]} | null,\n  \"onboarding_complete\": true,\n  \"ark_api_key_set\": true,\n  \"custom_api_key_set\": false,\n  \"ark_managed_env\": true,\n  \"ark_agent_plan\": true,\n  \"ark_coding_plan\": false,\n  \"ark_api_key_managed\": true,\n  \"ark_model_id\": \"ark-code-latest\",\n  \"issues\": []\n}\n```\n\n根据 `config_state` 决定走哪条路径。\n\n### Step 1 — 安装 / 升级 Claude Code CLI(仅首次需要)\n\n`scripts/install.sh` 的行为:\n\n| 当前状态 | 行为 |\n|---|---|\n| 未安装 claude | 通过 npm 安装 `@anthropic-ai/claude-code@latest` |\n| 版本低于 2.1.0 | 升级到最新 |\n| 已是最新版 | 跳过,不做任何事 |\n\n### Step 2 — 配置模型服务(仅路径 ① 触发)\n\n**默认行为:不问选项,直接走 AgentPlan**\n\n减少用户感知是核心原则。**不要主动给用户列 A/B 菜单**。除非用户主动说\"我有自己的 Anthropic 兼容网关 / 自定义 base_url / 别的模型 Key\",否则一律默认进入 AgentPlan 配置流程。\n\n#### 零感知首选:扫环境变量自动配好\n\nArkClaw / OpenClaw 沙箱会**自动注入**当前账号的套餐和 Key 信息,本 skill 应**优先利用这些变量做零感知配置**,避免让用户再粘贴一次 Key。\n\ndoctor.sh 输出会包含:\n\n```json\n{\n  \"ark_managed_env\": true,\n  \"ark_agent_plan\": true,\n  \"ark_coding_plan\": false,\n  \"ark_api_key_set\": true,\n  \"ark_api_key_managed\": true,\n  \"ark_model_id\": \"ark-code-latest\"\n}\n```\n\n| `ark_managed_env` | 套餐标识 | `ark_api_key_set` | 应执行的动作 |\n|---|---|---|---|\n| true | `ark_agent_plan=true` 且 `ark_coding_plan!=true` | true | **零感知配置 (AgentPlan)**:直接 `bash scripts/setup-agentplan.sh --auto`,**完全不要询问用户** |\n| true | `ark_coding_plan=true` 且 `ark_agent_plan!=true` | true | **零感知配置 (Coding Plan)**:直接 `bash scripts/setup-codingplan.sh --auto`。⚠️ 注意 **Coding Plan 与 AgentPlan 是两套不同套餐**,Key 互不通用,base_url 也不一样(coding vs plan),**绝不能套用 AgentPlan profile** |\n| true | **两个都为 true(双开)** | true | **优先 AgentPlan**:直接 `bash scripts/setup-agentplan.sh --auto`。脚本内置预校验,若 AgentPlan Key 401 会**自动 fallback** 到 `setup-codingplan.sh --auto --from-fallback`,**全程零感知,不需要询问用户** |\n| true | 两个都没标 | true | 默认 `bash scripts/setup-agentplan.sh --auto`(并打印一条 warning,401 时再切 codingplan) |\n| false 或 `ark_api_key_set=false` | — | — | 走\"传统首次配置\":告知用户使用 AgentPlan,引导粘贴一次 Key |\n\n> 实现细节:`setup-agentplan.sh --auto` 内部带**三层防护**:(1) 本地格式自检挡掉粘错的输入;(2) 调用 `/models` endpoint 做活性 ping(不消耗推理 token,3 次重试,仅 401/403 视为失败);(3) AgentPlan 401 且 `ARK_CODING_PLAN=true` 时自动 `exec` 转发到 `setup-codingplan.sh --auto --from-fallback`。所以即使 skill 选错或双开账号 AgentPlan Key 失效,都不会真的把错 Key 写进 profile。\n\n#### 传统首次配置(仅在零感知不可用时触发)\n\n向用户输出:\n\n```\n准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。\n\n请粘贴 AgentPlan 控制台分配的专属 Key:\n```\n\n拿到 Key 后立即跑:\n```bash\nbash scripts/setup-agentplan.sh \"$KEY\"\n```\n\n#### 何时走自定义网关分支?\n\n只有以下情况才询问/触发 custom 流程,**不要主动给用户列菜单**:\n\n- 用户**主动**说:\"我有自己的 Anthropic 网关\" / \"用我们公司的 base_url\" / \"我有 claude-code-router\" / \"用 Bedrock / Vertex 转出来的端点\"\n- 用户**主动**给出 base_url + Key + model 三件套\n- 用户**主动**说\"我没有 AgentPlan Key,但我有别的 Anthropic 兼容端点\"\n\n触发后引导用户依次给出 3 个信息,然后跑:\n```bash\nbash scripts/setup-custom.sh \"$BASE_URL\" \"$KEY\" \"$MODEL\"\n```\n\n> ⛔ **不允许**在用户没提\"自定义/别的网关/我的 Key\"等关键词时,主动展示 A/B 菜单或让用户做选择。这会增加感知,违背\"默认 AgentPlan + 零感知优先\"原则。\n\n配置脚本会自动完成:写 Key → 写 settings.json → 写 `~/.claude.json` 的 `hasCompletedOnboarding: true` → `.token` 文件落盘。如果用户已有 `settings.json`,会**先备份**再覆盖。\n\n### Step 3 — 兼容性检查(仅路径 ③ 触发)\n\n当 doctor.sh 返回 `config_state == \"user-managed\"` 时,说明用户之前手动写过 settings.json。此时读取 `user_health` 字段:\n\n**检查通过**(`is_healthy == true`):\n- 不打扰用户,直接当作\"已配好\",进入正常使用\n\n**检查不通过**(`is_healthy == false`):\n向用户展示具体问题,并询问:\n\n```\n检测到你已有的 claude code 配置存在以下问题:\n  1. <具体问题描述>\n  2. <具体问题描述>\n\n你希望:\n  A. 让本 skill 帮你重新配置(推荐,会先备份你现有的文件)\n  B. 我自己去修改\n\n请回复 A 或 B。\n```\n\n### Step 4 — 正常使用(智能路由 review / build 模式)\n\n```bash\nbash scripts/run.sh \"用户的完整需求原文\"\n```\n\n`run.sh` 内部会:\n1. 关键词扫描决定 mode:\n   - 命中 \"review / 评审 / 审查 / 看一下 / 分析 / 评估 / 检查 / lint / 评 / read-only\" → **review 模式**(`--permission-mode plan`)\n   - 否则默认 **build 模式**(`--allowedTools \"Read,Glob,Grep,LS,Bash,Edit,Write\"`)\n2. 用 `nohup setsid + </dev/null + log file + 110s PID polling` 跑 claude(避免 PTY 挂起)\n3. 把日志末尾原样返回\n\n也可以由 Agent 显式指定:\n```bash\nbash scripts/run.sh --mode review \"用户需求\"\nbash scripts/run.sh --mode build  \"用户需求\"\n```\n\n### Step 5 — 切换模型服务(用户主动要求时)\n\n**仅当用户明确说**\"切换 / 换一家 / 切到 X / 换成自定义 / 用回 AgentPlan\"等关键词时触发,**不要主动建议切换**。\n\n```bash\nbash scripts/switch-profile.sh             # 列出已配置的服务\nbash scripts/switch-profile.sh agentplan   # 切换到 AgentPlan\nbash scripts/switch-profile.sh custom      # 切换到自定义网关\n```\n\n切换实际上是把 `~/.claude/settings.json` 替换为目标 profile 的内容(同时同步 `.token` 文件),并把 `~/.claude/active-profile` 写成目标名。\n\n---\n\n## 关键配置点(踩坑后的硬约束)\n\n> 这是 v3.1 现网走通后总结出的**必须遵守**的规则,违反就报错。\n\n| 规则 | 说明 |\n|---|---|\n| 用 `ANTHROPIC_AUTH_TOKEN`,**不要** `ANTHROPIC_API_KEY` | 后者会被 CLI 强制走 anthropic.com 鉴权链路,在境内 IDC 必然失败 |\n| `~/.claude.json` 必须有 `hasCompletedOnboarding: true` | 否则 CLI 拒绝在非交互模式启动,报 `Onboarding has not been completed` |\n| `~/.claude/settings.json` 的 `env` 块 + `~/.claude/.token` 文件 **二者并存** | env 块负责 base_url / model / 各类开关,.token 文件负责 Key(更安全) |\n| build 模式必须显式 `--allowedTools` 白名单 | 否则默认 ask 模式会等用户交互,在沙箱里直接挂死 |\n| review 模式必须用 `--permission-mode plan` | 这样不会出现写文件的副作用,review 才是真正只读 |\n| ⛔ Skill 调用方**禁止**叠加 `pty: true` | run.sh 的 `</dev/null` 会被 PTY 重新打开 stdin,导致 claude 等待输入 |\n| 110s 超时是硬约束 | 走 `nohup setsid + log file + while-poll PID` 路径;一旦 PID 还活着且超过 110s,主动 `kill -9`,从日志里取已生成的内容 |\n\n---\n\n## 健康检查都检查什么?\n\n| 检查项 | 不通过时的具体表现 |\n|---|---|\n| `~/.claude/settings.json` 是否存在且 JSON 合法 | claude 启动会直接 abort |\n| `env.ANTHROPIC_BASE_URL` 是否设置 | claude 不知道请求发往哪里 |\n| 用了 `ANTHROPIC_AUTH_TOKEN` 而非 `ANTHROPIC_API_KEY` | 后者必然走 anthropic.com,境内 IDC 连不上 |\n| `~/.claude.json` 是否存在且 `hasCompletedOnboarding == true` | 否则 CLI 在非交互模式下 abort |\n| `~/.claude/.token` 是否存在且非空 | 否则连接时被拒 401 |\n| `env.ANTHROPIC_MODEL` 是否设置 | 否则 CLI 会回退默认 sonnet,在自定义网关上找不到模型 |\n\n---\n\n## Profile 设计\n\n每个模型服务在 `~/.claude/profiles/` 下有一个 settings.json 模板:\n\n```\n~/.claude/profiles/\n├── agentplan.json    — 火山方舟 AgentPlan(ark-code-latest,base_url /api/plan)\n├── codingplan.json   — 火山方舟 Coding Plan(ark-code-latest,base_url /api/coding)\n└── custom.json       — 自定义 Anthropic 兼容网关(占位符 __BASE_URL__ / __MODEL__)\n```\n\n`~/.claude/settings.json` 是当前激活配置的实际内容(由 setup / switch 脚本写入),`~/.claude/active-profile` 文件记录当前是哪一个。\n\n---\n\n## 必读参考文档\n\n| 场景 | 需要读的文件 |\n|---|---|\n| 引导用户选择模型供应商 | `references/providers.md` |\n| 用户报错 / 检查不通过 | `references/troubleshooting.md` |\n| 不确定整体流程 / review vs build | `references/routing-flow.md` |\n\n---\n\n## 安全规则\n\n- 用户的 Key 只保存在 `~/.bashrc`、`~/.claude/.token` 和 `~/.claude/profiles/*.json` 中(用户家目录内)\n- 覆盖配置前**自动备份**到 `~/.claude/settings.json.bak.<时间戳>`\n- 不上传任何外部服务,不在日志中记录 Key 明文\n- ⛔ 不会出现在日志或 stdout 的任何地方打印完整 Key\n\n## 不做什么\n\n- ❌ **不**尝试连接 Anthropic 官方服务(沙箱网络在境内 IDC,连不上 anthropic.com)\n- ❌ **不**自动猜测 Key,所有 Key 必须由用户主动粘贴\n- ❌ **不**做 Codex 的配置(那是另一个 skill,叫 codex-allinone)\n- ❌ **不**在用户没确认前覆盖已有的 settings.json\n- ❌ **不**接管 review/build 之外的复杂权限模式(如 `bypassPermissions`、`dontAsk`),那是用户自己的事\n\n## 常用对话示例\n\n| 用户说 | Skill 做什么 |\n|---|---|\n| \"帮我装 claude code\" / \"在 ArkClaw 里用 claude code\" | 安装 + 引导配置 |\n| \"/claude-code-allinone 帮我写个 Python 脚本\" | 直接执行(已配好则走 build 模式) |\n| \"claude code review 一下 utils.py\" | 直接执行(走 review 模式,只读) |\n| \"切换到自定义网关\" / \"换一家\" | 运行 switch-profile.sh |\n| \"claude 报 Onboarding has not been completed\" | 跑 ensure-onboarding.sh |\n| \"claude 报 401\" | 用「人话提示」告知用户:Key 失效或贴错套餐,引导去 ArkClaw 控制台刷新 / 切套餐 / 换 Kimi 等 |\n| \"我现在用的哪家?\" | 读取 ~/.claude/active-profile |\n\n---\n\n## 给用户的\"人话提示\"模板(必须遵守)\n\nskill 与用户沟通时,**禁止出现** profile / token / settings.json / apiKeyHelper / onboarding 这类内部术语。下表是对应的人话翻译,凡需告知用户错误时一律按此输出:\n\n| 内部状态 | 给用户的人话提示 |\n|---|---|\n| 401 / 403 鉴权失败 | \"连接火山方舟时被拒绝(可能是 Key 过期或贴错套餐)。可以这样修:\\n  1. 去火山方舟控制台 → AgentPlan 页面,复制最新的专属 Key 发给我,我帮你重新写入(原配置会自动备份)\\n  2. 如果你有别的可用 Key(Coding Plan 的、Kimi 的、DeepSeek 的、自建网关的),告诉我用哪个,我切过去\\n请直接回复 1 或 2,或者直接把新 Key / \"用 Kimi\" 这类话发给我。\" |\n| Onboarding 未完成 | \"Claude Code 还没完成首次启动检查,我帮你跳过(2 秒)\" |\n| relay 端口 connection refused | \"本地的协议中转服务没起来,我重新启动一下(2 秒)\" |\n| settings.json 字段缺失 | \"配置文件里少了一项必要信息,我帮你重新配一下\" |\n| apiKeyHelper 路径不存在 | \"Key 文件丢失了(可能清理过家目录),我重写一下\" |\n| Key 格式自检失败 | \"你给的这串看起来不像一把有效的 Key — 应该是一串 20 位以上的字母+数字。请去控制台完整复制后再发我\" |\n| 网络抖动跳过预校验 | \"网络有点抖,在线校验跳过,先把配置写下来。如果运行时报错我再告诉你怎么修\" |\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn73hber135x9wjpmgv9x9hedx83fpcn\",\n  \"slug\": \"claude-code-allinone\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1779025798513\n}\n\nFile v1.0.1:references/providers.md\n\n# 模型供应商参考 — 引导用户选择 / 收集 Key\n\n> 这份文档给主对话 Agent 看:用户问\"我应该选哪个\"或\"这个 Key 怎么搞\"时,从这里抄答案。\n\n## 核心原则:默认 AgentPlan,不主动列菜单\n\n减少用户感知是本 skill 的核心设计。**首次配置时一律默认走 AgentPlan**,只让用户粘贴一次 Key。**只有**用户主动表达\"我有自己的 Anthropic 兼容网关 / 自定义 base_url / 别的 Key\"等语义时,才进入 custom 分支。\n\n⛔ 禁止主动给用户列 A/B 菜单。这会增加感知,违背\"无感配置\"原则。\n\n---\n\n## A. 火山方舟 AgentPlan(默认 / 无需询问)\n\n**这是首次配置的默认路径。** 不要问用户\"要选 A 还是 B\",直接说:\n\n> \"准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。请粘贴 AgentPlan 控制台分配的专属 Key:\"\n\n- **base_url**: `https://ark.cn-beijing.volces.com/api/plan`\n- **协议**: 原生 Anthropic Messages 协议(Claude Code 直连即可)\n- **模型名**: `ark-code-latest`(智能路由,后端自动分发到 Kimi K2 / Doubao / DeepSeek / GLM 等)\n- **Key 来源**:登录 [AgentPlan 控制台](https://www.volcengine.com/) → 找到\"AgentPlan 专属 Key\"页面 → 复制\n- **优点**:\n  - 套餐内额度,不需要单独付费\n  - 智能路由,后端帮你选最合适的模型\n  - 境内 IDC 直连,延迟低\n- **限制**:\n  - Key 必须是 AgentPlan 控制台分配的\"专属 Key\",不能用普通 v3 API Key\n  - 不支持自定义 temperature / top_p\n\n### 配置命令\n```bash\nbash scripts/setup-agentplan.sh \"<AgentPlan 专属 Key>\"\n```\n\n### 引导话术(默认场景,**不**给 A/B 菜单)\n```\n准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。\n\n请粘贴你的 AgentPlan 专属 Key:\n\n📋 怎么获取 Key?\n   1. 登录火山方舟控制台\n   2. 进入 AgentPlan 模块\n   3. 找到\"专属 Key\"或\"分配 Key\"页面\n   4. 复制里面的 Key\n\n⚠️ 注意:这个 Key 跟普通的\"API Key 管理\"里的 Key 不是一回事,\n   AgentPlan 必须用专属 Key,普通 Key 会报 401。\n```\n\n---\n\n## B. 自定义 Anthropic 兼容网关(仅用户主动要求时)\n\n**触发条件**:用户语句里出现以下任一(或类似)语义,才进入这条分支。否则一律默认 AgentPlan,不询问。\n\n- \"我有自己的 / 我们公司的 / 我们自建的 网关 / base_url / 端点\"\n- \"我有别的 Anthropic 兼容 Key\"\n- \"用 claude-code-router / kimi-router / Bedrock / Vertex 出来的端点\"\n- \"不用 AgentPlan,我有自己的 Key\"\n- 用户**直接给出**了 base_url + Key + model 三件套\n\n⛔ 用户没说这些,**不要主动**问\"要不要用自定义网关\"。\n\n- **base_url**: 由用户提供\n- **协议**: 必须实现 Anthropic Messages 协议(`POST /v1/messages`)\n- **模型名**: 由用户提供\n- **典型场景**:\n  - 公司自建的 Anthropic 协议网关\n  - 第三方厂商提供的 Anthropic 兼容端点\n  - 自部署的 Anthropic 协议代理(claude-code-router 等)\n- **不适用场景**:\n  - OpenAI 协议端点(请去 codex-allinone)\n  - 普通 Chat Completions 接口(本 skill 不做协议转换)\n\n### 配置命令\n```bash\nbash scripts/setup-custom.sh \"<base_url>\" \"<Key>\" \"<model>\"\n```\n\n### 引导话术\n```\n请按顺序提供 3 个信息:\n\n1. base_url(网关地址,不含 /v1 后缀)\n   示例: https://my-gateway.example.com\n\n2. API Key\n   示例: sk-xxxxxxxxxxxxxxxx\n\n3. 模型名(网关上能识别的)\n   示例: claude-3-5-sonnet-20241022 / kimi-k2 / 自定义名\n\n可以一次贴出来,格式:\n  base_url=...\n  key=...\n  model=...\n```\n\nsetup-custom.sh 会自动:\n- 探测 `<base_url>/v1/messages` 是否可达 (curl POST 一次, 返回 200/400/422 视为通)\n- 把占位符 `__BASE_URL__` / `__MODEL__` 替换到 profile 文件\n- 备份旧 settings.json 后写入新内容\n\n---\n\n## 不支持的供应商(本 skill 不做)\n\n| 供应商 | 协议 | 应该用什么 |\n|---|---|---|\n| OpenAI 官方 | OpenAI Chat | codex-allinone(OpenAI 协议)|\n| 火山方舟 v3 普通 Key | OpenAI Chat | codex-allinone arkv3 模式 |\n| Kimi (Moonshot) | OpenAI Chat | codex-allinone kimi 模式 |\n| DeepSeek | OpenAI Chat | codex-allinone deepseek 模式 |\n| Anthropic 官方 (anthropic.com) | Anthropic | 境内 IDC 网络不通,无法使用 |\n| AWS Bedrock | Anthropic via AWS | (后续版本可能支持)|\n| Google Vertex | Anthropic via GCP | (后续版本可能支持)|\n\n---\n\n## Key 安全说明\n\nsetup 脚本会把 Key 存到 3 个位置(全部在用户家目录,不出沙箱):\n\n1. `~/.bashrc` 的 `export ARK_API_KEY=...` 或 `export CUSTOM_ANTHROPIC_KEY=...`\n   - 用途:沙箱重启后自动恢复环境变量\n   - 权限:跟 `.bashrc` 一致(通常 644,但内容只在用户家目录)\n\n2. `~/.claude/.token`\n   - 用途:settings.json 的 `apiKeyHelper: \"cat ~/.claude/.token\"` 会读这个\n   - 权限:600(仅当前用户可读)\n\n3. `~/.claude/profiles/<name>.json` 不含 Key,只含 base_url / model 等\n   - profile 文件不存 Key,切换 profile 时 .token 文件由 switch 脚本同步\n\n⛔ Skill 永远不会把 Key 上传到任何外部服务,也不会在日志里打印完整 Key。\n\nFile v1.0.1:references/routing-flow.md\n\n# 路由流程参考 — Skill 内部决策路径详解\n\n> 这份文档是给 Skill 调用方(主对话 Agent)看的:每次触发时该走哪条分支、判断的是什么、命中后跑哪个脚本。\n\n## 顶层路由(三条路径)\n\n每次 skill 被触发,**第一步**必须先跑 doctor.sh,根据它返回的 JSON 决定走哪一条。\n\n```\nbash scripts/doctor.sh > /tmp/cc_doctor.json\n```\n\n输出 JSON 关键字段:\n\n| 字段 | 含义 |\n|---|---|\n| `claude_installed` | claude CLI 是否已装 |\n| `claude_outdated`  | 装了但版本低于 2.1.0 |\n| `config_state`     | `clean` / `managed-by-skill` / `user-managed` |\n| `active_profile`   | 当前激活的 profile 名 (managed-by-skill 时) |\n| `user_health`      | user-managed 时的健康检查结果 |\n| `onboarding_complete` | `~/.claude.json` 是否已标记 onboarding 完成 |\n| `token_set`        | `~/.claude/.token` 是否非空 |\n| `issues[]`         | 问题列表(人话) |\n\n### 路径 ① 首次配置 (config_state == \"clean\")\n\n**核心原则:减少用户感知,默认走 AgentPlan,不主动列菜单。**\n\n- 必要时跑 install.sh\n- **默认直接走 AgentPlan**:只问用户一句\"请粘贴 AgentPlan 专属 Key\",拿到 Key 后跑 `setup-agentplan.sh`\n- **仅当用户主动表达**\"我有自己的 Anthropic 兼容网关 / 别的 base_url / 自定义模型 / 公司自建网关 / claude-code-router\"等关键词时,才走 custom 分支(`setup-custom.sh`)\n- ⛔ 用户没主动提\"自定义\"语义时,**禁止**主动给用户列 A/B 菜单 — 这违背\"默认 AgentPlan,无感配置\"原则\n- setup 脚本会自动把 config_state 切到 managed-by-skill,转到路径 ②\n\n### 自定义分支的触发关键词(仅供参考)\n\n只有用户语句里出现以下任一(或类似)语义,才走 custom 分支:\n\n- \"我有自己的 / 我们公司的 / 我们自建的 网关 / base_url / 端点\"\n- \"我有别的 Anthropic 兼容 Key\"\n- \"用 claude-code-router / kimi-router / Bedrock / Vertex\"\n- \"不用 AgentPlan,我有自己的 Key\"\n- 用户直接给出了 base_url + Key + model 三件套\n\n否则一律默认 AgentPlan,不询问。\n\n### 路径 ② 正常使用 (config_state == \"managed-by-skill\")\n\n- 跑 ensure-onboarding.sh (幂等,几乎无开销)\n- 跑 run.sh \"<用户需求>\"\n- 把 run.sh 的输出原样回给用户\n- ⛔ 不要解释流程,不要询问\"是否切换\",体验要等同于直接对话 claude code\n\n### 路径 ③ 兼容性检查 (config_state == \"user-managed\")\n\n读 `user_health.is_healthy`:\n\n- `true`  → 当作正常使用,转到路径 ②\n- `false` → 把 `user_health.issues[]` 展示给用户,询问是 A. 让本 skill 重配 还是 B. 自己修\n\n---\n\n## 二级路由 — review vs build 模式判定\n\nrun.sh 内部通过关键词扫描决定走哪个模式。\n\n| 触发关键词 | 模式 | claude 参数 |\n|---|---|---|\n| review / Review / REVIEW / 评审 / 审查 / 分析 / 评估 / 检查 / lint / 只读 / read-only | review | `--permission-mode plan` |\n| (其他所有情况) | build | `--allowedTools \"Read,Glob,Grep,LS,Bash,Edit,Write\"` |\n\n也可以由 Agent 显式指定:\n```bash\nbash scripts/run.sh --mode review \"审一下 utils.py\"\nbash scripts/run.sh --mode build  \"把这个 bug 修了\"\n```\n\n### 为什么要分模式?\n\n| 场景 | 不分模式的后果 |\n|---|---|\n| 用户只想做 PR review | 默认 build 会真去改文件,造成误改 |\n| 用户想动手实现 | 默认 plan 模式只输出方案不动手,用户要手动套一遍 |\n\nreview 模式的 `--permission-mode plan` 会让 claude 进入 \"看,但不改\" 状态。\nbuild 模式的 `--allowedTools` 白名单是 v3.1 现网验证过的最小可用集合,既能完成大多数编程任务,也不会误用危险工具。\n\n---\n\n## 防挂死三件套(必须遵守)\n\nrun.sh 启动 claude 时严格遵循:\n\n```bash\nnohup setsid claude -p \"...\" </dev/null > \"$LOG_FILE\" 2>&1 &\nCLAUDE_PID=$!\n\n# 轮询 PID,超过 110s 主动 kill -9\nelapsed=0\nwhile kill -0 \"$CLAUDE_PID\" 2>/dev/null; do\n  [ $elapsed -ge 110 ] && { kill -9 \"$CLAUDE_PID\"; break; }\n  sleep 1; elapsed=$((elapsed+1))\ndone\n\ncat \"$LOG_FILE\"\n```\n\n| 元素 | 作用 | 不能省 |\n|---|---|---|\n| `nohup setsid` | 完全脱离 controlling tty,不受父进程的信号影响 | 否则父 shell 退出会带走 claude |\n| `</dev/null`   | claude 的 stdin 接到 /dev/null,绝不等待输入 | 否则 claude 会陷入\"等用户回车\"挂死 |\n| `> log 2>&1`   | 所有输出落盘,后续 cat | 否则 buffer 满会 SIGPIPE 中断 |\n| 110s 轮询超时 | 极限值,超过就 kill -9 取已生成内容 | 否则会无限挂起 |\n\n### ⛔ 主对话 Agent 调用本 skill 时的禁忌\n\n- **禁止叠加 `pty: true`**:许多沙箱执行器有\"分配伪终端\"开关,一旦打开,会把 stdin 重新接回新 PTY,直接破坏 `</dev/null` 隔离,导致 claude 等输入挂死\n- **禁止用 `bypassPermissions`**:run.sh 的 `--allowedTools` 已经给出了安全的最小工具集,bypass 会失去白名单保护\n- **禁止把 `--permission-mode` 改成 `acceptEdits` / `dontAsk`**:这些模式在沙箱非交互环境会触发未知行为\n\n---\n\n## profile 切换的内部机制\n\n```\n~/.claude/profiles/\n├── agentplan.json      ← setup-agentplan 写入的模板副本\n└── custom.json         ← setup-custom 写入的模板副本(已替换 __BASE_URL__/__MODEL__)\n\n~/.claude/settings.json ← 当前激活 profile 的实际内容(由 setup/switch 复制写入)\n~/.claude/.token        ← 当前激活 profile 的 Key (apiKeyHelper 读这个)\n~/.claude/active-profile← 文本: 当前激活的 profile 名\n```\n\n切换 = 用 `~/.claude/profiles/<name>.json` 覆盖 `settings.json` + 同步 `.token` + 写 `active-profile`。\n\n切换不需要重启任何服务(没有 relay),立刻生效。\n\nFile v1.0.1:references/troubleshooting.md\n\n# 故障排查 — 看 doctor.sh 的 issues / 看 claude code 报错信息,对照下表给用户处方\n\n> v3.1 现网验证后总结的踩坑清单。每条都给出\"原因 → 处方\"。\n\n## 按现象索引\n\n### 1. `command not found: claude`\n\n**原因**:npm 全局 bin 不在 PATH。\n\n**处方**:\n```bash\nbash scripts/install.sh   # install 会自动写 PATH 到 .bashrc\nsource ~/.bashrc\n```\n\n### 2. doctor.sh 显示 `claude_outdated=true`\n\n**原因**:claude code 版本 < 2.1.0,部分参数(如 `--permission-mode plan`)不存在。\n\n**处方**:\n```bash\nbash scripts/install.sh   # 会自动升级到最新\n```\n\n### 3. `Onboarding has not been completed`\n\n**原因**:`~/.claude.json` 缺少 `hasCompletedOnboarding: true`,Claude Code 在非交互模式 (`-p`) 下会直接 abort。\n\n**处方**:\n```bash\nbash scripts/ensure-onboarding.sh   # 幂等设置,可反复跑\n```\n\n每次 setup-* 脚本都会自动跑这一步,正常情况下用户碰不到。\n\n### 4. `ANTHROPIC_AUTH_TOKEN is not set` / `401 Unauthorized`\n\n**原因**:Key 没生效。可能的具体场景:\n- `~/.claude/.token` 文件不存在或为空\n- 当前 shell 没 source `~/.bashrc`(环境变量没生效)\n- 用户用了错误的 Key (AgentPlan 专属 Key vs 普通 v3 Key 混淆)\n\n**处方**:\n```bash\n# 看 token 文件\nls -la ~/.claude/.token\nwc -c < ~/.claude/.token   # 应该非 0\n\n# 看当前激活 profile 是哪个\ncat ~/.claude/active-profile\n\n# 重跑对应 setup\nbash scripts/setup-agentplan.sh \"<正确的 AgentPlan Key>\"\n# 或\nbash scripts/setup-custom.sh \"<base_url>\" \"<Key>\" \"<model>\"\n```\n\n### 5. `403 Forbidden` / 模型在某些 base_url 下不存在\n\n**原因**:base_url 与 Key 不匹配,或者 model 名错误。\n\n**处方**:\n- AgentPlan 路径必须 model = `ark-code-latest`\n- 自定义网关的 model 名必须是网关那边能识别的(常见误区:把 `claude-3-5-sonnet` 缩写成 `sonnet`)\n\n```bash\n# 看当前 settings.json\ncat ~/.claude/settings.json\n```\n\n### 6. ArkClaw / OpenClaw 沙箱里 claude 一直挂死,无任何输出\n\n**原因**:十有八九是主对话 Agent 调用 Skill 时叠加了 `pty: true`,导致 `</dev/null` 隔离失效,claude 在等 stdin。\n\n**处方**(给主对话 Agent 看):\n- 调用 run.sh 时 **不要** 在执行器里启用 PTY\n- 直接用 bash 执行 `bash /path/to/skill/scripts/run.sh \"<需求>\"`,不要走伪终端通道\n- run.sh 内部已经做好了 `nohup setsid + </dev/null + log file + 110s 超时` 三件套\n\n如果你不是用 Skill 调用,而是手工跑 claude:\n```bash\n# 错误示范\nclaude -p \"改个东西\"   # 在某些 sandbox 里会等 stdin,挂死\n\n# 正确示范\nnohup setsid claude -p \"改个东西\" --allowedTools \"Read,Edit,Write,Bash\" </dev/null > /tmp/claude.log 2>&1 &\nsleep 60\ncat /tmp/claude.log\n```\n\n### 7. claude 报 `Input must be provided through stdin or as a prompt argument`\n\n**原因**:你忘了 `-p`,或者 PTY 模式让 claude 以为要从 stdin 读。\n\n**处方**:\n- 必须用 `-p \"<prompt>\"` 传需求(而不是 echo \"...\" | claude)\n- Skill 调用方禁止 PTY\n\n### 8. claude 报 `unknown permission-mode: accept`\n\n**原因**:用了不存在的 mode 值。\n\n**合法值**:`acceptEdits | auto | bypassPermissions | default | dontAsk | plan`\n\n**处方**:本 skill 只用 `plan` (review 模式) 和 `--allowedTools` (build 模式),不要自己改其他 mode。\n\n### 9. build 模式跑完没改文件\n\n**可能原因**:\n- 用户的 prompt 里没有\"修改\"语义,claude 自己也判定不需要改\n- `--allowedTools` 白名单不够(比如要装 npm 包但白名单里没 Bash)\n- 工作目录不是预期目录\n\n**处方**:\n```bash\n# 显式指定工作目录\nbash scripts/run.sh --cwd /path/to/repo --mode build \"明确说要改什么\"\n\n# 看完整日志\nls -lt ~/.claude-runs | head -5\ncat ~/.claude-runs/run-build-XXX.log\n```\n\n### 10. review 模式 claude 输出了改文件的代码块,但没真改\n\n**这是预期行为**:`--permission-mode plan` 就是只读分析,只输出方案/diff,不真去改。\n如果用户想动手,改用 build 模式:\n```bash\nbash scripts/run.sh --mode build \"<需求>\"\n```\n\n### 11. `~/.claude/settings.json` 被覆盖,我之前的自定义配置丢了\n\n**原因**:setup-* / switch-profile.sh 会覆盖 settings.json。但脚本会先备份。\n\n**处方**:\n```bash\nls -lt ~/.claude/settings.json.bak.*\n# 找到最近的备份,人工合并你需要的字段\n```\n\n### 12. 切换 profile 后还是用旧的 base_url\n\n**原因**:settings.json 没真的被替换,或者主进程里有 cached 环境变量。\n\n**处方**:\n```bash\n# 看当前 settings.json 实际内容\ncat ~/.claude/settings.json\n\n# 看 active-profile marker\ncat ~/.claude/active-profile\n\n# 重跑 switch\nbash scripts/switch-profile.sh agentplan\n```\n\n### 13. 沙箱重启后挂了\n\n**原因**:某些 Key 没持久化(只在当前 shell 环境)。\n\n**处方**:本 skill 的 setup-* 脚本会写 `export ARK_API_KEY=\"...\"` 到 ~/.bashrc。`~/.claude/.token` 文件也是磁盘持久的。`source ~/.bashrc` 即恢复。如果还不行:\n```bash\ngrep -E '(ANTHROPIC|ARK_API_KEY|CUSTOM_ANTHROPIC_KEY)' ~/.bashrc\nls -la ~/.claude/{.token,settings.json,active-profile}\n```\n\n### 14. doctor.sh 显示 `claude_installed=false` 但你确定装过\n\n**原因**:npm 全局 bin 不在当前 shell 的 PATH。\n\n**处方**:\n```bash\nls $HOME/.npm-global/bin/claude   # 看实际位置\nexport PATH=\"$HOME/.npm-global/bin:$PATH\"\nwhich claude\n```\n\n### 15. `failed to load skill ... missing YAML frontmatter`\n\n**原因**:同目录下有其他 Skill 的 SKILL.md 格式错了(不影响本 skill 自身)。\n\n**处方**:可忽略;或者把那个有问题的 skill 目录删了。\n\n## 兜底:把 doctor.sh 完整输出贴给我\n\n如果上面都对不上,让用户:\n```bash\nbash scripts/doctor.sh\n```\n把完整 JSON 贴回来,Skill 根据 issues 数组逐项处理。\n\nFile v1.0.1:skill-card.md\n\n## Description:\n\nConfigures and runs Anthropic Claude Code CLI inside ArkClaw or OpenClaw, with read-only review routing and build-mode execution for coding tasks.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[bao2200220](https://clawhub.ai/user/bao2200220)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineers use this skill to set up Claude Code CLI in ArkClaw or OpenClaw, choose an AgentPlan, Coding Plan, or custom Anthropic-compatible provider, troubleshoot configuration, and delegate code review or implementation tasks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can store API keys in the user's home directory and shell startup file.\n\nMitigation: Use scoped or short-lived keys where possible, avoid long-lived production keys, and rotate any key that was stored in ~/.bashrc.\n\nRisk: Build mode can delegate work to Claude Code with shell and file-write tools.\n\nMitigation: Use read-only review mode for assessment tasks and inspect proposed changes before allowing build-mode execution in sensitive workspaces.\n\nRisk: The installer can fetch a mutable latest npm package.\n\nMitigation: Review the package source and lock or pin the installed Claude Code version in controlled environments.\n\n## Reference(s):\n\n- [Provider selection reference](artifact/references/providers.md)\n- [Routing flow reference](artifact/references/routing-flow.md)\n- [Troubleshooting reference](artifact/references/troubleshooting.md)\n- [ClawHub skill page](https://clawhub.ai/bao2200220/skills/claude-code-allinone)\n- [Volcengine console](https://www.volcengine.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown responses with shell commands, configuration changes, code edits, and Claude Code output excerpts]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May run delegated Claude Code tasks with a timeout and retain task logs in the user's home directory.]\n\n## Skill Version(s):\n\n1.0.1 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.1:profiles/agentplan.json\n\n{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"https://ark.cn-beijing.volces.com/api/plan\",\n    \"ANTHROPIC_MODEL\": \"ark-code-latest\",\n    \"ANTHROPIC_SMALL_FAST_MODEL\": \"ark-code-latest\",\n    \"DISABLE_TELEMETRY\": \"1\",\n    \"DISABLE_BUG_COMMAND\": \"1\",\n    \"DISABLE_AUTOUPDATER\": \"1\",\n    \"DISABLE_NON_ESSENTIAL_MODEL_CALLS\": \"1\",\n    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\": \"1\"\n  },\n  \"apiKeyHelper\": \"cat ~/.claude/.token\"\n}\n\nFile v1.0.1:profiles/codingplan.json\n\n{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"https://ark.cn-beijing.volces.com/api/coding\",\n    \"ANTHROPIC_MODEL\": \"ark-code-latest\",\n    \"ANTHROPIC_SMALL_FAST_MODEL\": \"ark-code-latest\",\n    \"DISABLE_TELEMETRY\": \"1\",\n    \"DISABLE_BUG_COMMAND\": \"1\",\n    \"DISABLE_AUTOUPDATER\": \"1\",\n    \"DISABLE_NON_ESSENTIAL_MODEL_CALLS\": \"1\",\n    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\": \"1\"\n  },\n  \"apiKeyHelper\": \"cat ~/.claude/.token\"\n}\n\nFile v1.0.1:profiles/custom.json\n\n{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"__BASE_URL__\",\n    \"ANTHROPIC_MODEL\": \"__MODEL__\",\n    \"ANTHROPIC_SMALL_FAST_MODEL\": \"__MODEL__\",\n    \"DISABLE_TELEMETRY\": \"1\",\n    \"DISABLE_BUG_COMMAND\": \"1\",\n    \"DISABLE_AUTOUPDATER\": \"1\",\n    \"DISABLE_NON_ESSENTIAL_MODEL_CALLS\": \"1\",\n    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\": \"1\"\n  },\n  \"apiKeyHelper\": \"cat ~/.claude/.token\"\n}\n\nArchive v1.0.0: 16 files, 30992 bytes\n\nFiles: profiles/agentplan.json (420b), profiles/custom.json (378b), references/providers.md (5178b), references/routing-flow.md (5723b), references/troubleshooting.md (5803b), scripts/doctor.sh (4586b), scripts/ensure-onboarding.sh (517b), scripts/health-check.sh (5003b), scripts/helpers.sh (5210b), scripts/install.sh (2120b), scripts/run.sh (4675b), scripts/setup-agentplan.sh (3029b), scripts/setup-custom.sh (4789b), scripts/switch-profile.sh (3011b), SKILL.md (12990b), _meta.json (139b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: claude-code-allinone\ndescription: ArkClaw / OpenClaw 沙箱里一键安装并配置 Anthropic Claude Code CLI 的 all-in-one skill。当用户提到 claude code、claude-code、想在 ArkClaw 里用 Anthropic 官方 Coding CLI、提到 ark-code-latest / 火山方舟 AgentPlan 接 claude code、想切换 claude code 的模型供应商、需要做代码 review / 代码改写、或者说\"我没有 Anthropic 官方 API Key 但想用 claude code\"时,使用本 skill。\nlicense: MIT\n---\n\n# Claude Code All-in-One for ArkClaw\n\n让 ArkClaw / OpenClaw 用户在**对话框里**完成 Claude Code CLI 的全部配置 — 不用打开终端、不用手写 `~/.claude/settings.json`、不用记 base_url。本 skill 还内置 **review / build 双模式智能路由**:\n\n- **review 模式**(`--permission-mode plan`):只读分析,不改文件,适合代码审查 / 评估改造方案\n- **build 模式**(`--allowedTools` 白名单):允许 Read / Edit / Write / Bash 等动手工具,适合实现代码\n\n---\n\n## 整体流程(决策树)\n\n```\n用户触发本 skill(说\"用 claude code 帮我...\" / \"/claude-code-allinone ...\" / 报错 等)\n        │\n        ▼\n  ┌───────────────────────────┐\n  │ 运行 scripts/doctor.sh    │  ← 每次触发都会运行,检测当前环境状态\n  └─────────────┬─────────────┘\n                │\n       当前配置状态 = ?\n                │\n  ┌─────────────┼──────────────────────────────────┐\n  │             │                                  │\n\"全新环境\"    \"本 skill 配过\"                   \"用户手动配过\"\n(从未配置)   (之前用本 skill 配置的)          (有 settings.json/config 但不是本 skill 写的)\n  │             │                                  │\n  ▼             ▼                                  ▼\n路径 ①        路径 ②                             路径 ③\n首次配置      正常使用(绝大多数情况)              兼容性检查\n  │             │                                  │\n  │             │                                  ├─ 检查通过 → 保留不动,转到路径 ②\n  │             │                                  └─ 检查不通过 → 告知用户具体问题,\n  │             │                                       询问是否用本 skill 重新配置\n  │             │\n问用户选择   智能判定 review/build 模式\nA/B 菜单     然后执行: claude -p \"用户的需求\" --permission-mode plan\n  │              或:    claude -p \"用户的需求\" --allowedTools <白名单>\n  ▼\n完成配置后\n转到路径 ②\n```\n\n### 三条路径说明\n\n| 路径 | 什么时候走 | 用户需要做什么 |\n|---|---|---|\n| ① 首次配置 | 环境里从未配过 claude code,或用户主动要求重新配置 | **默认直接走 AgentPlan**,只问一次 Key 粘贴。用户主动说\"我有自己的 Anthropic 兼容网关 / 别的 base_url / 自定义模型\"时才走 custom 分支 |\n| ② 正常使用 | 已经配好了(本 skill 配的,或用户自配且体检通过) | **什么都不用做**,直接说编程需求即可 |\n| ③ 兼容性检查 | 用户手动写过 settings.json,本 skill 首次遇到 | 如果检查通过:无需操作;如果不通过:选择重配或自己修 |\n\n---\n\n## 重要:正常使用时不要打扰用户\n\n当配置已经就绪(路径 ②)时,**不允许**:\n\n- 复述配置流程\n- 解释 skill 在做什么\n- 询问\"是否需要切换 / 是否需要重新配置\"\n- 把 skill 的存在感暴露给用户\n\n**只做**:\n1. 运行 `bash scripts/ensure-onboarding.sh`(确保 `~/.claude.json` 标记 onboarding 完成)\n2. 调用 `bash scripts/run.sh \"用户的完整需求原文\"`(自动判定 review / build 模式)\n3. 把 claude code 的输出原样返回给用户\n\n**用户体验**应该等同于\"直接跟 claude code 对话\",完全感觉不到 skill 的存在。\n\n只有这三种情况允许打扰用户:\n1. 首次配置(环境全新)\n2. 兼容性检查不通过,且无法自动修复\n3. 用户主动说\"切换 / 换一家 / 切到 X\"\n\n---\n\n## 触发方式\n\n- **自然语言**:\"用 claude code 帮我重构 utils.py\" / \"claude code review 一下这个 PR\"\n- **显式命令**:`/claude-code-allinone <你的编程需求>`(强制走本 skill)\n- **报错触发**:用户贴出 `command not found: claude` / `Onboarding has not been completed` / `ANTHROPIC_AUTH_TOKEN is not set` 等\n\n---\n\n## 详细流程\n\n### Step 0 — 运行 doctor.sh 检测环境\n\n每次触发都先运行 `bash scripts/doctor.sh`,它会输出一个 JSON,包含:\n\n```json\n{\n  \"claude_installed\": true,\n  \"claude_version\": \"2.1.143\",\n  \"claude_outdated\": false,\n  \"config_state\": \"clean | managed-by-skill | user-managed\",\n  \"active_profile\": \"agentplan | custom | null\",\n  \"user_settings_summary\": {\"base_url\": \"...\", \"model\": \"...\"} | null,\n  \"user_health\": {\"is_healthy\": true/false, \"checks\": [...], \"issues\": [...]} | null,\n  \"onboarding_complete\": true,\n  \"ark_api_key_set\": true,\n  \"custom_api_key_set\": false,\n  \"issues\": []\n}\n```\n\n根据 `config_state` 决定走哪条路径。\n\n### Step 1 — 安装 / 升级 Claude Code CLI(仅首次需要)\n\n`scripts/install.sh` 的行为:\n\n| 当前状态 | 行为 |\n|---|---|\n| 未安装 claude | 通过 npm 安装 `@anthropic-ai/claude-code@latest` |\n| 版本低于 2.1.0 | 升级到最新 |\n| 已是最新版 | 跳过,不做任何事 |\n\n### Step 2 — 配置模型服务(仅路径 ① 触发)\n\n**默认行为:不问选项,直接走 AgentPlan**\n\n减少用户感知是核心原则。除非用户主动说\"我有自己的 Anthropic 兼容网关 / 自定义 base_url / 别的模型 Key\",否则直接进入 AgentPlan 配置流程,只让用户粘贴一次 Key:\n\n```\n准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。\n\n请粘贴 AgentPlan 控制台分配的专属 Key:\n```\n\n拿到 Key 后立即跑:\n```bash\nbash scripts/setup-agentplan.sh \"$KEY\"\n```\n\n#### 何时走自定义网关分支?\n\n只有以下情况才询问/触发 custom 流程,**不要主动给用户列菜单**:\n\n- 用户**主动**说:\"我有自己的 Anthropic 网关\" / \"用我们公司的 base_url\" / \"我有 claude-code-router\" / \"用 Bedrock / Vertex 转出来的端点\"\n- 用户**主动**给出 base_url + Key + model 三件套\n- 用户**主动**说\"我没有 AgentPlan Key,但我有别的 Anthropic 兼容端点\"\n\n触发后引导用户依次给出 3 个信息,然后跑:\n```bash\nbash scripts/setup-custom.sh \"$BASE_URL\" \"$KEY\" \"$MODEL\"\n```\n\n> ⛔ **不允许**在用户没提\"自定义/别的网关/我的 Key\"等关键词时,主动展示 A/B 菜单。这会增加感知,违背\"默认 AgentPlan\"原则。\n\n配置脚本会自动完成:写 Key → 写 settings.json → 写 `~/.claude.json` 的 `hasCompletedOnboarding: true` → `.token` 文件落盘。如果用户已有 `settings.json`,会**先备份**再覆盖。\n\n### Step 3 — 兼容性检查(仅路径 ③ 触发)\n\n当 doctor.sh 返回 `config_state == \"user-managed\"` 时,说明用户之前手动写过 settings.json。此时读取 `user_health` 字段:\n\n**检查通过**(`is_healthy == true`):\n- 不打扰用户,直接当作\"已配好\",进入正常使用\n\n**检查不通过**(`is_healthy == false`):\n向用户展示具体问题,并询问:\n\n```\n检测到你已有的 claude code 配置存在以下问题:\n  1. <具体问题描述>\n  2. <具体问题描述>\n\n你希望:\n  A. 让本 skill 帮你重新配置(推荐,会先备份你现有的文件)\n  B. 我自己去修改\n\n请回复 A 或 B。\n```\n\n### Step 4 — 正常使用(智能路由 review / build 模式)\n\n```bash\nbash scripts/run.sh \"用户的完整需求原文\"\n```\n\n`run.sh` 内部会:\n1. 关键词扫描决定 mode:\n   - 命中 \"review / 评审 / 审查 / 看一下 / 分析 / 评估 / 检查 / lint / 评 / read-only\" → **review 模式**(`--permission-mode plan`)\n   - 否则默认 **build 模式**(`--allowedTools \"Read,Glob,Grep,LS,Bash,Edit,Write\"`)\n2. 用 `nohup setsid + </dev/null + log file + 110s PID polling` 跑 claude(避免 PTY 挂起)\n3. 把日志末尾原样返回\n\n也可以由 Agent 显式指定:\n```bash\nbash scripts/run.sh --mode review \"用户需求\"\nbash scripts/run.sh --mode build  \"用户需求\"\n```\n\n### Step 5 — 切换模型服务(用户主动要求时)\n\n**仅当用户明确说**\"切换 / 换一家 / 切到 X / 换成自定义 / 用回 AgentPlan\"等关键词时触发,**不要主动建议切换**。\n\n```bash\nbash scripts/switch-profile.sh             # 列出已配置的服务\nbash scripts/switch-profile.sh agentplan   # 切换到 AgentPlan\nbash scripts/switch-profile.sh custom      # 切换到自定义网关\n```\n\n切换实际上是把 `~/.claude/settings.json` 替换为目标 profile 的内容(同时同步 `.token` 文件),并把 `~/.claude/active-profile` 写成目标名。\n\n---\n\n## 关键配置点(踩坑后的硬约束)\n\n> 这是 v3.1 现网走通后总结出的**必须遵守**的规则,违反就报错。\n\n| 规则 | 说明 |\n|---|---|\n| 用 `ANTHROPIC_AUTH_TOKEN`,**不要** `ANTHROPIC_API_KEY` | 后者会被 CLI 强制走 anthropic.com 鉴权链路,在境内 IDC 必然失败 |\n| `~/.claude.json` 必须有 `hasCompletedOnboarding: true` | 否则 CLI 拒绝在非交互模式启动,报 `Onboarding has not been completed` |\n| `~/.claude/settings.json` 的 `env` 块 + `~/.claude/.token` 文件 **二者并存** | env 块负责 base_url / model / 各类开关,.token 文件负责 Key(更安全) |\n| build 模式必须显式 `--allowedTools` 白名单 | 否则默认 ask 模式会等用户交互,在沙箱里直接挂死 |\n| review 模式必须用 `--permission-mode plan` | 这样不会出现写文件的副作用,review 才是真正只读 |\n| ⛔ Skill 调用方**禁止**叠加 `pty: true` | run.sh 的 `</dev/null` 会被 PTY 重新打开 stdin,导致 claude 等待输入 |\n| 110s 超时是硬约束 | 走 `nohup setsid + log file + while-poll PID` 路径;一旦 PID 还活着且超过 110s,主动 `kill -9`,从日志里取已生成的内容 |\n\n---\n\n## 健康检查都检查什么?\n\n| 检查项 | 不通过时的具体表现 |\n|---|---|\n| `~/.claude/settings.json` 是否存在且 JSON 合法 | claude 启动会直接 abort |\n| `env.ANTHROPIC_BASE_URL` 是否设置 | claude 不知道请求发往哪里 |\n| 用了 `ANTHROPIC_AUTH_TOKEN` 而非 `ANTHROPIC_API_KEY` | 后者必然走 anthropic.com,境内 IDC 连不上 |\n| `~/.claude.json` 是否存在且 `hasCompletedOnboarding == true` | 否则 CLI 在非交互模式下 abort |\n| `~/.claude/.token` 是否存在且非空 | 否则连接时被拒 401 |\n| `env.ANTHROPIC_MODEL` 是否设置 | 否则 CLI 会回退默认 sonnet,在自定义网关上找不到模型 |\n\n---\n\n## Profile 设计\n\n每个模型服务在 `~/.claude/profiles/` 下有一个 settings.json 模板:\n\n```\n~/.claude/profiles/\n├── agentplan.json    — 火山方舟 AgentPlan(ark-code-latest)\n└── custom.json       — 自定义 Anthropic 兼容网关(占位符 __BASE_URL__ / __MODEL__)\n```\n\n`~/.claude/settings.json` 是当前激活配置的实际内容(由 setup / switch 脚本写入),`~/.claude/active-profile` 文件记录当前是哪一个。\n\n---\n\n## 必读参考文档\n\n| 场景 | 需要读的文件 |\n|---|---|\n| 引导用户选择模型供应商 | `references/providers.md` |\n| 用户报错 / 检查不通过 | `references/troubleshooting.md` |\n| 不确定整体流程 / review vs build | `references/routing-flow.md` |\n\n---\n\n## 安全规则\n\n- 用户的 Key 只保存在 `~/.bashrc`、`~/.claude/.token` 和 `~/.claude/profiles/*.json` 中(用户家目录内)\n- 覆盖配置前**自动备份**到 `~/.claude/settings.json.bak.<时间戳>`\n- 不上传任何外部服务,不在日志中记录 Key 明文\n- ⛔ 不会出现在日志或 stdout 的任何地方打印完整 Key\n\n## 不做什么\n\n- ❌ **不**尝试连接 Anthropic 官方服务(沙箱网络在境内 IDC,连不上 anthropic.com)\n- ❌ **不**自动猜测 Key,所有 Key 必须由用户主动粘贴\n- ❌ **不**做 Codex 的配置(那是另一个 skill,叫 codex-allinone)\n- ❌ **不**在用户没确认前覆盖已有的 settings.json\n- ❌ **不**接管 review/build 之外的复杂权限模式(如 `bypassPermissions`、`dontAsk`),那是用户自己的事\n\n## 常用对话示例\n\n| 用户说 | Skill 做什么 |\n|---|---|\n| \"帮我装 claude code\" / \"在 ArkClaw 里用 claude code\" | 安装 + 引导配置 |\n| \"/claude-code-allinone 帮我写个 Python 脚本\" | 直接执行(已配好则走 build 模式) |\n| \"claude code review 一下 utils.py\" | 直接执行(走 review 模式,只读) |\n| \"切换到自定义网关\" / \"换一家\" | 运行 switch-profile.sh |\n| \"claude 报 Onboarding has not been completed\" | 跑 ensure-onboarding.sh |\n| \"claude 报 401\" | 检查对应 profile 的 Key 是否正确 |\n| \"我现在用的哪家?\" | 读取 ~/.claude/active-profile |\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn73hber135x9wjpmgv9x9hedx83fpcn\",\n  \"slug\": \"claude-code-allinone\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778968342390\n}\n\nFile v1.0.0:references/providers.md\n\n# 模型供应商参考 — 引导用户选择 / 收集 Key\n\n> 这份文档给主对话 Agent 看:用户问\"我应该选哪个\"或\"这个 Key 怎么搞\"时,从这里抄答案。\n\n## 核心原则:默认 AgentPlan,不主动列菜单\n\n减少用户感知是本 skill 的核心设计。**首次配置时一律默认走 AgentPlan**,只让用户粘贴一次 Key。**只有**用户主动表达\"我有自己的 Anthropic 兼容网关 / 自定义 base_url / 别的 Key\"等语义时,才进入 custom 分支。\n\n⛔ 禁止主动给用户列 A/B 菜单。这会增加感知,违背\"无感配置\"原则。\n\n---\n\n## A. 火山方舟 AgentPlan(默认 / 无需询问)\n\n**这是首次配置的默认路径。** 不要问用户\"要选 A 还是 B\",直接说:\n\n> \"准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。请粘贴 AgentPlan 控制台分配的专属 Key:\"\n\n- **base_url**: `https://ark.cn-beijing.volces.com/api/plan`\n- **协议**: 原生 Anthropic Messages 协议(Claude Code 直连即可)\n- **模型名**: `ark-code-latest`(智能路由,后端自动分发到 Kimi K2 / Doubao / DeepSeek / GLM 等)\n- **Key 来源**:登录 [AgentPlan 控制台](https://www.volcengine.com/) → 找到\"AgentPlan 专属 Key\"页面 → 复制\n- **优点**:\n  - 套餐内额度,不需要单独付费\n  - 智能路由,后端帮你选最合适的模型\n  - 境内 IDC 直连,延迟低\n- **限制**:\n  - Key 必须是 AgentPlan 控制台分配的\"专属 Key\",不能用普通 v3 API Key\n  - 不支持自定义 temperature / top_p\n\n### 配置命令\n```bash\nbash scripts/setup-agentplan.sh \"<AgentPlan 专属 Key>\"\n```\n\n### 引导话术(默认场景,**不**给 A/B 菜单)\n```\n准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。\n\n请粘贴你的 AgentPlan 专属 Key:\n\n📋 怎么获取 Key?\n   1. 登录火山方舟控制台\n   2. 进入 AgentPlan 模块\n   3. 找到\"专属 Key\"或\"分配 Key\"页面\n   4. 复制里面的 Key\n\n⚠️ 注意:这个 Key 跟普通的\"API Key 管理\"里的 Key 不是一回事,\n   AgentPlan 必须用专属 Key,普通 Key 会报 401。\n```\n\n---\n\n## B. 自定义 Anthropic 兼容网关(仅用户主动要求时)\n\n**触发条件**:用户语句里出现以下任一(或类似)语义,才进入这条分支。否则一律默认 AgentPlan,不询问。\n\n- \"我有自己的 / 我们公司的 / 我们自建的 网关 / base_url / 端点\"\n- \"我有别的 Anthropic 兼容 Key\"\n- \"用 claude-code-router / kimi-router / Bedrock / Vertex 出来的端点\"\n- \"不用 AgentPlan,我有自己的 Key\"\n- 用户**直接给出**了 base_url + Key + model 三件套\n\n⛔ 用户没说这些,**不要主动**问\"要不要用自定义网关\"。\n\n- **base_url**: 由用户提供\n- **协议**: 必须实现 Anthropic Messages 协议(`POST /v1/messages`)\n- **模型名**: 由用户提供\n- **典型场景**:\n  - 公司自建的 Anthropic 协议网关\n  - 第三方厂商提供的 Anthropic 兼容端点\n  - 自部署的 Anthropic 协议代理(claude-code-router 等)\n- **不适用场景**:\n  - OpenAI 协议端点(请去 codex-allinone)\n  - 普通 Chat Completions 接口(本 skill 不做协议转换)\n\n### 配置命令\n```bash\nbash scripts/setup-custom.sh \"<base_url>\" \"<Key>\" \"<model>\"\n```\n\n### 引导话术\n```\n请按顺序提供 3 个信息:\n\n1. base_url(网关地址,不含 /v1 后缀)\n   示例: https://my-gateway.example.com\n\n2. API Key\n   示例: sk-xxxxxxxxxxxxxxxx\n\n3. 模型名(网关上能识别的)\n   示例: claude-3-5-sonnet-20241022 / kimi-k2 / 自定义名\n\n可以一次贴出来,格式:\n  base_url=...\n  key=...\n  model=...\n```\n\nsetup-custom.sh 会自动:\n- 探测 `<base_url>/v1/messages` 是否可达 (curl POST 一次, 返回 200/400/422 视为通)\n- 把占位符 `__BASE_URL__` / `__MODEL__` 替换到 profile 文件\n- 备份旧 settings.json 后写入新内容\n\n---\n\n## 不支持的供应商(本 skill 不做)\n\n| 供应商 | 协议 | 应该用什么 |\n|---|---|---|\n| OpenAI 官方 | OpenAI Chat | codex-allinone(OpenAI 协议)|\n| 火山方舟 v3 普通 Key | OpenAI Chat | codex-allinone arkv3 模式 |\n| Kimi (Moonshot) | OpenAI Chat | codex-allinone kimi 模式 |\n| DeepSeek | OpenAI Chat | codex-allinone deepseek 模式 |\n| Anthropic 官方 (anthropic.com) | Anthropic | 境内 IDC 网络不通,无法使用 |\n| AWS Bedrock | Anthropic via AWS | (后续版本可能支持)|\n| Google Vertex | Anthropic via GCP | (后续版本可能支持)|\n\n---\n\n## Key 安全说明\n\nsetup 脚本会把 Key 存到 3 个位置(全部在用户家目录,不出沙箱):\n\n1. `~/.bashrc` 的 `export ARK_API_KEY=...` 或 `export CUSTOM_ANTHROPIC_KEY=...`\n   - 用途:沙箱重启后自动恢复环境变量\n   - 权限:跟 `.bashrc` 一致(通常 644,但内容只在用户家目录)\n\n2. `~/.claude/.token`\n   - 用途:settings.json 的 `apiKeyHelper: \"cat ~/.claude/.token\"` 会读这个\n   - 权限:600(仅当前用户可读)\n\n3. `~/.claude/profiles/<name>.json` 不含 Key,只含 base_url / model 等\n   - profile 文件不存 Key,切换 profile 时 .token 文件由 switch 脚本同步\n\n⛔ Skill 永远不会把 Key 上传到任何外部服务,也不会在日志里打印完整 Key。\n\nFile v1.0.0:references/routing-flow.md\n\n# 路由流程参考 — Skill 内部决策路径详解\n\n> 这份文档是给 Skill 调用方(主对话 Agent)看的:每次触发时该走哪条分支、判断的是什么、命中后跑哪个脚本。\n\n## 顶层路由(三条路径)\n\n每次 skill 被触发,**第一步**必须先跑 doctor.sh,根据它返回的 JSON 决定走哪一条。\n\n```\nbash scripts/doctor.sh > /tmp/cc_doctor.json\n```\n\n输出 JSON 关键字段:\n\n| 字段 | 含义 |\n|---|---|\n| `claude_installed` | claude CLI 是否已装 |\n| `claude_outdated`  | 装了但版本低于 2.1.0 |\n| `config_state`     | `clean` / `managed-by-skill` / `user-managed` |\n| `active_profile`   | 当前激活的 profile 名 (managed-by-skill 时) |\n| `user_health`      | user-managed 时的健康检查结果 |\n| `onboarding_complete` | `~/.claude.json` 是否已标记 onboarding 完成 |\n| `token_set`        | `~/.claude/.token` 是否非空 |\n| `issues[]`         | 问题列表(人话) |\n\n### 路径 ① 首次配置 (config_state == \"clean\")\n\n**核心原则:减少用户感知,默认走 AgentPlan,不主动列菜单。**\n\n- 必要时跑 install.sh\n- **默认直接走 AgentPlan**:只问用户一句\"请粘贴 AgentPlan 专属 Key\",拿到 Key 后跑 `setup-agentplan.sh`\n- **仅当用户主动表达**\"我有自己的 Anthropic 兼容网关 / 别的 base_url / 自定义模型 / 公司自建网关 / claude-code-router\"等关键词时,才走 custom 分支(`setup-custom.sh`)\n- ⛔ 用户没主动提\"自定义\"语义时,**禁止**主动给用户列 A/B 菜单 — 这违背\"默认 AgentPlan,无感配置\"原则\n- setup 脚本会自动把 config_state 切到 managed-by-skill,转到路径 ②\n\n### 自定义分支的触发关键词(仅供参考)\n\n只有用户语句里出现以下任一(或类似)语义,才走 custom 分支:\n\n- \"我有自己的 / 我们公司的 / 我们自建的 网关 / base_url / 端点\"\n- \"我有别的 Anthropic 兼容 Key\"\n- \"用 claude-code-router / kimi-router / Bedrock / Vertex\"\n- \"不用 AgentPlan,我有自己的 Key\"\n- 用户直接给出了 base_url + Key + model 三件套\n\n否则一律默认 AgentPlan,不询问。\n\n### 路径 ② 正常使用 (config_state == \"managed-by-skill\")\n\n- 跑 ensure-onboarding.sh (幂等,几乎无开销)\n- 跑 run.sh \"<用户需求>\"\n- 把 run.sh 的输出原样回给用户\n- ⛔ 不要解释流程,不要询问\"是否切换\",体验要等同于直接对话 claude code\n\n### 路径 ③ 兼容性检查 (config_state == \"user-managed\")\n\n读 `user_health.is_healthy`:\n\n- `true`  → 当作正常使用,转到路径 ②\n- `false` → 把 `user_health.issues[]` 展示给用户,询问是 A. 让本 skill 重配 还是 B. 自己修\n\n---\n\n## 二级路由 — review vs build 模式判定\n\nrun.sh 内部通过关键词扫描决定走哪个模式。\n\n| 触发关键词 | 模式 | claude 参数 |\n|---|---|---|\n| review / Review / REVIEW / 评审 / 审查 / 分析 / 评估 / 检查 / lint / 只读 / read-only | review | `--permission-mode plan` |\n| (其他所有情况) | build | `--allowedTools \"Read,Glob,Grep,LS,Bash,Edit,Write\"` |\n\n也可以由 Agent 显式指定:\n```bash\nbash scripts/run.sh --mode review \"审一下 utils.py\"\nbash scripts/run.sh --mode build  \"把这个 bug 修了\"\n```\n\n### 为什么要分模式?\n\n| 场景 | 不分模式的后果 |\n|---|---|\n| 用户只想做 PR review | 默认 build 会真去改文件,造成误改 |\n| 用户想动手实现 | 默认 plan 模式只输出方案不动手,用户要手动套一遍 |\n\nreview 模式的 `--permission-mode plan` 会让 claude 进入 \"看,但不改\" 状态。\nbuild 模式的 `--allowedTools` 白名单是 v3.1 现网验证过的最小可用集合,既能完成大多数编程任务,也不会误用危险工具。\n\n---\n\n## 防挂死三件套(必须遵守)\n\nrun.sh 启动 claude 时严格遵循:\n\n```bash\nnohup setsid claude -p \"...\" </dev/null > \"$LOG_FILE\" 2>&1 &\nCLAUDE_PID=$!\n\n# 轮询 PID,超过 110s 主动 kill -9\nelapsed=0\nwhile kill -0 \"$CLAUDE_PID\" 2>/dev/null; do\n  [ $elapsed -ge 110 ] && { kill -9 \"$CLAUDE_PID\"; break; }\n  sleep 1; elapsed=$((elapsed+1))\ndone\n\ncat \"$LOG_FILE\"\n```\n\n| 元素 | 作用 | 不能省 |\n|---|---|---|\n| `nohup setsid` | 完全脱离 controlling tty,不受父进程的信号影响 | 否则父 shell 退出会带走 claude |\n| `</dev/null`   | claude 的 stdin 接到 /dev/null,绝不等待输入 | 否则 claude 会陷入\"等用户回车\"挂死 |\n| `> log 2>&1`   | 所有输出落盘,后续 cat | 否则 buffer 满会 SIGPIPE 中断 |\n| 110s 轮询超时 | 极限值,超过就 kill -9 取已生成内容 | 否则会无限挂起 |\n\n### ⛔ 主对话 Agent 调用本 skill 时的禁忌\n\n- **禁止叠加 `pty: true`**:许多沙箱执行器有\"分配伪终端\"开关,一旦打开,会把 stdin 重新接回新 PTY,直接破坏 `</dev/null` 隔离,导致 claude 等输入挂死\n- **禁止用 `bypassPermissions`**:run.sh 的 `--allowedTools` 已经给出了安全的最小工具集,bypass 会失去白名单保护\n- **禁止把 `--permission-mode` 改成 `acceptEdits` / `dontAsk`**:这些模式在沙箱非交互环境会触发未知行为\n\n---\n\n## profile 切换的内部机制\n\n```\n~/.claude/profiles/\n├── agentplan.json      ← setup-agentplan 写入的模板副本\n└── custom.json         ← setup-custom 写入的模板副本(已替换 __BASE_URL__/__MODEL__)\n\n~/.claude/settings.json ← 当前激活 profile 的实际内容(由 setup/switch 复制写入)\n~/.claude/.token        ← 当前激活 profile 的 Key (apiKeyHelper 读这个)\n~/.claude/active-profile← 文本: 当前激活的 profile 名\n```\n\n切换 = 用 `~/.claude/profiles/<name>.json` 覆盖 `settings.json` + 同步 `.token` + 写 `active-profile`。\n\n切换不需要重启任何服务(没有 relay),立刻生效。\n\nFile v1.0.0:references/troubleshooting.md\n\n# 故障排查 — 看 doctor.sh 的 issues / 看 claude code 报错信息,对照下表给用户处方\n\n> v3.1 现网验证后总结的踩坑清单。每条都给出\"原因 → 处方\"。\n\n## 按现象索引\n\n### 1. `command not found: claude`\n\n**原因**:npm 全局 bin 不在 PATH。\n\n**处方**:\n```bash\nbash scripts/install.sh   # install 会自动写 PATH 到 .bashrc\nsource ~/.bashrc\n```\n\n### 2. doctor.sh 显示 `claude_outdated=true`\n\n**原因**:claude code 版本 < 2.1.0,部分参数(如 `--permission-mode plan`)不存在。\n\n**处方**:\n```bash\nbash scripts/install.sh   # 会自动升级到最新\n```\n\n### 3. `Onboarding has not been completed`\n\n**原因**:`~/.claude.json` 缺少 `hasCompletedOnboarding: true`,Claude Code 在非交互模式 (`-p`) 下会直接 abort。\n\n**处方**:\n```bash\nbash scripts/ensure-onboarding.sh   # 幂等设置,可反复跑\n```\n\n每次 setup-* 脚本都会自动跑这一步,正常情况下用户碰不到。\n\n### 4. `ANTHROPIC_AUTH_TOKEN is not set` / `401 Unauthorized`\n\n**原因**:Key 没生效。可能的具体场景:\n- `~/.claude/.token` 文件不存在或为空\n- 当前 shell 没 source `~/.bashrc`(环境变量没生效)\n- 用户用了错误的 Key (AgentPlan 专属 Key vs 普通 v3 Key 混淆)\n\n**处方**:\n```bash\n# 看 token 文件\nls -la ~/.claude/.token\nwc -c < ~/.claude/.token   # 应该非 0\n\n# 看当前激活 profile 是哪个\ncat ~/.claude/active-profile\n\n# 重跑对应 setup\nbash scripts/setup-agentplan.sh \"<正确的 AgentPlan Key>\"\n# 或\nbash scripts/setup-custom.sh \"<base_url>\" \"<Key>\" \"<model>\"\n```\n\n### 5. `403 Forbidden` / 模型在某些 base_url 下不存在\n\n**原因**:base_url 与 Key 不匹配,或者 model 名错误。\n\n**处方**:\n- AgentPlan 路径必须 model = `ark-code-latest`\n- 自定义网关的 model 名必须是网关那边能识别的(常见误区:把 `claude-3-5-sonnet` 缩写成 `sonnet`)\n\n```bash\n# 看当前 settings.json\ncat ~/.claude/settings.json\n```\n\n### 6. ArkClaw / OpenClaw 沙箱里 claude 一直挂死,无任何输出\n\n**原因**:十有八九是主对话 Agent 调用 Skill 时叠加了 `pty: true`,导致 `</dev/null` 隔离失效,claude 在等 stdin。\n\n**处方**(给主对话 Agent 看):\n- 调用 run.sh 时 **不要** 在执行器里启用 PTY\n- 直接用 bash 执行 `bash /path/to/skill/scripts/run.sh \"<需求>\"`,不要走伪终端通道\n- run.sh 内部已经做好了 `nohup setsid + </dev/null + log file + 110s 超时` 三件套\n\n如果你不是用 Skill 调用,而是手工跑 claude:\n```bash\n# 错误示范\nclaude -p \"改个东西\"   # 在某些 sandbox 里会等 stdin,挂死\n\n# 正确示范\nnohup setsid claude -p \"改个东西\" --allowedTools \"Read,Edit,Write,Bash\" </dev/null > /tmp/claude.log 2>&1 &\nsleep 60\ncat /tmp/claude.log\n```\n\n### 7. claude 报 `Input must be provided through stdin or as a prompt argument`\n\n**原因**:你忘了 `-p`,或者 PTY 模式让 claude 以为要从 stdin 读。\n\n**处方**:\n- 必须用 `-p \"<prompt>\"` 传需求(而不是 echo \"...\" | claude)\n- Skill 调用方禁止 PTY\n\n### 8. claude 报 `unknown permission-mode: accept`\n\n**原因**:用了不存在的 mode 值。\n\n**合法值**:`acceptEdits | auto | bypassPermissions | default | dontAsk | plan`\n\n**处方**:本 skill 只用 `plan` (review 模式) 和 `--allowedTools` (build 模式),不要自己改其他 mode。\n\n### 9. build 模式跑完没改文件\n\n**可能原因**:\n- 用户的 prompt 里没有\"修改\"语义,claude 自己也判定不需要改\n- `--allowedTools` 白名单不够(比如要装 npm 包但白名单里没 Bash)\n- 工作目录不是预期目录\n\n**处方**:\n```bash\n# 显式指定工作目录\nbash scripts/run.sh --cwd /path/to/repo --mode build \"明确说要改什么\"\n\n# 看完整日志\nls -lt ~/.claude-runs | head -5\ncat ~/.claude-runs/run-build-XXX.log\n```\n\n### 10. review 模式 claude 输出了改文件的代码块,但没真改\n\n**这是预期行为**:`--permission-mode plan` 就是只读分析,只输出方案/diff,不真去改。\n如果用户想动手,改用 build 模式:\n```bash\nbash scripts/run.sh --mode build \"<需求>\"\n```\n\n### 11. `~/.claude/settings.json` 被覆盖,我之前的自定义配置丢了\n\n**原因**:setup-* / switch-profile.sh 会覆盖 settings.json。但脚本会先备份。\n\n**处方**:\n```bash\nls -lt ~/.claude/settings.json.bak.*\n# 找到最近的备份,人工合并你需要的字段\n```\n\n### 12. 切换 profile 后还是用旧的 base_url\n\n**原因**:settings.json 没真的被替换,或者主进程里有 cached 环境变量。\n\n**处方**:\n```bash\n# 看当前 settings.json 实际内容\ncat ~/.claude/settings.json\n\n# 看 active-profile marker\ncat ~/.claude/active-profile\n\n# 重跑 switch\nbash scripts/switch-profile.sh agentplan\n```\n\n### 13. 沙箱重启后挂了\n\n**原因**:某些 Key 没持久化(只在当前 shell 环境)。\n\n**处方**:本 skill 的 setup-* 脚本会写 `export ARK_API_KEY=\"...\"` 到 ~/.bashrc。`~/.claude/.token` 文件也是磁盘持久的。`source ~/.bashrc` 即恢复。如果还不行:\n```bash\ngrep -E '(ANTHROPIC|ARK_API_KEY|CUSTOM_ANTHROPIC_KEY)' ~/.bashrc\nls -la ~/.claude/{.token,settings.json,active-profile}\n```\n\n### 14. doctor.sh 显示 `claude_installed=false` 但你确定装过\n\n**原因**:npm 全局 bin 不在当前 shell 的 PATH。\n\n**处方**:\n```bash\nls $HOME/.npm-global/bin/claude   # 看实际位置\nexport PATH=\"$HOME/.npm-global/bin:$PATH\"\nwhich claude\n```\n\n### 15. `failed to load skill ... missing YAML frontmatter`\n\n**原因**:同目录下有其他 Skill 的 SKILL.md 格式错了(不影响本 skill 自身)。\n\n**处方**:可忽略;或者把那个有问题的 skill 目录删了。\n\n## 兜底:把 doctor.sh 完整输出贴给我\n\n如果上面都对不上,让用户:\n```bash\nbash scripts/doctor.sh\n```\n把完整 JSON 贴回来,Skill 根据 issues 数组逐项处理。\n\nFile v1.0.0:profiles/agentplan.json\n\n{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"https://ark.cn-beijing.volces.com/api/plan\",\n    \"ANTHROPIC_MODEL\": \"ark-code-latest\",\n    \"ANTHROPIC_SMALL_FAST_MODEL\": \"ark-code-latest\",\n    \"DISABLE_TELEMETRY\": \"1\",\n    \"DISABLE_BUG_COMMAND\": \"1\",\n    \"DISABLE_AUTOUPDATER\": \"1\",\n    \"DISABLE_NON_ESSENTIAL_MODEL_CALLS\": \"1\",\n    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\": \"1\"\n  },\n  \"apiKeyHelper\": \"cat ~/.claude/.token\"\n}\n\nFile v1.0.0:profiles/custom.json\n\n{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"__BASE_URL__\",\n    \"ANTHROPIC_MODEL\": \"__MODEL__\",\n    \"ANTHROPIC_SMALL_FAST_MODEL\": \"__MODEL__\",\n    \"DISABLE_TELEMETRY\": \"1\",\n    \"DISABLE_BUG_COMMAND\": \"1\",\n    \"DISABLE_AUTOUPDATER\": \"1\",\n    \"DISABLE_NON_ESSENTIAL_MODEL_CALLS\": \"1\",\n    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\": \"1\"\n  },\n  \"apiKeyHelper\": \"cat ~/.claude/.token\"\n}","readmeExcerpt":"Skill: Claude Code All-in-One for arkclaw Owner: bao2200220 Summary: ArkClaw / OpenClaw 沙箱里一键安装并配置 Anthropic Claude Code CLI 的 all-in-one skill。当用户提到 claude code、claude-code、想在 ArkClaw 里用 Anthropic 官方 Coding CLI、提到 ark-code-la... Tags: agentplan:1.0.0, anthropic:1.0.0, ark:1.0.0, arkclaw:1.0.0, claude-code:1.0.0, cli:1.0.0, code-review:1.0.0, coding:1.0.0, latest:1.0.1, openclaw:1.0.0 Version history: v1.0.1 | 2026-0","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"用户触发本 skill(说\"用 claude code 帮我...\" / \"/claude-code-allinone ...\" / 报错 等)\n        │\n        ▼\n  ┌───────────────────────────┐\n  │ 运行 scripts/doctor.sh    │  ← 每次触发都会运行,检测当前环境状态\n  └─────────────┬─────────────┘\n                │\n       当前配置状态 = ?\n                │\n  ┌─────────────┼──────────────────────────────────┐\n  │             │                                  │\n\"全新环境\"    \"本 skill 配过\"                   \"用户手动配过\"\n(从未配置)   (之前用本 skill 配置的)          (有 settings.json/config 但不是本 skill 写的)\n  │             │                                  │\n  ▼             ▼                                  ▼\n路径 ①        路径 ②                             路径 ③\n首次配置      正常使用(绝大多数情况)              兼容性检查\n  │             │                                  │\n  │             │                                  ├─ 检查通过 → 保留不动,转到路径 ②\n  │             │                                  └─ 检查不通过 → 告知用户具体问题,\n  │             │                                       询问是否用本 skill 重新配置\n  │             │\n问用户选择   智能判定 review/build 模式\nA/B 菜单     然后执行: claude -p \"用户的需求\" --permission-mode plan\n  │              或:    claude -p \"用户的需求\" --allowedTools <白名单>\n  ▼\n完成配置后\n转到路径 ②"},{"language":"json","snippet":"{\n  \"claude_installed\": true,\n  \"claude_version\": \"2.1.143\",\n  \"claude_outdated\": false,\n  \"config_state\": \"clean | managed-by-skill | user-managed\",\n  \"active_profile\": \"agentplan | custom | null\",\n  \"user_settings_summary\": {\"base_url\": \"...\", \"model\": \"...\"} | null,\n  \"user_health\": {\"is_healthy\": true/false, \"checks\": [...], \"issues\": [...]} | null,\n  \"onboarding_complete\": true,\n  \"ark_api_key_set\": true,\n  \"custom_api_key_set\": false,\n  \"ark_managed_env\": true,\n  \"ark_agent_plan\": true,\n  \"ark_coding_plan\": false,\n  \"ark_api_key_managed\": true,\n  \"ark_model_id\": \"ark-code-latest\",\n  \"issues\": []\n}"},{"language":"json","snippet":"{\n  \"ark_managed_env\": true,\n  \"ark_agent_plan\": true,\n  \"ark_coding_plan\": false,\n  \"ark_api_key_set\": true,\n  \"ark_api_key_managed\": true,\n  \"ark_model_id\": \"ark-code-latest\"\n}"},{"language":"text","snippet":"准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。\n\n请粘贴 AgentPlan 控制台分配的专属 Key:"},{"language":"bash","snippet":"bash scripts/setup-agentplan.sh \"$KEY\""},{"language":"bash","snippet":"bash scripts/setup-custom.sh \"$BASE_URL\" \"$KEY\" \"$MODEL\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: claude-code-allinone\ndescription: ArkClaw / OpenClaw 沙箱里一键安装并配置 Anthropic Claude Code CLI 的 all-in-one skill。当用户提到 claude code、claude-code、想在 ArkClaw 里用 Anthropic 官方 Coding CLI、提到 ark-code-latest / 火山方舟 AgentPlan 接 claude code、想切换 claude code 的模型供应商、需要做代码 review / 代码改写、或者说\"我没有 Anthropic 官方 API Key 但想用 claude code\"时,使用本 skill。\nlicense: MIT\n---\n\n# Claude Code All-in-One for ArkClaw\n\n让 ArkClaw / OpenClaw 用户在**对话框里**完成 Claude Code CLI 的全部配置 — 不用打开终端、不用手写 `~/.claude/settings.json`、不用记 base_url。本 skill 还内置 **review / build 双模式智能路由**:\n\n- **review 模式**(`--permission-mode plan`):只读分析,不改文件,适合代码审查 / 评估改造方案\n- **build 模式**(`--allowedTools` 白名单):允许 Read / Edit / Write / Bash 等动手工具,适合实现代码\n\n---\n\n## 整体流程(决策树)\n\n```\n用户触发本 skill(说\"用 claude code 帮我...\" / \"/claude-code-allinone ...\" / 报错 等)\n        │\n        ▼\n  ┌───────────────────────────┐\n  │ 运行 scripts/doctor.sh    │  ← 每次触发都会运行,检测当前环境状态\n  └─────────────┬─────────────┘\n                │\n       当前配置状态 = ?\n                │\n  ┌─────────────┼──────────────────────────────────┐\n  │             │                                  │\n\"全新环境\"    \"本 skill 配过\"                   \"用户手动配过\"\n(从未配置)   (之前用本 skill 配置的)          (有 settings.json/config 但不是本 skill 写的)\n  │             │                                  │\n  ▼             ▼                                  ▼\n路径 ①        路径 ②                             路径 ③\n首次配置      正常使用(绝大多数情况)              兼容性检查\n  │             │                                  │\n  │             │                                  ├─ 检查通过 → 保留不动,转到路径 ②\n  │             │                                  └─ 检查不通过 → 告知用户具体问题,\n  │             │                                       询问是否用本 skill 重新配置\n  │             │\n问用户选择   智能判定 review/build 模式\nA/B 菜单     然后执行: claude -p \"用户的需求\" --permission-mode plan\n  │              或:    claude -p \"用户的需求\" --allowedTools <白名单>\n  ▼\n完成配置后\n转到路径 ②\n```\n\n### 三条路径说明\n\n| 路径 | 什么时候走 | 用户需要做什么 |\n|---|---|---|\n| ① 首次配置 | 环境里从未配过 claude code,或用户主动要求重新配置 | **默认直接走 AgentPlan**,优先尝试自动从 ArkClaw 沙箱环境变量(`ARK_AGENT_PLAN` / `ARK_CODING_PLAN` / `ARK_API_KEY`)零感知配好;失败再让用户粘贴一次 Key。**用户主动说\"我有自己的 Anthropic 兼容网关 / 别的 base_url / 自定义模型\"时才走 custom 分支** |\n| ② 正常使用 | 已经配好了(本 skill 配的,或用户自配且体检通过) | **什么都不用做**,直接说编程需求即可 |\n| ③ 兼容性检查 | 用户手动写过 settings.json,本 skill 首次遇到 | 如果检查通过:无需操作;如果不通过:选择重配或自己修 |\n\n---\n\n## 重要:正常使用时不要打扰用户\n\n当配置已经就绪(路径 ②)时,**不允许**:\n\n- 复述配置流程\n- 解释 skill 在做什么\n- 询问\"是否需要切换 / 是否需要重新配置\"\n- 把 skill 的存在感暴露给用户\n\n**只做**:\n1. 运行 `bash scripts/ensure-onboarding.sh`(确保 `~/.claude.json` 标记 onboarding 完成)\n2. 调用 `bash scripts/run.sh \"用户的完整需求原文\"`(自动判定 review / build 模式)\n3. 把 claude code 的输出原样返回给用户\n\n**用户体验**应该等同于\"直接跟 claude code 对话\",完全感觉不到 skill 的存在。\n\n只有这三种情况允许打扰用户:\n1. 首次配置(环境全新)\n2. 兼容性检查不通过,且无法自动修复\n3. 用户主动说\"切换 / 换一家 / 切到 X\"\n\n---\n\n## 触发方式\n\n- **自然语言**:\"用 claude code 帮我重构 utils.py\" / \"claude code review 一下这个 PR\"\n- **显式命令**:`/claude-code-allinone <你的编程需求>`(强制走本 skill)\n- **报错触发**:用户贴出 `command not found: claude` / `Onboarding has not been completed` / `ANTHROPIC_AUTH_TOKEN is not set` 等\n\n---\n\n## 详细流程\n\n#"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn73hber135x9wjpmgv9x9hedx83fpcn\",\n  \"slug\": \"claude-code-allinone\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1779025798513\n}"},{"path":"references/providers.md","content":"# 模型供应商参考 — 引导用户选择 / 收集 Key\n\n> 这份文档给主对话 Agent 看:用户问\"我应该选哪个\"或\"这个 Key 怎么搞\"时,从这里抄答案。\n\n## 核心原则:默认 AgentPlan,不主动列菜单\n\n减少用户感知是本 skill 的核心设计。**首次配置时一律默认走 AgentPlan**,只让用户粘贴一次 Key。**只有**用户主动表达\"我有自己的 Anthropic 兼容网关 / 自定义 base_url / 别的 Key\"等语义时,才进入 custom 分支。\n\n⛔ 禁止主动给用户列 A/B 菜单。这会增加感知,违背\"无感配置\"原则。\n\n---\n\n## A. 火山方舟 AgentPlan(默认 / 无需询问)\n\n**这是首次配置的默认路径。** 不要问用户\"要选 A 还是 B\",直接说:\n\n> \"准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。请粘贴 AgentPlan 控制台分配的专属 Key:\"\n\n- **base_url**: `https://ark.cn-beijing.volces.com/api/plan`\n- **协议**: 原生 Anthropic Messages 协议(Claude Code 直连即可)\n- **模型名**: `ark-code-latest`(智能路由,后端自动分发到 Kimi K2 / Doubao / DeepSeek / GLM 等)\n- **Key 来源**:登录 [AgentPlan 控制台](https://www.volcengine.com/) → 找到\"AgentPlan 专属 Key\"页面 → 复制\n- **优点**:\n  - 套餐内额度,不需要单独付费\n  - 智能路由,后端帮你选最合适的模型\n  - 境内 IDC 直连,延迟低\n- **限制**:\n  - Key 必须是 AgentPlan 控制台分配的\"专属 Key\",不能用普通 v3 API Key\n  - 不支持自定义 temperature / top_p\n\n### 配置命令\n```bash\nbash scripts/setup-agentplan.sh \"<AgentPlan 专属 Key>\"\n```\n\n### 引导话术(默认场景,**不**给 A/B 菜单)\n```\n准备给你配置 Claude Code,使用火山方舟 AgentPlan(套餐内额度,ark-code-latest 智能路由)。\n\n请粘贴你的 AgentPlan 专属 Key:\n\n📋 怎么获取 Key?\n   1. 登录火山方舟控制台\n   2. 进入 AgentPlan 模块\n   3. 找到\"专属 Key\"或\"分配 Key\"页面\n   4. 复制里面的 Key\n\n⚠️ 注意:这个 Key 跟普通的\"API Key 管理\"里的 Key 不是一回事,\n   AgentPlan 必须用专属 Key,普通 Key 会报 401。\n```\n\n---\n\n## B. 自定义 Anthropic 兼容网关(仅用户主动要求时)\n\n**触发条件**:用户语句里出现以下任一(或类似)语义,才进入这条分支。否则一律默认 AgentPlan,不询问。\n\n- \"我有自己的 / 我们公司的 / 我们自建的 网关 / base_url / 端点\"\n- \"我有别的 Anthropic 兼容 Key\"\n- \"用 claude-code-router / kimi-router / Bedrock / Vertex 出来的端点\"\n- \"不用 AgentPlan,我有自己的 Key\"\n- 用户**直接给出**了 base_url + Key + model 三件套\n\n⛔ 用户没说这些,**不要主动**问\"要不要用自定义网关\"。\n\n- **base_url**: 由用户提供\n- **协议**: 必须实现 Anthropic Messages 协议(`POST /v1/messages`)\n- **模型名**: 由用户提供\n- **典型场景**:\n  - 公司自建的 Anthropic 协议网关\n  - 第三方厂商提供的 Anthropic 兼容端点\n  - 自部署的 Anthropic 协议代理(claude-code-router 等)\n- **不适用场景**:\n  - OpenAI 协议端点(请去 codex-allinone)\n  - 普通 Chat Completions 接口(本 skill 不做协议转换)\n\n### 配置命令\n```bash\nbash scripts/setup-custom.sh \"<base_url>\" \"<Key>\" \"<model>\"\n```\n\n### 引导话术\n```\n请按顺序提供 3 个信息:\n\n1. base_url(网关地址,不含 /v1 后缀)\n   示例: https://my-gateway.example.com\n\n2. API Key\n   示例: sk-xxxxxxxxxxxxxxxx\n\n3. 模型名(网关上能识别的)\n   示例: claude-3-5-sonnet-20241022 / kimi-k2 / 自定义名\n\n可以一次贴出来,格式:\n  base_url=...\n  key=...\n  model=...\n```\n\nsetup-custom.sh 会自动:\n- 探测 `<base_url>/v1/messages` 是否可达 (curl POST 一次, 返回 200/400/422 视为通)\n- 把占位符 `__BASE_URL__` / `__MODEL__` 替换到 profile 文件\n- 备份旧 settings.json 后写入新内容\n\n---\n\n## 不支持的供应商(本 skill 不做)\n\n| 供应商 | 协议 | 应该用什么 |\n|---|---|---|\n| OpenAI 官方 | OpenAI Chat | codex-allinone(OpenAI 协议)|\n| 火山方舟 v3 普通 Key | OpenAI Chat | codex-allinone arkv3 模式 |\n| Kimi (Moonshot) | OpenAI Chat | codex-allinone kimi 模式 |\n| DeepSeek | OpenAI Chat | codex-allinone deepseek 模式 |\n| Anthropic 官方 (anthropic.com) | Anthropic | 境内 IDC 网络不通,无法使用 |\n| AWS Bedrock | Anthropic via AWS | (后续版本可能支持)|\n| Google Vertex | Anthropic via GCP | (后续版本可能支持)|\n\n---\n\n## Key 安全说明\n\nsetup 脚本会把 Key 存到 3 个位置(全部在用户家目录,不出沙箱):\n\n1. `~/.bashrc` 的 `export ARK_API_KEY=...` 或 `expor"},{"path":"references/routing-flow.md","content":"# 路由流程参考 — Skill 内部决策路径详解\n\n> 这份文档是给 Skill 调用方(主对话 Agent)看的:每次触发时该走哪条分支、判断的是什么、命中后跑哪个脚本。\n\n## 顶层路由(三条路径)\n\n每次 skill 被触发,**第一步**必须先跑 doctor.sh,根据它返回的 JSON 决定走哪一条。\n\n```\nbash scripts/doctor.sh > /tmp/cc_doctor.json\n```\n\n输出 JSON 关键字段:\n\n| 字段 | 含义 |\n|---|---|\n| `claude_installed` | claude CLI 是否已装 |\n| `claude_outdated`  | 装了但版本低于 2.1.0 |\n| `config_state`     | `clean` / `managed-by-skill` / `user-managed` |\n| `active_profile`   | 当前激活的 profile 名 (managed-by-skill 时) |\n| `user_health`      | user-managed 时的健康检查结果 |\n| `onboarding_complete` | `~/.claude.json` 是否已标记 onboarding 完成 |\n| `token_set`        | `~/.claude/.token` 是否非空 |\n| `issues[]`         | 问题列表(人话) |\n\n### 路径 ① 首次配置 (config_state == \"clean\")\n\n**核心原则:减少用户感知,默认走 AgentPlan,不主动列菜单。**\n\n- 必要时跑 install.sh\n- **默认直接走 AgentPlan**:只问用户一句\"请粘贴 AgentPlan 专属 Key\",拿到 Key 后跑 `setup-agentplan.sh`\n- **仅当用户主动表达**\"我有自己的 Anthropic 兼容网关 / 别的 base_url / 自定义模型 / 公司自建网关 / claude-code-router\"等关键词时,才走 custom 分支(`setup-custom.sh`)\n- ⛔ 用户没主动提\"自定义\"语义时,**禁止**主动给用户列 A/B 菜单 — 这违背\"默认 AgentPlan,无感配置\"原则\n- setup 脚本会自动把 config_state 切到 managed-by-skill,转到路径 ②\n\n### 自定义分支的触发关键词(仅供参考)\n\n只有用户语句里出现以下任一(或类似)语义,才走 custom 分支:\n\n- \"我有自己的 / 我们公司的 / 我们自建的 网关 / base_url / 端点\"\n- \"我有别的 Anthropic 兼容 Key\"\n- \"用 claude-code-router / kimi-router / Bedrock / Vertex\"\n- \"不用 AgentPlan,我有自己的 Key\"\n- 用户直接给出了 base_url + Key + model 三件套\n\n否则一律默认 AgentPlan,不询问。\n\n### 路径 ② 正常使用 (config_state == \"managed-by-skill\")\n\n- 跑 ensure-onboarding.sh (幂等,几乎无开销)\n- 跑 run.sh \"<用户需求>\"\n- 把 run.sh 的输出原样回给用户\n- ⛔ 不要解释流程,不要询问\"是否切换\",体验要等同于直接对话 claude code\n\n### 路径 ③ 兼容性检查 (config_state == \"user-managed\")\n\n读 `user_health.is_healthy`:\n\n- `true`  → 当作正常使用,转到路径 ②\n- `false` → 把 `user_health.issues[]` 展示给用户,询问是 A. 让本 skill 重配 还是 B. 自己修\n\n---\n\n## 二级路由 — review vs build 模式判定\n\nrun.sh 内部通过关键词扫描决定走哪个模式。\n\n| 触发关键词 | 模式 | claude 参数 |\n|---|---|---|\n| review / Review / REVIEW / 评审 / 审查 / 分析 / 评估 / 检查 / lint / 只读 / read-only | review | `--permission-mode plan` |\n| (其他所有情况) | build | `--allowedTools \"Read,Glob,Grep,LS,Bash,Edit,Write\"` |\n\n也可以由 Agent 显式指定:\n```bash\nbash scripts/run.sh --mode review \"审一下 utils.py\"\nbash scripts/run.sh --mode build  \"把这个 bug 修了\"\n```\n\n### 为什么要分模式?\n\n| 场景 | 不分模式的后果 |\n|---|---|\n| 用户只想做 PR review | 默认 build 会真去改文件,造成误改 |\n| 用户想动手实现 | 默认 plan 模式只输出方案不动手,用户要手动套一遍 |\n\nreview 模式的 `--permission-mode plan` 会让 claude 进入 \"看,但不改\" 状态。\nbuild 模式的 `--allowedTools` 白名单是 v3.1 现网验证过的最小可用集合,既能完成大多数编程任务,也不会误用危险工具。\n\n---\n\n## 防挂死三件套(必须遵守)\n\nrun.sh 启动 claude 时严格遵循:\n\n```bash\nnohup setsid claude -p \"...\" </dev/null > \"$LOG_FILE\" 2>&1 &\nCLAUDE_PID=$!\n\n# 轮询 PID,超过 110s 主动 kill -9\nelapsed=0\nwhile kill -0 \"$CLAUDE_PID\" 2>/dev/null; do\n  [ $elapsed -ge 110 ] && { kill -9 \"$CLAUDE_PID\"; break; }\n  sleep 1; elapsed=$((elapsed+1))\ndone\n\ncat \"$LOG_FILE\"\n```\n\n| 元素 | 作用 | 不能省 |\n|---|---|---|\n| `nohup setsid` | 完全脱离 controlling tty,不受父进程的信号影响 | 否则父 shell 退出会带走 claude |\n| `</dev/null`   | claude 的 stdin 接到 /dev/null,绝不等待输入 | 否则 claude 会陷入\"等用户回车\"挂死 |\n| `> log 2>&1`   | 所有输出落盘,后续 cat | 否则 buffer 满会 SIGPIPE 中断 |\n| 110s 轮询超时 | 极"},{"path":"references/troubleshooting.md","content":"# 故障排查 — 看 doctor.sh 的 issues / 看 claude code 报错信息,对照下表给用户处方\n\n> v3.1 现网验证后总结的踩坑清单。每条都给出\"原因 → 处方\"。\n\n## 按现象索引\n\n### 1. `command not found: claude`\n\n**原因**:npm 全局 bin 不在 PATH。\n\n**处方**:\n```bash\nbash scripts/install.sh   # install 会自动写 PATH 到 .bashrc\nsource ~/.bashrc\n```\n\n### 2. doctor.sh 显示 `claude_outdated=true`\n\n**原因**:claude code 版本 < 2.1.0,部分参数(如 `--permission-mode plan`)不存在。\n\n**处方**:\n```bash\nbash scripts/install.sh   # 会自动升级到最新\n```\n\n### 3. `Onboarding has not been completed`\n\n**原因**:`~/.claude.json` 缺少 `hasCompletedOnboarding: true`,Claude Code 在非交互模式 (`-p`) 下会直接 abort。\n\n**处方**:\n```bash\nbash scripts/ensure-onboarding.sh   # 幂等设置,可反复跑\n```\n\n每次 setup-* 脚本都会自动跑这一步,正常情况下用户碰不到。\n\n### 4. `ANTHROPIC_AUTH_TOKEN is not set` / `401 Unauthorized`\n\n**原因**:Key 没生效。可能的具体场景:\n- `~/.claude/.token` 文件不存在或为空\n- 当前 shell 没 source `~/.bashrc`(环境变量没生效)\n- 用户用了错误的 Key (AgentPlan 专属 Key vs 普通 v3 Key 混淆)\n\n**处方**:\n```bash\n# 看 token 文件\nls -la ~/.claude/.token\nwc -c < ~/.claude/.token   # 应该非 0\n\n# 看当前激活 profile 是哪个\ncat ~/.claude/active-profile\n\n# 重跑对应 setup\nbash scripts/setup-agentplan.sh \"<正确的 AgentPlan Key>\"\n# 或\nbash scripts/setup-custom.sh \"<base_url>\" \"<Key>\" \"<model>\"\n```\n\n### 5. `403 Forbidden` / 模型在某些 base_url 下不存在\n\n**原因**:base_url 与 Key 不匹配,或者 model 名错误。\n\n**处方**:\n- AgentPlan 路径必须 model = `ark-code-latest`\n- 自定义网关的 model 名必须是网关那边能识别的(常见误区:把 `claude-3-5-sonnet` 缩写成 `sonnet`)\n\n```bash\n# 看当前 settings.json\ncat ~/.claude/settings.json\n```\n\n### 6. ArkClaw / OpenClaw 沙箱里 claude 一直挂死,无任何输出\n\n**原因**:十有八九是主对话 Agent 调用 Skill 时叠加了 `pty: true`,导致 `</dev/null` 隔离失效,claude 在等 stdin。\n\n**处方**(给主对话 Agent 看):\n- 调用 run.sh 时 **不要** 在执行器里启用 PTY\n- 直接用 bash 执行 `bash /path/to/skill/scripts/run.sh \"<需求>\"`,不要走伪终端通道\n- run.sh 内部已经做好了 `nohup setsid + </dev/null + log file + 110s 超时` 三件套\n\n如果你不是用 Skill 调用,而是手工跑 claude:\n```bash\n# 错误示范\nclaude -p \"改个东西\"   # 在某些 sandbox 里会等 stdin,挂死\n\n# 正确示范\nnohup setsid claude -p \"改个东西\" --allowedTools \"Read,Edit,Write,Bash\" </dev/null > /tmp/claude.log 2>&1 &\nsleep 60\ncat /tmp/claude.log\n```\n\n### 7. claude 报 `Input must be provided through stdin or as a prompt argument`\n\n**原因**:你忘了 `-p`,或者 PTY 模式让 claude 以为要从 stdin 读。\n\n**处方**:\n- 必须用 `-p \"<prompt>\"` 传需求(而不是 echo \"...\" | claude)\n- Skill 调用方禁止 PTY\n\n### 8. claude 报 `unknown permission-mode: accept`\n\n**原因**:用了不存在的 mode 值。\n\n**合法值**:`acceptEdits | auto | bypassPermissions | default | dontAsk | plan`\n\n**处方**:本 skill 只用 `plan` (review 模式) 和 `--allowedTools` (build 模式),不要自己改其他 mode。\n\n### 9. build 模式跑完没改文件\n\n**可能原因**:\n- 用户的 prompt 里没有\"修改\"语义,claude 自己也判定不需要改\n- `--allowedTools` 白名单不够(比如要装 npm 包但白名单里没 Bash)\n- 工作目录不是预期目录\n\n**处方**:\n```bash\n# 显式指定工作目录\nbash scripts/run.sh --cwd /path/to/repo --mode build \"明确说要改什么\"\n\n# 看完整日志\nls -lt ~/.claude-runs | head -5\ncat ~/.claude-runs/run-build-XXX.log\n```\n\n### 10. review 模式 claude 输出了改文件的代码块,但没真改\n\n**这是预期行为**:`--permission-mode plan` 就是只读分析,只输出方案/diff,不真去改。\n如果用户想动手,改用 build 模式:\n```bash\nbash scripts/run.sh --mode build \"<需求>\"\n```\n\n### 11. `~/.claude/settings.json` 被覆盖,我之前的自定义配置丢了\n\n**原因**:setup-* / switch-p"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1159,"uniquenessScore":36,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T23:36:47.275Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T23:36:47.275Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-12T19:01:07.251Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}