gangvy d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
..
bin d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
docs d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
mcp d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
scripts d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
skills d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
.env.example d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
.gitignore be9ad83d13 整理工作区:企微助手新增输出目录标准模块;根目录文档归入 docs;忽略 node_modules 与本地资料 2 сар өмнө
.mcp.json d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
README.md d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
THIRD_PARTY_NOTICES.md be9ad83d13 整理工作区:企微助手新增输出目录标准模块;根目录文档归入 docs;忽略 node_modules 与本地资料 2 сар өмнө
package-lock.json d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
package.json d091f5ed31 更名:对外接口与网关 qiwe 改为 qiwei(工具名/路径/环境变量,旧 QIWE_* 环境变量保留兼容) 2 сар өмнө
wecom-cli-runtime.json be9ad83d13 整理工作区:企微助手新增输出目录标准模块;根目录文档归入 docs;忽略 node_modules 与本地资料 2 сар өмнө

README.md

企业微信助手技能包

提供两套相互独立的企业微信能力:

  1. 原有 全量接口清单 + Fmode 网关转发 + 扫码登录 + 包月订阅管理
  2. 新增 企业微信官方 CLI,用于会议、文档等官方机器人能力。

原有接口、登录和订阅请求仍统一经过:

Claude Code / MCP
  → Fmode 网关转发的企业微信接口
  → Fmode 网关完成鉴权、订阅校验和设备上下文处理
  → 企业微信服务

当前技能侧已经按 Fmode 网关协议实现;正式使用前需要在 Fmode 网关启用企业微信接口路由。

官方 CLI 是第二条独立通道:技能包不会修改官方程序,而是在首次使用时把固定版本下载到用户缓存;官方机器人凭据由 CLI 在本地加密保存,不经过 Fmode 网关。

组成

├── .mcp.json
├── .env.example
├── bin/qiwei-official-cli.js
├── wecom-cli-runtime.json
├── mcp/
│   ├── catalog/qiwei-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/
│           ├── qiwei-api-catalog-run.js
│           ├── qiwei-login-run.js
│           ├── qiwei-subscription-run.js
│           └── wecom-official-cli-run.js
├── skills/
│   ├── qiwei-api-catalog/SKILL.md
│   ├── qiwei-login/SKILL.md
│   ├── qiwei-capability-router/SKILL.md
│   ├── qiwei-official-meeting/SKILL.md
│   └── qiwei-official-doc/SKILL.md
├── docs/                             # 文档(specs/ guides/ generated/,规则见 OUTPUT-STANDARD.md)
│   └── OUTPUT-STANDARD.md
└── outputs/                          # 运行期生成文件,按类别归档,git 忽略

输出与目录标准

所有生成文件遵循 docs/OUTPUT-STANDARD.md

  • 运行期产物统一写入 outputs/<类别>/loginapi-callssubscriptionmeetingsdocsmessagessmoketmp),根目录可用 QIWEI_OUTPUTS_DIR 覆盖;
  • 覆盖型文件用 latest 模式(如 outputs/login/qiwei-login-qrcode.png),按次归档用 run 模式(outputs/<类别>/<YYYY-MM-DD>/<HHmmss>-<slug>/ + manifest.json);
  • 路径一律通过 mcp/src/core/output-paths.js 解析;
  • 校验:npm run outputs:validate

MCP 工具

工具 说明
qiwei_api_search 检索 100+ 个企业微信接口
qiwei_api_doc 查看参数、返回字段和调用模板
qiwei_api_call POST /api/qiwei/doApi,传 {uid, method, params}
qiwei_login_status GET /api/qiwei/login/status?uid=
qiwei_login_start POST /api/qiwei/login/start 并保存二维码
qiwei_login_check POST /api/qiwei/login/check
qiwei_login_verify POST /api/qiwei/login/verify
qiwei_subscription_status 查询订阅、席位、到期时间和余额
qiwei_subscribe 开通、续费或增购席位
qiwei_subscription_auto_renew 设置自动续费
qiwei_official_status 检查官方 CLI 下载与授权状态
qiwei_official_prepare 下载并缓存固定版本官方 CLI
qiwei_official_help 读取官方 category/method 帮助
qiwei_official_call 结构化调用官方通讯录、文档、会议、消息、日程和待办能力

官方 CLI 通道

官方 CLI 保持原样,不复制或修改官方 Skills。本技能包自己的会议、文档 Skills 通过统一 MCP 适配层调用 CLI。

运行时版本固定在 wecom-cli-runtime.json,默认安装到用户缓存:

  • Windows:%LOCALAPPDATA%\Fmode\qiwei-assistant\wecom-cli\<version>
  • macOS:~/Library/Caches/fmode/qiwei-assistant/wecom-cli/<version>
  • Linux:~/.cache/fmode/qiwei-assistant/wecom-cli/<version>

可以让 Skill 首次使用时调用 qiwei_official_prepare,也可以提前下载:

npm run wecom:install

首次使用官方能力需要完成一次企业微信扫码:

npm run wecom:init

检查状态:

npm run wecom:status

官方 CLI 的认证默认保存在 ~/.config/wecom,也可由 WECOM_CLI_CONFIG_DIR 覆盖。该认证与 Fmode token、QIWEI_UID 和个人企微设备登录完全独立。

鉴权和本地配置

  • 请求头统一为 Authorization: Bearer <Fmode token>
  • 优先自动读取 Claude Code 已配置的 Fmode NewAPI sk- token。
  • 也支持 QIWEI_AUTH_TOKENFMODE_API_KEYFMODE_API_TOKENNEWAPI_TOKEN 或平台 sessionToken。
  • QIWEI_API_BASE 默认 https://server.fmode.cn/api/qiwei
  • QIWEI_UID 是客户端设备别名;未配置时会生成随机稳定 uid,并写入 .env.local~/.claude/qiwei-credentials.json
  • 企业微信接口访问凭据和设备上下文由 Fmode 网关管理,不会出现在技能配置或返回结果中。

首次使用

  1. qiwei_subscription_status 检查订阅;
  2. 未订阅时调用 qiwei_subscribeseats 表示企微账号席位数;
  3. qiwei_login_start 生成二维码;
  4. 用户扫码后每 3–5 秒调用 qiwei_login_check
  5. 状态 10 时用 qiwei_login_verify 提交 6 位验证码;
  6. 状态 2 后用 qiwei_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 网关支持,qiwei_api_call 会拒绝这类接口。
  • /login/*/client/* 不允许通过 qiwei_api_call 透传,必须使用登录专用工具。
  • 服务端未挂载前,默认生产地址会返回不可用;可通过 QIWEI_API_BASE 指向测试环境。
  • 官方 CLI 首次下载需要 npm 网络访问,首次业务调用前需要独立完成企业微信机器人扫码授权。
  • 官方 CLI 通道失败不会替代或改变原有 Fmode 网关接口通道。