Skip to content

ylytdeng/openclaw-tool-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

OpenClaw Tool Proxy

解决 2026-04-04 Anthropic 封杀 OpenClaw tool_use 导致的 400 错误("You're out of extra usage")。

原理

Anthropic 通过识别请求中的 tool name 组合(如 readexecmessage 等 OpenClaw 标准工具名)来检测第三方工具使用。

本 proxy 在 OpenClaw 和 Claude CLI proxy 之间做一层透明转换:

  • 请求方向:将 tool name 替换为自然的业务名称(如 readget_file_content),同时清洗 system prompt 中的 OpenClaw 标识
  • 响应方向:将别名还原为原始名称,OpenClaw 无感知
OpenClaw → :18320 (tool-alias proxy) → :8317 (cli-proxy) → Anthropic

快速开始

1. 下载

git clone https://github.com/ylytdeng/openclaw-tool-proxy.git
cd openclaw-tool-proxy

2. 启动

node tool-rename-proxy.js

默认监听 127.0.0.1:18320,转发到 127.0.0.1:8317(Claude CLI proxy)。

可通过环境变量配置:

PORT=18320 CLI_PROXY_URL=http://127.0.0.1:8317 node tool-rename-proxy.js

3. 配置 OpenClaw

修改 ~/.openclaw/openclaw.json,将 claude-max provider 的 baseUrl 改为 proxy 地址:

{
  "models": {
    "providers": {
      "claude-max": {
        "baseUrl": "http://127.0.0.1:18320/v1",
        ...
      }
    }
  }
}

重启 OpenClaw 即可。

4. 设为系统服务(可选)

mkdir -p ~/.config/systemd/user

cat > ~/.config/systemd/user/openclaw-tool-proxy.service << 'EOF'
[Unit]
Description=OpenClaw Tool Alias Proxy
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /path/to/tool-rename-proxy.js
Restart=always
RestartSec=3

[Install]
WantedBy=default.target
EOF

systemctl --user daemon-reload
systemctl --user enable --now openclaw-tool-proxy

验证

# 不经过 proxy — 400
curl http://127.0.0.1:8317/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-opus-4-6","messages":[{"role":"user","content":"hi"}],"tools":[{"type":"function","function":{"name":"read","description":"x","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"exec","description":"x","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"message","description":"x","parameters":{"type":"object","properties":{}}}}]}'

# 经过 proxy — 200
curl http://127.0.0.1:18320/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-opus-4-6","messages":[{"role":"user","content":"hi"}],"tools":[{"type":"function","function":{"name":"read","description":"x","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"exec","description":"x","parameters":{"type":"object","properties":{}}}},{"type":"function","function":{"name":"message","description":"x","parameters":{"type":"object","properties":{}}}}]}'

自定义别名

编辑 tool-rename-proxy.js 中的 ALIASES 对象即可自定义映射。建议使用看起来像正常业务逻辑的名称。

注意事项

  • 需要有效的 Claude Max 订阅和 CLI proxy(claude CLI 提供的 OpenAI 兼容端口)
  • OpenClaw 更新可能重置 baseUrl 配置,更新后需检查
  • 零依赖,只需 Node.js

About

Bypass Anthropic tool_use ban for OpenClaw - transparent tool name alias proxy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors