wuzf/claude-channels-patch
Platform-specific configuration:
{
"mcpServers": {
"claude-channels-patch": {
"command": "npx",
"args": [
"-y",
"claude-channels-patch"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
English version: README.en.md
> 免责声明:本项目仅供学习和研究使用。 > 请勿将其用于你不拥有或未获授权分析的软件或服务。
这是一个针对 Claude Code 的二进制补丁,可在无需 claude.ai OAuth 认证的情况下启用 --channels 功能。
Claude Code 的 --channels 参数允许 MCP 服务器向当前会话推送实时消息,例如 Telegram 机器人插件可以把聊天消息直接转发给 Claude。不过,这个功能被三层检查所限制:
| 限制项 | 检查内容 | 为什么会阻止 | |------|---------------|---------------| | 功能开关 | 通过 GrowthBook 检查 tengu_harbor | 默认值为 false;当 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 时无法访问 | | OAuth | accessToken 检查 | 需要登录 claude.ai,会阻止 API key 或第三方代理用户 | | Allowlist | Channel allowlist ledger | 没有 GrowthBook 时,服务端批准列表为空 |
默认情况下,脚本会优先尝试整体改写 channel decision function:保留 MCP capability check,并直接让后续流程返回 register。如果无法安全定位该函数,再回退到原来的等长字节替换方案。
python patch.py --binary /path/to/claude# 应用补丁(自动检测所有已安装的二进制)
python patch.py
# 只检查检测结果和将采用的补丁策略,不修改文件
python patch.py --check
# 对指定二进制路径应用补丁
python patch.py --binary /path/to/claude
# 强制使用整体 decision-function 补丁策略
python patch.py --strategy decision
# 强制使用 legacy 等长字节替换策略
python patch.py --strategy legacy
# 恢复原始状态
python patch.py revert打完补丁后,使用 channels 启动 Claude Code:
claude --channels plugin:telegram@claude-plugins-officialClaude Code 的二进制是一个 Node.js SEA(Single Executable Application),其中包含两份打包后的 JS 文件。脚本支持两种补丁策略,在 auto 模式下会优先选择语义更完整的方案:
脚本会定位 channel decision function,保留最前面的 claude/channel capability check,然后把函数体后半段改写成直接返回 register。这个策略更接近“保留协议层检查,去掉业务限制”的语义。
如果你只想看脚本会采用哪种策略,而不实际写入文件,可以执行:
python patch.py --check如果无法安全定位 decision function,脚本会回退到原来的 5 处稳定代码模式替换,并在两份 bundle 副本上分别应用(总计 10 处修改):
Loading reviews...