SkillAgentSearch skills...

Anyclaw

如何让anyrouter为openclaw服务

Install / Use

/learn @shufu-yes/Anyclaw
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Anyrouter Proxy — Claude Code CLI 伪装代理

一个 Node.js 反向代理脚本,让任意 Anthropic API 客户端(如 OpenClaw)通过 anyrouter.top 的 Claude Code CLI 验证。

它解决什么问题

anyrouter.top 只接受来自 Claude Code CLI 的请求。它通过多层验证判断请求是否"真的"来自 Claude Code:

  1. URL 必须带 ?beta=true
  2. 必须有特定的 anthropic-beta flags
  3. 请求体必须包含 Claude Code 的完整系统提示 + 74 个标准工具
  4. Authorization: Bearer(大写 B)
  5. 特定格式的 metadata.user_id

普通 API 调用(curl、SDK、OpenClaw)全部会被拒绝,返回 invalid claude code request 或伪装成 负载已达上限

工作原理

调用方 (OpenClaw等)                     anyrouter.top
      │                                      ▲
      │  原始请求                              │  伪装后的请求
      │  - openclaw 系统提示                   │  - Claude Code 系统提示
      │  - 23 个小写工具                       │  + 调用方上下文追加
      │  - model: claude-opus-4-6[1m]         │  - 74 个 PascalCase 工具
      ▼                                      │  - model: claude-opus-4-6
   ┌──────────────────────┐                   │
   │  anyrouter_proxy.mjs │───────────────────┘
   │                      │
   │  请求方向:            │  响应方向:
   │  · 注入 billing header│  · Read → read
   │  · 注入 CC 系统提示    │  · Bash → exec
   │  · 替换为 74 个 CC 工具│  · WebSearch → web_search
   │  · 追加调用方上下文    │  · ...SSE 流逐行转换
   │  · 去掉 [1m] 后缀     │
   │  · 加 ?beta=true      │
   │  · Bearer 大写 B      │
   └──────────────────────┘

请求方向(调用方 → anyrouter)

| 操作 | 说明 | |------|------| | System | 注入完整 Claude Code 系统提示(含 billing header),追加调用方原始上下文 | | Tools | 替换为 74 个 Claude Code 标准工具(PascalCase,含完整 schema) | | URL | 自动追加 ?beta=true | | Headers | 重建为 Claude Code CLI 标准头(User-Agentanthropic-beta 等) | | Auth | x-api-key / authorization: bearer 统一转为 Authorization: Bearer(大写 B) | | Model | 去掉 [1m][200k] 等上下文窗口后缀 | | Metadata | 生成随机 user_id(不泄露个人信息) |

响应方向(anyrouter → 调用方)

模型用 Claude Code 工具名(PascalCase)回复,代理在 SSE 流中逐行映射回调用方的工具名:

| Claude Code | → | OpenClaw | |-------------|---|----------| | Read | → | read | | Write | → | write | | Edit | → | edit | | Bash | → | exec | | WebSearch | → | web_search | | WebFetch | → | web_fetch | | Agent | → | sessions_spawn | | ... | | ... |

用法

# 启动(默认端口 18889)
node anyrouter_proxy.mjs

# 自定义端口
PORT=8080 node anyrouter_proxy.mjs

启动后输出:

Anyrouter Proxy on :18889
  Home: /Users/xxx | Darwin 24.3.0 | /bin/zsh
  Upstream: https://anyrouter.top
  Tools: 74 | System: 3 blocks

OpenClaw 配置

~/.openclaw/openclaw.jsonmodels.providers 中配置:

{
  "anyrouter": {
    "baseUrl": "http://0.0.0.0:18889/",
    "apiKey": "sk-你的anyrouter密钥",
    "api": "anthropic-messages",
    "models": [
      {
        "id": "claude-opus-4-6",
        "name": "Claude Opus 4.6",
        "reasoning": true,
        "input": ["text"],
        "contextWindow": 200000,
        "maxTokens": 16384,
        "api": "anthropic-messages"
      }
    ]
  }
}

通用 curl 测试

curl -sN -X POST http://localhost:18889/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-你的密钥" \
  -d '{"model":"claude-opus-4-6","messages":[{"role":"user","content":"Hi"}]}'

环境要求

  • Node.js ≥ 18(需要原生 fetch 和 ESM import 支持)
  • 无需安装任何 npm 依赖,零依赖单文件

脚本特性

  • 单文件:74 个工具定义 + 系统提示模板全部内联,不依赖外部 JSON 文件
  • 无硬编码路径homedir()platform()release() 运行时动态获取
  • 无个人信息metadata.user_id 随机生成,不含真实用户标识
  • SSE 流转换:响应中逐行处理 Server-Sent Events,实时映射工具名

anyrouter 验证机制速查

| 错误信息 | 真实含义 | |---------|---------| | invalid claude code request | 缺 tools / tools 数量不够 / 系统提示不完整 | | 负载已达上限 (429) | 工具名不对 / 缺关键字段 / 请求体不够完整(伪装验证失败) | | 未提供令牌 | 认证头格式不对 | | 正常 SSE 流 (200) | 通过 ✅ |

排查思路

如果 anyrouter 更新后脚本失效,按以下步骤排查:

  1. 抓包对比:临时修改 ~/.claude/settings.jsonANTHROPIC_BASE_URL 指向本地 capture proxy,运行 claude -p "test" 捕获真实请求
  2. 逐项比对:URL 参数、headers、anthropic-beta 值、工具列表、系统提示、metadata 格式
  3. 二分排除:从完整请求开始,逐步精简,找到通过验证的最小集合
View on GitHub
GitHub Stars7
CategoryDevelopment
Updated11d ago
Forks2

Languages

JavaScript

Security Score

70/100

Audited on Mar 26, 2026

No findings