Copilot→Anthropic 代理服务

researcher agent 起源、Resley 持续打磨的 Copilot 协议代理 + Dashboard。利用 GitHub Copilot Enterprise 上游免 Anthropic API Key 调 Claude;2026-04-19 升级为多模型 + 多用户 + 配额计费的小型分发平台。

服务信息

属性
仓库~/projects/github-copilot-anthropic-proxy(git)
主服务端口4819https://api.eagle.openclaws.co.uk
进程node server.mjs(systemd / pm2)
数据库SQLite,~/projects/github-copilot-anthropic-proxy/proxy-logs.db(v2 schema)
Dashboardhttps://api.eagle.openclaws.co.uk/(Logto SSO)
User 自助/user(API Key 登录)

2026-05-11 Copilot tool-call JSON parser 比 Anthropic 严格(fries 踩)

Hermes 走 eagle/Copilot 上游时偶发 400 {"error":{"message":"Invalid JSON format in tool call arguments","code":"invalid_tool_call_format"}},Anthropic 直连同 prompt 不报。常见触发:

  • 字符串里有裸换行 / 制表符 / 控制字符没转义成 \n \t
  • 嵌入代码块时未转义引号或反斜杠
  • 数组/对象当字符串传(应该是 array 的字段塞了 string)
  • 多余 trailing comma 或缺逗号

Copilot 上游的 JSON parser 比 Anthropic 严格,长 prompt + 嵌入大段代码/markdown 时尤其容易踩。Hermes 当前的处置:报错后立刻 retry(多半好)+ 把可疑长字符串改 base64 或 file ref 绕过;proxy 层不做自动修补(保持透传可观测)。

2026-05-09 Claude Code CLI 2.1.114 → 2.1.138(修硬编码 thinking.type=enabled

ottor 升 @anthropic-ai/claude-code 2.1.114 → 2.1.138。旧版 SDK 在请求体里硬编码 thinking.type: "enabled",但 eagle 上游的 Claude 4.6 / 4.7 / 4.7-1m 系列已统一要求 thinking.type: "adaptive",旧值 → 上游 400 unsupported thinking.type。CC 2.1.138 改成按模型路由:4.5 仍发 enabled,4.6+ 自动切 adaptive

升级后 claude --model claude-opus-4.7-1m-internal 直跑 eagle 端点 200。同期确认 claude-opus-4.7-1m-internal 已在 Copilot/eagle 16 模型列表里暴露给 OpenClaw(详见 openclaw-config 04-29 / 05-04 章节)。

2026-04-29 微信支付开通 + OpenClaw provider 接入

  • 微信支付:作为 wx-gateway 业务方 copilot-proxy 开支付。paymentEnabled=truemaxAmountFen=20000(200 元上限)、defaultExpiresIn=1800s(30 min)、webhookUrl=https://api.eagle.openclaws.co.uk/api/wx/payment-webhookpersonalQrUrl=...copilot-proxy-a9ea9aa0.jpg。同日新加签名 contract test(wx-gateway T-CONTRACT-1)保住三方对齐。
  • OpenClaw provider:在 ottor-laptop 的 OpenClaw 配置里新增 copilot-proxy provider(baseUrl 同上 /v1api: openai-completionsauthHeader: false),暴露 16 个模型(GPT-5.5/5.x-codex / Claude Opus 4.7-1m / Sonnet/Haiku / Gemini 3.x / grok-code-fast-1)。详见 openclaw-config 04-29 章节。
  • 2026-05-04:ottor-laptop 把这个 provider key 改名 copilot-proxyeagle(短一截),主/fallbacks/models 全跟着改,新机器一键 jq 脚本已沉淀。详见 openclaw-config 05-04 章节。

协议双栈与模型路由(2026-04-19)

端点协议客户端
POST /v1/messagesAnthropicClaude Code、Anthropic SDK
POST /v1/chat/completionsOpenAIGPT 客户端、OpenAI SDK
GET /v1/models通用13 个模型声明(3 家 provider)

实测可用 8/13 模型(Copilot 上游决定):

  • claude-sonnet-4 / claude-sonnet-4-6
  • claude-opus-4-7 / claude-opus-4-7-20250715(2026-04-17 上线)
  • gpt-4o / gpt-4o-mini
  • gemini-2.5-pro
  • claude-haiku-3.5 / claude-opus-4 / gpt-5 / o1 / o3-mini / gemini-2.0-flash:上游 400 model_not_supported

Anthropic ↔ OpenAI SSE 双向流式转换在 proxy 内做;tool_use / usage 字段已对齐。

已知 effort 限制

claude-opus-4.7 上游 只接受 effort=medium,传 high/xhigh 返回 400。proxy 层不做 remap(设计取舍——保持透传可观测)。Hermes 默认 reasoning_effort: medium

API Key 即身份(2026-04-19)

无账号密码体系,API Key 就是身份

用途
api_keys_v2sk-proxy-* 前缀,含 role / balance_tokens / free_quota / monthly_used
usage_ledger每次调用扣额度的明细账本
recharge充值/调额记录
pricing.json各模型 token 单价(官方 × 0.8 倍率,热更新)
  • 新 Key 默认免费额度:10000 tokens
  • 历史 Key 一律不限量(迁移自 api-keys.json
  • Quota Preflight:每次请求前查余额,超限返回 402
  • 每月 1 号自动重置免费额度

Dashboard

Admin 后台(4 个 tab,2026-04-19)

Tab功能
Logs全局请求日志,filter + 表头排序 + 分页
Charts总量、Model、API Key、Token User 四张图
KeysAPI Key CRUD(创建/封禁/调额度)
Usage全局用量趋势(按用户 / 模型 / 天)
Pricingpricing.json 编辑器
Audit操作审计日志

User 自助(/user

API Key 登录后只看自己:/user/me/user/usage/user/logs/user/stats。数据严格隔离。

关键 UI 修复

  • Sticky theadthead sticky top 改为 0(容器内)+ 去掉容器 max-height 双滚动条
  • Load More 按钮:底部紫色按钮,每次 100 条(之前 500),后端 limit cap 同步从 200 → 1000
  • 401 自动恢复:fetch 拦截器 + Logto isAuthenticated() 重建 session cookie
  • Live 增量轮询since_id 只拉新行,filter 切换走全量
  • API Key / Token User 用量图:按 api_key_name / token_name 分组的条形图

数据库优化(2026-04-17)

紧急救场:proxy-logs.db 1.9GB / 6873 行 → 平均 275KB/行(请求/响应 body 是大头),磁盘 94%。

Pragma
journal_modedeleteWAL
synchronousFULLNORMAL
cache_size2 MB64 MB
mmap_size0256 MB
索引仅 ts/model+ token_name / api_key_name / errors 部分索引

存档策略scripts/archive-bodies.mjs,cron 每天 04:00): 保留最近 1000 行完整 body + 所有 error 完整 body,其余只留元数据;磁盘 > 85% 自动 VACUUM。结果:1.9GB → 239MB(-87%),磁盘 94% → 89%。

Dev 分支生命周期(2026-04-19)

为做 4 阶段升级开了独立 dev:

  • 分支 dev,端口 5819,独立 systemd 服务 copilot-proxy-dev.service,worktree 在 ~/projects/copilot-proxy-dev
  • 域名 https://api-dev.eagle.openclaws.co.uk(Logto 需新加 callback redirect URI)
  • 4 阶段 subagent 串行:①多模型支持 ②Key=身份+配额 ③用户 dashboard ④Admin 后台
  • 每阶段 Claude Code session_id 记录,commit 16 个,新增 +2986 行,51/51 测试通过
  • 全部完成后合并 main 并清理:dev 分支删除、worktree 删除、Caddy api-dev 路由移除、systemd dev 服务停用

合并后 db 损坏(合并时 WAL 异常,integrity_check 报页错误),用 iterdump 重建:旧 1.5GB → 新 340MB,10k 条 logs 全保留,备份 proxy-logs.db.bad.<ts>

销售化改造(草案,2026-04-19 在讨论)

闲鱼卖 token,定位 Claude Code 专用 + 13 模型一卡通用 + 透明后台

套餐价格折算
体验卡¥9.9≈ ¥16.5 官方价
日常包¥29≈ ¥48
码农包¥99≈ ¥165(主推)
豪华包¥299≈ ¥498

差异化卖点:原厂 Copilot 通道(非逆向 / 拼车号)、按 Key 透明后台、子 Key 限额、月卡反 token 海。封面已用 Azure gpt-image-1.5 出图。

历史里程碑

  • 2026-04-06 — researcher agent 完成原型 copilot-anthropic-proxy.mjs,CST 时间戳 + SQLite 持久化 + 时间/模型筛选 + 模型统计卡片
  • 2026-04-16 — Resley 让 Claude Code 加 4 个 dashboard 增强(API Key 图、Token User 图、Load More、表头排序),删除 server.mjs L642-643 自动补 max_tokens 5000 的旧逻辑
  • 2026-04-17 — Opus 4.7 上线(claude-opus-4-7-20250715)、Load More 后端 limit cap bug、DB 大优化、archive-bodies cron
  • 2026-04-19 — 4 阶段升级(多模型 / Key 身份 / 用户面板 / Admin),合并 main,准备闲鱼卖 token
  • 2026-04-21 — macOS 客户端踩坑记录(见下)

macOS Keychain 凭证优先级(2026-04-21)

Claude Code 在 macOS 上把 OAuth token 存进 Keychain(service Claude Code / account 用户名),优先级高于 ANTHROPIC_BASE_URL / ANTHROPIC_API_KEY 环境变量。结果:明明 zshrc 里指了本代理,Claude Code 仍走官方账号扣费。

清除命令:

security delete-generic-password -s "Claude Code" -a "<mac 用户名>"

清完重启会话才回到代理 base url。Hermes 启动 Claude Code 也必须先 source ~/.zshrc 才能拿到代理 key。

相关页面