提供两套相互独立的企业微信能力:
原有接口、登录和订阅请求仍统一经过:
Claude Code / MCP
→ Fmode 网关转发的企业微信接口
→ Fmode 网关完成鉴权、订阅校验和设备上下文处理
→ 企业微信服务
当前技能侧已经按 Fmode 网关协议实现;正式使用前需要在 Fmode 网关启用企业微信接口路由。
官方 CLI 是第二条独立通道:技能包不会修改官方程序,而是在首次使用时把固定版本下载到用户缓存;官方机器人凭据由 CLI 在本地加密保存,不经过 Fmode 网关。
├── .mcp.json
├── .env.example
├── bin/qiwe-official-cli.js
├── wecom-cli-runtime.json
├── mcp/
│ ├── catalog/qiwe-endpoints.json
│ └── src/
│ ├── server.js
│ ├── core/api-catalog.js
│ ├── core/wecom-cli-runtime.js
│ ├── core/credentials.js
│ ├── providers/fmode-wecom-gateway.js
│ ├── providers/wecom-official-cli.js
│ └── tools/
│ ├── qiwe-api-catalog-run.js
│ ├── qiwe-login-run.js
│ ├── qiwe-subscription-run.js
│ └── wecom-official-cli-run.js
├── skills/
│ ├── qiwe-api-catalog/SKILL.md
│ ├── qiwe-login/SKILL.md
│ ├── qiwe-capability-router/SKILL.md
│ ├── qiwe-official-meeting/SKILL.md
│ └── qiwe-official-doc/SKILL.md
├── docs/ # 文档(specs/ guides/ generated/,规则见 OUTPUT-STANDARD.md)
│ └── OUTPUT-STANDARD.md
└── outputs/ # 运行期生成文件,按类别归档,git 忽略
所有生成文件遵循 docs/OUTPUT-STANDARD.md:
outputs/<类别>/(login、api-calls、subscription、meetings、docs、messages、smoke、tmp),根目录可用 QIWE_OUTPUTS_DIR 覆盖;outputs/login/qiwe-login-qrcode.png),按次归档用 run 模式(outputs/<类别>/<YYYY-MM-DD>/<HHmmss>-<slug>/ + manifest.json);mcp/src/core/output-paths.js 解析;npm run outputs:validate。| 工具 | 说明 |
|---|---|
qiwe_api_search |
检索 100+ 个企业微信接口 |
qiwe_api_doc |
查看参数、返回字段和调用模板 |
qiwe_api_call |
POST /api/qiwe/doApi,传 {uid, method, params} |
qiwe_login_status |
GET /api/qiwe/login/status?uid= |
qiwe_login_start |
POST /api/qiwe/login/start 并保存二维码 |
qiwe_login_check |
POST /api/qiwe/login/check |
qiwe_login_verify |
POST /api/qiwe/login/verify |
qiwe_subscription_status |
查询订阅、席位、到期时间和余额 |
qiwe_subscribe |
开通、续费或增购席位 |
qiwe_subscription_auto_renew |
设置自动续费 |
qiwe_official_status |
检查官方 CLI 下载与授权状态 |
qiwe_official_prepare |
下载并缓存固定版本官方 CLI |
qiwe_official_help |
读取官方 category/method 帮助 |
qiwe_official_call |
结构化调用官方通讯录、文档、会议、消息、日程和待办能力 |
官方 CLI 保持原样,不复制或修改官方 Skills。本技能包自己的会议、文档 Skills 通过统一 MCP 适配层调用 CLI。
运行时版本固定在 wecom-cli-runtime.json,默认安装到用户缓存:
%LOCALAPPDATA%\Fmode\qiwe-assistant\wecom-cli\<version>~/Library/Caches/fmode/qiwe-assistant/wecom-cli/<version>~/.cache/fmode/qiwe-assistant/wecom-cli/<version>可以让 Skill 首次使用时调用 qiwe_official_prepare,也可以提前下载:
npm run wecom:install
首次使用官方能力需要完成一次企业微信扫码:
npm run wecom:init
检查状态:
npm run wecom:status
官方 CLI 的认证默认保存在 ~/.config/wecom,也可由 WECOM_CLI_CONFIG_DIR 覆盖。该认证与 Fmode token、QIWE_UID 和个人企微设备登录完全独立。
Authorization: Bearer <Fmode token>。sk- token。QIWE_AUTH_TOKEN、FMODE_API_KEY、FMODE_API_TOKEN、NEWAPI_TOKEN 或平台 sessionToken。QIWE_API_BASE 默认 https://server.fmode.cn/api/qiwe。QIWE_UID 是客户端设备别名;未配置时会生成随机稳定 uid,并写入 .env.local 和 ~/.claude/qiwe-credentials.json。qiwe_subscription_status 检查订阅;qiwe_subscribe,seats 表示企微账号席位数;qiwe_login_start 生成二维码;qiwe_login_check;10 时用 qiwe_login_verify 提交 6 位验证码;2 后用 qiwe_api_call 调业务接口。业务调用只传清单中的业务参数:
{
"id": "msg.sendText",
"params": {
"toId": "168...",
"content": "hello",
"isNoNeedRead": false
}
}
npm install
npm run check
npm run smoke
npm run outputs:validate
冒烟测试会启动本地 mock Fmode 网关,验证 Authorization、uid/method/params 请求信封、登录和订阅接口,不访问真实服务。
同时会使用本地假 CLI 验证官方运行时状态、结构化参数传递和命令注入防护,不访问真实企业微信。
cloud 模块的 multipart 文件直传尚未由 Fmode 网关支持,qiwe_api_call 会拒绝这类接口。/login/*、/client/* 不允许通过 qiwe_api_call 透传,必须使用登录专用工具。QIWE_API_BASE 指向测试环境。