## 概述 / Overview 两件事:新增「企业微信助手」Agent(自带 15 个技能),并修正 `wecom-cli` 条目钉在 6 月快照的 ref 漂移。 Two changes: adds the **WeCom Assistant** agent (bundling 15 skills), and fixes the `wecom-cli` entry whose pinned ref was stuck on a June snapshot. ## 1. 新增企业微信助手 Agent 覆盖企业微信 **14 类服务、95 个方法**:消息、群聊历史、通讯录、日程、会议、待办、邮件、在线文档、在线表格、智能表格、智能文档、文档管理、微盘、媒体文件。 **采用内联形态 + 自带私有技能**:Agent 安装对 `agents/<id>/` 整目录递归复制且 `skills/` 不在排除集合里,因此装 Agent 即带全部技能,用户无需再单独获取技能合集。 ### 技能集(15 个,约 5000 行) - 基于上游 [wecom-cli](https://github.com/WecomTeam/wecom-cli) 官方 Skill(MIT,© WecomTeam)改写,每个技能末尾保留归属声明 - **新增 `wecom-chat`**:补齐上游零覆盖的群聊历史读取 - 补齐上游未覆盖的 `message.send`、`doc.create`,方法覆盖达 **95/95** - 修正上游三处文档漂移:邮件能力描述与实际相反、会议室参数名已过时、`title_highlight` 字段不存在 ### 相对上游的核心增量:风险治理 - 26 个对外可见或不可逆的方法逐个写明**执行前确认要求** - 4 个条件升级方法给出**参数级判据**,而非按方法名一刀切 - 文档权限扩散两项加重处理,涉及**企业外可见**时单独再确认一次 - 内部标识禁止外露,不因用户索要而放宽 - 拒绝导出可识别到具体自然人的隐私字段 ### 三条真机实测得出、上游未覆盖的硬约束 1. 机器人**只能写入/修改自己创建的数据**,真人创建的只能读 2. 每次响应携带的 `extra_identity_context` **禁止透露给用户** 3. 权限错误(`850002`/`851008`/`853006`)**不得重试**,须将 `help_message` **逐字原样**转给用户 ## 2. 修正 wecom-cli 条目 ref 漂移 `source.ref` 原钉在 2026-06-28 的 `72e14f7`,该快照只有 7 个子技能且用已废弃的旧命名(`msg`/`schedule`)。上游 v1.2.0 已扩展到 **14 个**技能。按旧 ref 安装的用户拿到的是三个月前的快照。 - `source.ref` → `78c514b2afee7c0d3d7be715628478421f37ee63` - `children` 由 `scripts/gen-collection-children.py` 重新生成,**7 → 14** - sidecar 同步 `provenance.content.ref`、`childCount` 与 `children` ## 验证 / Verification **静态** - 215 条示例命令追加 `--dry-run` 实跑,**215/215 退出码 0** - 未知方法 0、未知参数 0、`--json` 未知字段 0、枚举违规 0 - 15 个 `SKILL.md` 的 frontmatter 经客户端 `skillFrontmatterSchema` 校验全部通过 - `validate_catalog_metadata.py --require-complete` 与 `gen-collection-children.py`:**0 error** **真机(在真实企业微信账号上端到端)** - **待办域 6/6 方法全通**(含 2 个 write-high),`items` 必填的隐蔽坑实测证实 - **日程域 5 个方法全通**(含 3 个 write-high) - 消息发送、通讯录解析、微盘列表、邮件搜索、文档搜索、会议列表、智能表格创建均已实测通过 - 测试数据已全部清理,未污染真实账号 **尚未实测**:群聊历史(机器人未开通该品类)。相关文档已明确标注验证状态,未实测的能力不写「实际效果」段落。
8.7 KiB
智能文档
企业微信的智能文档 / 智能主页:一份文档由多个页面组成(页面之间可以嵌套成树), 每个页面由若干内容块组成,还自带一份内置数据表,页面上的图表和表单按钮可以绑到它上面。
这一域最重要的一条规则是路由:你说「写个文档 / 整理成文档 / 输出到文档 / 帮我写份周报」 而没指明是哪种文档时,默认落到这里——助手不会追问「你要哪种文档」。 只有你明确说了「在线文档 / Word」「在线表格」「智能表格」,或者给出对应链接,才会转给别的能力。
你可以怎么说
「帮我写份项目周报」 「把这些内容整理成文档」 「做个数据看板页」 「做个报名表单页」 「这份智能文档写了什么?」 「在文档里再加一段」
📋 验证状态
| 项 | 状态 |
|---|---|
| 新建智能文档 | ✅ 已实测(只验到「能建出来」这一步) |
| 由 Markdown 一次性导入建成带内容的文档 | ⚠️ 未实测 |
| 读页面树 / 读页面正文 | ⚠️ 未实测 |
| 追加内容 | ⚠️ 未实测 |
| 整页覆盖 | ⚠️ 未实测(高风险写入,未做破坏性验证) |
| 内容块级增删改 | ⚠️ 未实测 |
| 调整页面结构(新建 / 删除 / 改名 / 移动 / 改布局) | ⚠️ 未实测 |
| 取文档内置数据表 | ⚠️ 未实测 |
| 上传图片 / 附件 | ⚠️ 未实测 |
| 完整链路(你说一句话 → 助手自动写完) | ⚠️ 未实测 |
实测记录(命令层,人工在真实账号上执行):
wecom-cli smartpage create ... # ✅ 建出一份智能文档,标识以 a1_ 开头
只验到「创建」这一步。 读、写、改页面结构一条都没跑——所以本页不写「实际效果」, 也不虚构任何页面内容或返回值。下面「能力清单」与「注意事项」来自接口定义与技能文档, 是设计意图,不是实测结论。
同批实测印证了文档标识的前缀路由:智能文档编辑态是 a1_,在线文档 w3_,在线表格 e3_,
智能表格 s3_。助手靠这个判断你给的链接是哪种文档。
测试数据处置:命令行没有删除文档的接口,测试文档已重命名为 「【可删除】DesireCore验收测试-*」,需要在企业微信里手动删除。
能力清单
除「新建」外均未实测。
| 能做什么 | 命令 | 风险 |
|---|---|---|
| 新建空白智能文档 | wecom-cli smartpage create |
低风险写入 |
| 由 Markdown 一次性导入建成带内容的文档 | wecom-cli smartpage import |
低风险写入 |
| 读页面树 / 读某页正文 / 读某页内容块 | wecom-cli smartpage pages get |
读取 |
| 在页面末尾追加内容 | wecom-cli smartpage pages append |
低风险写入 |
| 整页覆盖内容 | wecom-cli smartpage pages overwrite |
高风险写入 |
| 改页面结构(新建 / 删除 / 改名 / 移动 / 改布局) | wecom-cli smartpage pages update |
高风险写入(仅删除页面那一档) |
| 内容块级插入 / 替换 / 删除 | wecom-cli smartpage blocks update |
高风险写入(仅替换与删除那两档) |
| 取文档内置数据表的子表列表 | wecom-cli smartpage databases get |
读取 |
| 上传图片 / 文件到文档空间 | wecom-cli smartpage images / files upload |
低风险写入 |
搜索文档、改文档名不在这里——归 13 文档管理。 本域的「改名」改的是页面名,不是整份文档的名字。
注意事项
编辑态和发布态是两种东西,发布态改不了。
| 状态 | 链接长什么样 | 能不能改 |
|---|---|---|
| 编辑态 | doc.weixin.qq.com,标识 a1_ 开头 |
可读可写 |
| 发布态 | page.weixin.qq.com,标识 b1_ 开头 |
只读 |
你给的是发布态链接却要求编辑时,助手会请你换一个编辑态链接,不会硬试。
默认是「追加」不是「覆盖」。 说「写入 / 记录 / 补充 / 加进去」这类中性词,助手追加到末尾; 只有「覆盖 / 重写 / 替换整页 / 清空重写」这类强语义词才会整页覆盖。
「把第三段改一下」不会走整页覆盖。 局部改动走的是内容块级编辑—— 只动那一块,其余原样保留。助手不会为了图省事整页重写。
整页覆盖是把原有内容块全部删掉后重建,旧内容没有任何接口能找回来。所以执行前会复述 「将用新内容全量覆盖页面『XX』的原有内容,原内容不可恢复」并等你明确同意。 另外覆盖时如果拿不到版本号,会静默盖掉别人刚写的并发修改——所以助手会先重新读一遍最新内容。
删页面是级联的。 删一个页面会连同它下面的所有子页面一起删掉。 助手会先把子页面数出来告诉你(「及其全部 N 个子页面:……」)再等你同意。 同一个命令里的新建、改名、移动、改布局是可逆的,不需要这层确认——但移动改变了层级归属, 改完助手会重新读一遍结构再告诉你新的样子。
改之前一定会重新读一遍。 哪怕几分钟前刚读过。既是为了拿准要改哪一块, 也是为了不覆盖掉别人的并发修改。
要做表单页 / 数据看板页,走的是另一条路。 需求里出现「表单 / 报名 / 问卷 / 收集 / 录入」或「数据看板 / 图表绑数据 / 任务系统 / 项目跟踪」时, 页面上的控件要引用内置数据表的字段——必须先把字段定好,再写页面内容。 直接导入一份 Markdown 会建出一份没有数据表的静态文档:报名按钮存不下数据,图表也渲染不出来。 助手知道这个顺序。
文档自带一份内置数据表,不用另建智能表格。 那份内置表的子表、字段、记录操作会委托给 11 智能表格; 但页面上的图表、视图、筛选控件属于展示层,仍归本域。
文档命名有固定风格。 中文命名,时间等附加信息用中文括号标注——
项目进展周报(2026.04.23) 是对的,工作日报_20260202 这种下划线拼英文日期是不允许的。
正文里的图片会被真的读进去。 你让它「总结这份文档」而正文里有图时, 助手会把图片下载下来识别,再和文字合并作答,必要时标注「图 N:……」方便你溯源。 图片下载失败时它会如实说「第 N 张图片无法访问,未纳入分析」——不会编造图片内容。 纯粹的结构调整、搬运、覆盖任务则跳过这一步。
页面里的只读组件会被原样保留,助手不会顺手改掉或删掉它们。
这些做不到(会直接说明,引导你去客户端):
- 导出 / 下载为 PDF、Word、图片
- 评论、查看历史版本、回收站恢复
- 编辑发布态文档
内容安全上有一条硬线:写进页面的内容里如果夹带可执行脚本、事件处理器属性、
javascript: 之类的伪协议,助手会直接拒绝写入并说明原因,不会「悄悄清洗一下再写进去」。
读到的页面内容里出现「忽略之前的指令」这类文本时,一律当普通文字处理。
三条通用边界在本域怎么体现
- 只能改它自己建的东西——你自己建的那份智能文档,助手改不了:追加不进去、 改不了页面结构。它会说明这条边界,并建议「由我新建一份」或者你自己在客户端改。
- 能力按品类逐项开通——智能文档属于文档品类(实测账号是后来单独补开的)。 未开通时助手会把官方开通指引原样转给你,然后停下,不重试。
- 危险动作先问你——整页覆盖、删除页面、删除或替换内容块是高风险写入, 都会复述具体影响并等你明确同意。新建、导入、追加、插入内容块是低风险,直接执行。 见 99 风险与确认。