mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-17 22:05:50 +00:00
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
7.4 KiB
7.4 KiB
WeChat Channel 接入计划
目标
将 E:\claude-code\cc-weixin 迁入本仓库,作为 built-in plugin + built-in stdio MCP channel server 接入,支持:
- 微信消息推送到 Claude Code 会话
- Claude Code 通过 MCP 工具回复微信消息
- 使用
--channels plugin:weixin@builtin在会话级启用
MVP 初版曾暂不包含远程工具审批(permission relay),但当前实现已将该能力补齐。
进度更新
2026-04-19(最新)
当前落地状态:
- built-in weixin plugin 已完成接入
ccb weixin serve|login|access pairCLI 链路已完成- weixin MCP stdio server、消息轮询、
reply/send_typing已完成 --channels plugin:weixin@builtin启用链路已完成- ChannelsNotice 对 builtin plugin 的误报修复已完成
- permission relay 已完成并通过闭环验证:
- server 声明
experimental["claude/channel/permission"] - 接收
notifications/claude/channel/permission_request - 通过微信发送审批提示
- 解析
yes/no <request_id> - 回发
notifications/claude/channel/permission
- server 声明
- permission relay 的关键路由与 capability 判定问题已修复并验证通过:
- 不再把权限请求盲发给“最后活跃聊天”,而是携带当前会话最近 channel 消息的
chat_id/source_server作为路由提示 claude/channel/permission的 capability 判定已统一为 truthy 语义
- 不再把权限请求盲发给“最后活跃聊天”,而是携带当前会话最近 channel 消息的
当前验证状态:
bun run typecheck已通过bun run build已通过- weixin 相关定向测试已通过
- 手工 E2E 已通过
- 微信端审批提示与 allow/deny 闭环已在真实会话中验证通过
当前结论:
- 本计划的 MVP 范围已完成并达到验收标准
- 后续如有新增工作,主要为体验优化、补充文档细节或扩展能力,不再属于当前 MVP 阻塞项
2026-04-19 14:11:18 +08:00
当前落地状态:
- 已创建分支:
feat/wx-channel - 已完成 built-in weixin plugin 接入
- 已完成
ccb weixin serve|login|access pairCLI 链路 - 已完成 weixin MCP stdio server、消息轮询、
reply/send_typing - 已完成
--channels plugin:weixin@builtin启用链路 - 已完成 ChannelsNotice 对 builtin plugin 的误报修复
- 已完成 permission relay:
- server 声明
experimental["claude/channel/permission"] - 接收
notifications/claude/channel/permission_request - 通过微信发送审批提示
- 解析
yes/no <request_id> - 回发
notifications/claude/channel/permission
- server 声明
- 已修复 permission relay 的两个关键问题:
- 不再把权限请求盲发给“最后活跃聊天”,而是携带当前会话最近 channel 消息的
chat_id/source_server作为路由提示 claude/channel/permission的 capability 判定已统一为 truthy 语义
- 不再把权限请求盲发给“最后活跃聊天”,而是携带当前会话最近 channel 消息的
当前验证状态:
bun run typecheck已通过bun run build已通过- weixin 相关定向测试已通过
- 当前剩余工作主要是继续做手工 E2E,确认微信端审批提示与 allow/deny 闭环在真实会话里稳定可用
架构决策
采用 built-in plugin,而不是外部 marketplace 插件
原因:
- 本仓库已有内建插件注册链路:
src/plugins/builtinPlugins.ts、src/plugins/bundled/index.ts - 本仓库已有 channels 协议与 gate:
src/services/mcp/channelNotification.ts、src/services/mcp/useManageMCPConnections.ts cc-weixin已具备experimental["claude/channel"]能力与notifications/claude/channel通道契约- 内建插件更容易跨平台启动内部 MCP server,不依赖
${CLAUDE_PLUGIN_ROOT}或/bin/sh
MVP 范围
包含:
- 微信登录与状态管理
- 微信消息轮询与入站推送
reply/send_typing工具--channels plugin:weixin@builtin启用链路- 微信端 permission relay(审批提示 + yes/no 回复)
- 文档与测试补齐
不包含:
- 通用 plugin userConfig 面板化
主仓库新增文件
建议新增目录:src/services/weixin/
新增文件:
src/services/weixin/types.tssrc/services/weixin/accounts.tssrc/services/weixin/api.tssrc/services/weixin/login.tssrc/services/weixin/cliLogin.tssrc/services/weixin/media.tssrc/services/weixin/monitor.tssrc/services/weixin/pairing.tssrc/services/weixin/send.tssrc/services/weixin/server.tssrc/plugins/bundled/weixin.tssrc/types/qrcode-terminal.d.ts(如需要)
主仓库需修改文件
package.json- 添加
qrcode-terminal
- 添加
src/plugins/bundled/index.ts- 注册 built-in weixin plugin
src/main.tsx- 增加内部 server 启动入口(建议
weixin serve)
- 增加内部 server 启动入口(建议
src/services/mcp/channelAllowlist.ts- 让
weixin@builtin能通过内建来源校验
- 让
src/services/mcp/__tests__/channelNotification.test.ts- 增加 builtin weixin 场景
README.mddocs/features/channels.md- 补微信启用说明
从 cc-weixin 迁入的文件来源
优先迁入:
plugins/weixin/src/types.tsplugins/weixin/src/accounts.tsplugins/weixin/src/api.tsplugins/weixin/src/login.tsplugins/weixin/src/media.tsplugins/weixin/src/monitor.tsplugins/weixin/src/pairing.tsplugins/weixin/src/send.ts
需改造后迁入:
plugins/weixin/server.tsplugins/weixin/src/cli-login.ts
不直接迁入:
.claude-plugin/plugin.json.claude-plugin/marketplace.json.mcp.json
Capability 与协议
MVP 必需
在 weixin MCP server 中保留:
capabilities.experimental["claude/channel"] = {}
支持的协议:
- 入站推送:
notifications/claude/channel - 工具:
reply、send_typing
当前已实现的增强
当前 weixin MCP server 已实现:
capabilities.experimental["claude/channel/permission"] = {}
并已补齐:
notifications/claude/channel/permission_requestnotifications/claude/channel/permission
用户侧启用方式
- 在
/plugin启用 built-inweixin - 运行 weixin 登录/配置 skill
- 启动会话时传入:
ccb --channels plugin:weixin@builtin
实施顺序
- 迁入
src/services/weixin/*业务层 - 改造
server.ts为主仓库内部 MCP server - 在
src/main.tsx增加weixin serve - 注册
src/plugins/bundled/weixin.ts - 修改
channelAllowlist.ts - 补登录 skill / 文档 / 测试
- 手工 E2E 验证
测试计划
单元测试
accounts.test.tspairing.test.tsmedia.test.tssend.test.tsmonitor.test.tsserver.test.ts
集成测试
- built-in plugin 注册与启用
--channels plugin:weixin@builtingate 流程- headless / print 路径的 channel 可见性
手工 E2E
- 启用 built-in
weixin - 微信扫码登录
- 启动
ccb --channels plugin:weixin@builtin - 微信发消息
- Claude 会话收到 channel 消息
- 模型调用
reply - 微信收到回复
风险点
channelAllowlist.ts当前偏向 marketplace plugin,需要对builtin来源做兼容- built-in plugin 需要稳定的内部 server 启动入口,不能依赖外部插件目录
- Windows 下不能复用
/bin/sh启动链路 qrcode-terminal需要补类型与依赖- 登录状态目录若继续使用
~/.claude/channels/weixin/,需确认是否接受
验收标准
weixin能作为 built-in plugin 出现在本仓库插件体系中ccb --channels plugin:weixin@builtin可注册 channel- 微信消息能进入 Claude Code 会话
reply工具能把消息发回微信- 类型检查与相关测试通过