一个 Go 单文件,把闲置 M365 Copilot 接进 Claude Code
很多手头有微软 M365 Copilot 商业订阅的朋友,日常大多只在网页版或 Office 侧边栏把它当问答工具。想要接入 Claude Code、Cursor 或自己的 Agent 时,往往无从下手,因为微软官方压根没有开放标准的开发接口。
我自己在使用 Claude Code 时经常遇到这个痛点。官方接口按 Token 计费,跑几轮代码重构或者长上下文排查,账单数字就蹭蹭上涨。既然每月都在付 M365 的固定订阅费,能不能把手头的模型资源榨取出来,变成开发工具能直接调用的标准接口。
顺着这个思路排查,我发现了开源项目 M365-Copilot2API。它是一个用 Go 语言编写的单文件自托管网关,任务非常纯粹,就是把微软内部私有的 ChatHub WebSocket 协议,实时翻译成任何客户端都能调用的 OpenAI 与 Anthropic 兼容接口。
破壁思路
微软官方并未公开 Copilot 网页端的接口文档,底层跑的是一套私有 ChatHub 协议,所有交互都通过 WebSocket 长连接传输。
这就好比微软在自家围墙里拉了一根专用对讲电话线。外部客户端拿着 HTTP 的标准消息格式想要寄信,门卫根本不会理会。
这个开源网关在本地搭建了一个轻量翻译站。外部客户端发来标准请求,网关在后台与微软建立 WebSocket 连接,负责心跳保活、解析上游事件流,并将微软私有的工具调用映射为标准 Function Calling。对 Claude Code 来说,中间转换完全透明,流式打字与工具调度就像在调用原生接口一样顺畅。
增量绝活
如果只做单纯的协议转发,跑编程 Agent 依然会非常吃力。因为像 Claude Code 这类工具,每次请求都会把对话历史、代码片段和终端结果全量打包推送。
如果每次请求都在云端新建对话窗口,重复上传数万字符的上下文不仅延迟极高,而且很快就会在云端堆积大量废弃会话,极易触发上游风控。
这个项目最亮眼的设计在于「内容键会话复用」机制。网关在本地为每轮对话提取上下文指纹。当它识别出新请求的长文本与前次对话前缀一致时,不会新建窗口,而是直接复用已有会话,只把本次新增的一两句指令作为增量推送过去。这套机制大幅降低了响应延迟,配合后台自动清理闲置会话,云端也不会无序膨胀。
三步上手
项目没有复杂的运行时依赖,官方直接提供了各平台的预编译二进制包。自己部署只需三步。
第一步:启动网关二进制
在终端直接执行对应平台的文件,服务默认会监听在本地端口。
# 启动本地网关(默认监听 127.0.0.1:4141) |
第二步:完成微软账号绑定
在浏览器打开本地面板 http://127.0.0.1:4141,默认管理员密码为 admin123,首次登录会提示修改。
账号授权完全不需要手动抓 Cookie 或凭证,点击授权直接跳转微软官方 OAuth 页面,完成标准企业账号登录确认即可。手头有多个账号还可以继续添加,网关会自动轮询与故障转移。
第三步:接入客户端工具
在控制台生成专属 API Key,然后在开发工具中配置。以 Claude Code 为例,在配置文件中填入本地地址与密钥:
{ |
配置完成后在终端启动 Claude Code,就能直接调用 M365 Copilot 背后的算力资源,流式生成和工具执行都十分顺畅。
边界与坑
在实际体验中,有两点需要保持清醒预期。
首先是开源许可与合规红线。作者在项目中采用了带有非商业限制的开源协议,并在首页明确强调,严禁将本项目用于商业 API 转售或付费中继。微软对商业反代向来严控,一旦涉及倒卖极易招致封号或法律风险。该项目最合理的定位始终是极客个人自用,或者内部小团队为了提高生产力进行的自托管实验。
其次是网络环境稳定性。由于需要与微软云端保持 WebSocket 长连接,部署机器最好拥有干净稳定的网络出口。网络剧烈波动可能导致长连接中断,建议在客户端合理设置超时时间。
把原本锁在办公全家桶里的 AI 能力释放到专业的代码编辑器里,能让每个月付出的订阅费用产生更高的工程价值。如果你手头正好有闲置的商业订阅,花上几分钟把服务跑起来,就能给自己的工具链添一员免去账单焦虑的得力助手。














