基于[ClaudeCode]源码魔改重建深度集成微信消息桥使微信用户可直接与 Claude 对话,Claude 也可主动向微信用户发送文字、图片和文件
基于Anthropic官方不情愿开源的ClaudeCode源码魔改 — Claude Code微信集成版(CyberClaude)
项目仓库:https://github.com/oocsoo/CyberClaude
微信saas服务平台:www.wechatbot.online (需付费,自行选择) ,亦可使用企业微信魔改!
基于 Anthropic Claude Code 源码重建,并深度集成微信消息桥,使微信用户可直接与 Claude 对话,Claude 也可主动向微信用户发送文字、图片和文件。(版权归Anthropic官方)
目录
架构概览
微信用户
│ 发送消息(文字/语音/图片)
▼
微信服务(WebSocket + HTTP API)
│
▼
interactive-bridge.ts ← 后台静默运行
│ 文字直接注入
│ 语音 → 腾讯云 ASR → 文字
│ 图片 → 阿里云 Qwen3 → 描述文字
▼
Claude Code REPL(交互式终端)
│ Claude 处理,可调用所有工具
│ 新加入工具: WechatSendImage / WechatSendFile
│ 如果star数超过1000,我再把语音回复功能加上!
▼
回复文本 → 微信用户
环境要求
| 依赖 | 版本 |
|---|---|
| Bun | ≥ 1.3.5 |
| Node.js | ≥ 24.0.0 |
| 微信saas服务 | WebSocket + HTTP API |
环境变量(必填):
ANTHROPIC_AUTH_TOKEN=sk-ant-... # Claude API Key
ANTHROPIC_BASE_URL=https://... # API 代理地址(如使用中转)
快速开始
# 1. 安装依赖
bun install
# 2. 复制并填写微信配置
cp wechat-config.json.example wechat-config.json
# 编辑 wechat-config.json(见下方说明)
# 3. 启动(自动挂载微信桥)
bun run dev -- --dangerously-skip-permissions
启动后终端进入交互模式,同时后台自动连接微信 Hook 服务,微信消息会直接注入 CyberClaude
微信配置
编辑项目根目录的 wechat-config.json:
{
"robotId": "wxid_xxxxxxxxxxxxxxxx",
"authorization": "wx_xxxxxxxxxxxxxxxx",
"serverIp": "your.websocket.server.ip",
"serverPort": 5555,
"apiHost": "your.api.server.host",
"allowFrom": [],
"name": "Claude 助手",
"aliyunApiKey": "sk-xxxxxxxxxxxxxxxx"
}
| 字段 | 必填 | 说明 |
|---|---|---|
robotId |
✅ | 微信机器人的 wxid(如 wxid_abc123) |
authorization |
✅ | API 鉴权 Token |
serverIp |
✅ | Websocket服务器 IP |
serverPort |
WebSocket 服务器 端口,默认 5555 |
|
apiHost |
✅ | 微信 HTTP API 服务器地址(ip:port 或域名) |
allowFrom |
白名单 wxid 列表,空数组表示接受所有人消息 | |
name |
机器人名称(仅用于日志显示) | |
aliyunApiKey |
阿里云 DashScope Key,用于图片识别;留空则跳过图片消息 |
启动方式
交互式模式(推荐)
bun run dev -- --dangerously-skip-permissions
- 进入 Claude Code 交互终端
- 项目目录存在
wechat-config.json时,自动在后台启动微信桥 - 微信消息注入终端,Claude 回复后同步发回微信
仅 Claude Code(不启动微信桥)
bun run dev
不带 --dangerously-skip-permissions 时,不会自动启动微信桥。
消息类型支持
| 微信消息类型 | MsgType | 处理方式 |
|---|---|---|
| 文字 | 1 | 直接注入 Claude |
| 图片 | 3 | 阿里云 Qwen3 图像理解 → 描述文字注入 Claude |
| 语音 | 34 | 腾讯云 ASR 语音识别 → 文字注入 Claude |
| 其他(文件、链接等) | 其他 | 忽略 |
语音识别(腾讯云 ASR):
- 格式:SILK(微信原生格式)
- 语言:16k 中文普通话
- 识别失败时向用户回复错误提示
图片识别(阿里云 Qwen3 Omni):
- 通过阿里云 DashScope 实时 WebSocket API
- 输出:详细的图片内容描述,作为 Claude 的输入上下文
- 未配置
aliyunApiKey时回复提示信息
Claude 主动发送能力
微信桥启动后,Claude 可主动调用以下工具向微信用户发送内容:
WechatSendImage — 发送图片
参数:
source 图片来源,支持:
- 本地绝对路径(自动上传 OSS 后发送)
- 公网 HTTP/HTTPS URL(直接发送)
示例场景:用户说"截图发我一下"→ Claude 截图保存本地 → 调用此工具自动上传并发送。
WechatSendFile — 发送文件
参数:
source 文件来源,支持本地路径或公网 URL
fileName (可选) 微信端显示的文件名,省略时自动从路径提取
支持任意格式:PDF、Word、Excel、ZIP、代码文件等。
这两个工具仅在微信桥连接后对 Claude 可见,不影响普通 Claude Code 会话。
模型配置
优先级顺序
模型选择遵循以下优先级(从高到低):
1. /model 命令(会话中动态切换) ← 最高优先级
2. --model CLI 启动参数
3. ANTHROPIC_MODEL 环境变量
4. settings.json 中的 model 字段
5. 订阅等级默认值 ← 最低优先级
模型别名
启动或切换模型时可使用简短别名,无需记忆完整模型 ID:
| 别名 | 对应模型 | 说明 |
|---|---|---|
opus |
claude-opus-4-6 | 最强模型 |
sonnet |
claude-sonnet-4-6 | 均衡模型(默认) |
haiku |
claude-haiku-4-5-20251001 | 最快/最省 |
best |
claude-opus-4-6 | 永远指向最强模型 |
opus[1m] |
claude-opus-4-6 + 100 万 token 上下文 | 需付费订阅 |
sonnet[1m] |
claude-sonnet-4-6 + 100 万 token 上下文 | 需付费订阅 |
opusplan |
计划模式 → Opus,普通模式 → Sonnet | 自动切换 |
[1m] 后缀可附加在任意别名后,启用 100 万 token 扩展上下文(仅限付费订阅,不支持第三方 API)。
环境变量
模型选择
# 指定主模型(别名或完整 ID)
ANTHROPIC_MODEL=sonnet
ANTHROPIC_MODEL=claude-opus-4-6
# 覆盖各级别默认模型(用于锁定具体版本)
ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-6
ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6
ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5-20251001
# 覆盖内部快速小模型(token 估算等轻量任务使用)
ANTHROPIC_SMALL_FAST_MODEL=claude-haiku-4-5-20251001
API 连接
# 自定义 API 端点(中转代理、私有部署)
ANTHROPIC_BASE_URL=https://your-proxy.example.com
# API Key
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_AUTH_TOKEN=sk-ant-oat01-... # Bearer Token 格式(部分代理使用)
# 自定义请求头
ANTHROPIC_CUSTOM_HEADERS='{"X-Custom": "value"}'
AWS Bedrock
# 启用 Bedrock 模式
CLAUDE_CODE_USE_BEDROCK=true
# 区域配置
AWS_DEFAULT_REGION=us-east-1
ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION=us-west-2 # 单独指定 Haiku 区域
# 认证
AWS_BEARER_TOKEN_BEDROCK=your-token # Bearer Token 认证(替代 IAM)
CLAUDE_CODE_SKIP_BEDROCK_AUTH=true # 跳过认证(仅测试/代理)
Google Cloud Vertex AI
# 启用 Vertex AI 模式
CLAUDE_CODE_USE_VERTEX=true
# 项目与区域
ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project
CLOUD_ML_REGION=us-central1
# 按模型指定区域(优先级最高)
VERTEX_REGION_CLAUDE_HAIKU_4_5=us-east1
VERTEX_REGION_CLAUDE_3_5_SONNET=europe-west1
# GCP 认证
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
CLAUDE_CODE_SKIP_VERTEX_AUTH=true # 跳过认证(仅测试)
Azure AI Foundry
# 启用 Foundry 模式
CLAUDE_CODE_USE_FOUNDRY=true
# 端点(二选一)
ANTHROPIC_FOUNDRY_RESOURCE=my-resource # 自动构建 https://my-resource.services.ai.azure.com
ANTHROPIC_FOUNDRY_BASE_URL=https://... # 直接指定完整 URL
# 认证
ANTHROPIC_FOUNDRY_API_KEY=your-azure-key # 不设则使用 Azure AD DefaultAzureCredential
CLAUDE_CODE_SKIP_FOUNDRY_AUTH=true # 跳过认证(仅测试)
功能开关
# 禁用旧版模型 ID 自动重映射(保留旧 ID 直接使用)
CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP=true
# 禁用快速模式
CLAUDE_CODE_DISABLE_FAST_MODE=true
CLI 参数
# 启动时指定模型
bun run dev -- --model opus
bun run dev -- --model claude-sonnet-4-6
# 恢复默认
bun run dev -- --model default
# 打印模式的备用模型(主模型过载时自动切换)
bun run dev --print "你好" --model sonnet --fallback-model haiku
# 思维模式
bun run dev -- --thinking enabled # 开启深度推理
bun run dev -- --thinking adaptive # 自动判断是否推理
bun run dev -- --thinking disabled # 关闭推理
会话中切换模型(/model 命令)
/model # 打开交互式选择器
/model opus # 直接切换到 Opus
/model sonnet[1m] # 切换到 Sonnet 百万上下文版
/model default # 恢复默认模型
/model --info # 显示当前模型信息
settings.json 模型字段
位置:~/.claude/settings.json
{
"model": "sonnet",
"availableModels": [
"opus",
"sonnet",
"haiku",
"claude-sonnet-4-6"
],
"modelOverrides": {
"claude-opus-4-6": "us.anthropic.claude-opus-4-6-v1:0",
"claude-sonnet-4-6": "anthropic.claude-sonnet-4-6:0"
}
}
| 字段 | 说明 |
|---|---|
model |
默认模型,支持别名或完整 ID |
availableModels |
企业白名单,限制可用模型范围;未设置则不限制 |
modelOverrides |
Anthropic ID → 云厂商 ID 映射(主要用于 Bedrock ARN) |
各 API 提供商的 Bedrock 模型 ID 参考
| Anthropic 模型 | AWS Bedrock ID |
|---|---|
| claude-opus-4-6 | us.anthropic.claude-opus-4-6-v1:0 |
| claude-sonnet-4-6 | us.anthropic.claude-sonnet-4-6-v1:0 |
| claude-haiku-4-5-20251001 | us.anthropic.claude-haiku-4-5-v1:0 |
OpenAI 兼容模式
Claude Code 内置 OpenAI 格式适配层,可对接任何兼容 POST /v1/chat/completions 接口的服务,包括 OpenRouter、Azure OpenAI、本地 Ollama、各类中转代理等。
工作原理
启用后,Claude Code 会在发请求前自动:
- 将 Anthropic 格式的请求(
/v1/messages)转换为 OpenAI 格式(/v1/chat/completions) - 将 OpenAI SSE 流的响应转换回 Anthropic 格式
- 工具调用、多轮对话全程透明转换,Claude 无感知
方式一:环境变量(推荐)
# 启用 OpenAI 兼容模式
CLAUDE_CODE_COMPATIBLE_API_PROVIDER=openai
# 接口地址(到 /v1 之前的部分)
ANTHROPIC_BASE_URL=https://openrouter.ai/api
# 该服务的 API Key
ANTHROPIC_API_KEY=sk-or-v1-...
# 该服务上的模型名称
ANTHROPIC_MODEL=gpt-4o
方式二:配置文件持久化
写入 ~/.claude/config.json(全局配置文件):
{
"customApiEndpoint": {
"provider": "openai",
"baseURL": "https://openrouter.ai/api",
"apiKey": "sk-or-v1-xxxxxxxx",
"model": "anthropic/claude-3-5-sonnet",
"savedModels": [
"anthropic/claude-3-5-sonnet",
"gpt-4o",
"deepseek/deepseek-r1"
]
}
}
方式三:会话中动态切换
在交互终端中使用斜杠命令:
/add-model gpt-4o # 添加并切换到指定模型
/add-model deepseek/deepseek-r1 # 支持任意 OpenAI 兼容模型名
/remove-model gpt-4o # 从保存列表中移除
常见服务配置示例
OpenRouter(支持数百个模型):
ANTHROPIC_BASE_URL=https://openrouter.ai/api
ANTHROPIC_API_KEY=sk-or-v1-...
ANTHROPIC_MODEL=anthropic/claude-opus-4 # 或 gpt-4o、deepseek/r1 等
CLAUDE_CODE_COMPATIBLE_API_PROVIDER=openai
Azure OpenAI:
ANTHROPIC_BASE_URL=https://<your-resource>.openai.azure.com/openai/deployments/<deployment>
ANTHROPIC_API_KEY=<azure-api-key>
ANTHROPIC_MODEL=gpt-4o
CLAUDE_CODE_COMPATIBLE_API_PROVIDER=openai
Ollama(本地模型):
ANTHROPIC_BASE_URL=http://localhost:11434
ANTHROPIC_API_KEY=ollama # 任意非空值即可
ANTHROPIC_MODEL=llama3.2 # 已拉取的模型名
CLAUDE_CODE_COMPATIBLE_API_PROVIDER=openai
CLAUDE中转代理:
ANTHROPIC_BASE_URL=https://4399code.com/claudecode
ANTHROPIC_AUTH_TOKEN=sk-ant-oat01-...
# 如果代理兼容 Anthropic 原生格式,不需要设置 CLAUDE_CODE_COMPATIBLE_API_PROVIDER
注意事项
| 项目 | 说明 |
|---|---|
| 请求路径 | 兼容模式发送到 baseURL/v1/chat/completions,原生模式发送到 baseURL/v1/messages |
| 模型名称 | 必须填写目标服务识别的模型名,不能用 Claude Code 的别名(如 opus) |
| 工具调用 | 自动在 Anthropic tool_use ↔ OpenAI tool_calls 之间转换 |
| 思维模式 | OpenAI 兼容模式不支持扩展思维(--thinking),此参数会被忽略 |
| 1M 上下文 | [1m] 后缀不适用于第三方模型 |
| 优先级 | 配置文件中的 provider 字段优先于 CLAUDE_CODE_COMPATIBLE_API_PROVIDER 环境变量 |
快速模式(Fast Mode)
- 支持 Opus 4.6 / Sonnet 4.6 / Haiku 4.5
- 切换到不支持的模型时自动关闭
- 需要付费订阅,免费账号不可用
计划模式自动升级
- 使用
haiku时进入计划模式,自动升级到 Sonnet - 使用
opusplan别名:计划模式用 Opus,普通模式用 Sonnet
旧版模型 ID 重映射
claude-opus-4、claude-opus-4-0、claude-opus-4-1自动重映射到当前 Opus 版本- 仅限第一方 API;Bedrock/Vertex/Foundry 原样传递
- 设置
CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP=true可禁用此行为
目录结构
Claude-Code/
├── src/
│ ├── wechat-mode/
│ │ ├── interactive-bridge.ts # 交互式微信桥(核心)
│ │ │ WebSocket 接收、ASR/图片识别、
│ │ │ 天翼云 OSS 上传、REPL 消息注入
│ │ └── index.ts # 独立无头模式(备用)
│ │
│ ├── tools/
│ │ ├── WechatSendImageTool/ # 发图片工具
│ │ └── WechatSendFileTool/ # 发文件工具
│ │
│ ├── utils/
│ │ ├── wechatHook.ts # 桥接钩子(零依赖单例)
│ │ └── messageQueueManager.ts # REPL 消息注入队列
│ │
│ ├── entrypoints/
│ │ └── cli.tsx # 启动入口,自动挂载微信桥
│ │
│ ├── main.tsx # onTurnComplete 回调注册
│ └── screens/REPL.tsx # 交互式终端(React + Ink)
│
├── wechat-config.json # 微信配置(不提交到 git)
├── wechat-config.json.example # 配置模板
└── package.json
工作原理
消息接收链路
cli.tsx检测到--dangerously-skip-permissions+wechat-config.json存在,调用startWechatInteractiveBridge()interactive-bridge.ts建立 WebSocket 连接到微信 Hook 服务- 收到消息后:
- 文字:直接进入步骤 4
- 语音:下载 SILK 文件 → 腾讯云 ASR → 文字
- 图片:下载图片 → 阿里云 Qwen3 → 描述文字
- 发送方的
wxid入队(pendingWechatSenders),文字内容通过enqueue()注入 REPL - REPL 将文字作为用户输入提交给 Claude
回复发送链路
- Claude 完成回复,
REPL.tsx触发onTurnComplete(messages) main.tsx调用notifyWechatTurnComplete(messages)interactive-bridge.ts的回调从messages中提取最后一条助手文本- 从队列取出对应
wxid,调用微信 API 发送回复 - 若 Claude 调用了
WechatSendImage/WechatSendFile,文件先上传 OSS 再发送
权限机制
微信桥下 Claude 拥有完整工具权限(bypassPermissions),无需逐条确认,可直接执行 Bash 命令、读写文件、调用所有工具。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)