mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-09-05 21:43:46 +08:00
feat: 新增企业微信助手 Agent,并修正 wecom-cli 条目 ref 漂移 (#112)
## 概述 / 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) - 消息发送、通讯录解析、微盘列表、邮件搜索、文档搜索、会议列表、智能表格创建均已实测通过 - 测试数据已全部清理,未污染真实账号 **尚未实测**:群聊历史(机器人未开通该品类)。相关文档已明确标注验证状态,未实测的能力不写「实际效果」段落。
This commit is contained in:
109
agents/wecom-assistant/docs/04-群聊历史.md
Normal file
109
agents/wecom-assistant/docs/04-群聊历史.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# 群聊历史
|
||||
|
||||
读企业微信群里的历史消息:先看最近有哪些群在说话,再拉某个群某段时间的消息明细,
|
||||
需要时把群里发的图片和文件取下来。**只支持最近 7 天。**
|
||||
这是整套能力里**隐私敏感度最高的一项**——读到的是别人的聊天原文,所以助手每次读之前都会先说明要读什么。
|
||||
|
||||
> ⚠️ **这一域的全部能力目前完全未验证。** 实测账号的机器人**未开通「群聊会话」品类**,
|
||||
> 第一步就被企业微信拒绝,后面的所有能力都没有机会验证。详见下方「验证状态」。
|
||||
|
||||
## 你可以怎么说
|
||||
|
||||
> 「项目 A 群这两天聊了什么?」
|
||||
> 「昨天群里说的那个事,帮我找一下」
|
||||
> 「帮我总结一下产品群这周的讨论」
|
||||
> 「把群里发的那个文件找出来」
|
||||
> 「这周哪些群比较活跃?」
|
||||
|
||||
## 📋 验证状态
|
||||
|
||||
| 项 | 状态 |
|
||||
|---|---|
|
||||
| 列出最近有消息的群会话 | ❌ **未实测——被权限拦住** |
|
||||
| 拉取某个群的消息明细 | ❌ **未实测** |
|
||||
| 取群消息里的图片 / 文件 | ❌ **未实测** |
|
||||
| 隐私说明、7 天窗口等行为约定 | ❌ **未实测** |
|
||||
|
||||
**卡在哪(这是唯一有据可查的事实)**:
|
||||
|
||||
```bash
|
||||
wecom-cli chat groups list ...
|
||||
# → 返回错误码 853006
|
||||
```
|
||||
|
||||
`853006` 的含义是**同类未授权**——实测账号的机器人**没有开通「群聊会话」这个品类**。
|
||||
第一次调用就被拒,所以从「有哪些群」开始的整条链路都没跑起来。
|
||||
|
||||
**因此本文档不含「实际效果」一节,也不含任何实测对话或返回值**
|
||||
(下文出现的引用块都是**措辞示意**,不是跑出来的记录)。
|
||||
下面「能力清单」与「注意事项」的内容来自接口定义与技能文档,**是设计意图,不是实测结论**。
|
||||
真正跑通之前,它们只能当作「预期会这样」来看。
|
||||
|
||||
**要让它可用**:需要为机器人开通群聊会话品类。助手第一次碰到这个错误时,会把企业微信官方的
|
||||
开通指引**原样转给你**(含链接,一字不改),然后停下来——**不会反复重试,也不会换个方法绕**。
|
||||
|
||||
## 能力清单
|
||||
|
||||
> 以下均**未实测**。
|
||||
|
||||
| 能做什么 | 命令 | 风险 |
|
||||
|---|---|---|
|
||||
| 列出最近 7 天有消息的群会话 | `wecom-cli chat groups list` | 读取(隐私敏感:暴露群名与活跃度) |
|
||||
| 拉取指定会话在某时间段的消息明细 | `wecom-cli chat messages list` | 读取(**最高隐私敏感**:他人聊天原文) |
|
||||
| 取消息里的图片 / 文件 / 语音 / 视频 | `wecom-cli message files get` | 读取(隐私敏感:他人发的文件内容) |
|
||||
|
||||
三个都是只读,对企业微信侧没有任何改动,所以不需要「高风险确认」那一套。
|
||||
但因为读的是别人的内容,**执行前必须先说明要读什么**。
|
||||
|
||||
## 注意事项
|
||||
|
||||
**读之前会先告诉你要读什么。** 助手会先说一句类似这样的话,再动手:
|
||||
|
||||
> 我将读取「项目 A 群」2026-08-29 00:00 至 2026-08-31 23:59 的聊天记录,用于整理讨论要点。
|
||||
|
||||
范围必须具体到**哪个会话 + 哪个时间段 + 读来干什么**。你没指定群时,它会先把群列出来让你选,
|
||||
**不会「先全都拉下来再说」**——不会为了省一次交互就批量遍历好几个群。
|
||||
|
||||
**它不做人物画像。** 拉下来的原文只用于回答你当前这个问题,不主动扩散、不统计
|
||||
「谁说话最多」「谁最晚下班」这类对个人的行为分析,除非你明确要求且目的正当。
|
||||
|
||||
**敏感信息会被略去。** 聊天记录里出现身份证号、银行卡号、家庭住址、健康状况这类能识别到具体个人的信息,
|
||||
助手**不摘录、不转述、不写进总结**,即使你要求。它会说明「记录中含敏感个人信息,已略去」。
|
||||
|
||||
**只有最近 7 天,而且越界时是「静默返回空」不是报错。**
|
||||
这是最容易误判的一条:查 7 天以前的内容,企业微信不会告诉你「超范围了」,
|
||||
而是给你一个**空列表**。所以——
|
||||
|
||||
- 你说「上个月群里那个事」时,助手会**先告诉你只能查最近 7 天**,而不是拉一次空结果再回你「没找到」。
|
||||
这两句话对你的意义完全不同。
|
||||
- 拿到空结果时,它会先自查时间范围是不是越界了,再下「这段时间没有消息」的结论。
|
||||
- 它不会用多次分段查询去凑 7 天以前的数据——服务端不给就是不给。
|
||||
|
||||
**只有群聊,没有单聊。** 「最近有哪些会话」这个列表**目前只返回群聊**。
|
||||
你要看「我和张三的私聊记录」时,助手会先去通讯录把张三解析出来,再按人去拉,不会在群列表里找。
|
||||
|
||||
**图文混排的消息容易被漏掉。** 群里那种「一段文字配几张图」的消息,正文藏在嵌套结构里。
|
||||
助手知道要去里面取,不会把它当成空消息漏掉——这一点在总结里最容易出现「消息凭空消失」。
|
||||
|
||||
**不会无限翻页。** 一个群一段时间的消息可能很多,助手会设一个页数上限,拉够了就停下来做总结,
|
||||
并告诉你「还有更多历史消息,需要的话可以继续拉」。
|
||||
|
||||
**能读的群 ≠ 能发消息的会话。** 这两个是不同的集合,内部标识也不能互相搬运。
|
||||
要往群里发东西,走 [03 消息与会话](03-消息与会话.md),那边有它自己的一套限制。
|
||||
|
||||
### 三条通用边界在本域怎么体现
|
||||
|
||||
1. **只能改它自己建的东西**——这一域**完全只读**,本来就不写任何东西。
|
||||
助手不能替你在群里发言、不能撤回别人的消息、也不能编辑聊天记录。
|
||||
2. **能力按品类逐项开通**——**本域正是这条规则最直接的受害者**:群聊会话品类未开通,
|
||||
整个能力就是黑的。助手会把官方开通指引原样转给你,然后停下。
|
||||
3. **危险动作先问你**——这里没有「危险写入」,但有**隐私读取的说明义务**:
|
||||
读之前必须讲清读哪个会话、什么时间段、读来干什么。这条不因为「只是读一下」而放宽。
|
||||
|
||||
## 相关
|
||||
|
||||
- [03 消息与会话](03-消息与会话.md)——往群里发消息(与本域是两套独立的会话范围)
|
||||
- [02 通讯录](02-通讯录.md)——想读某人的单聊记录时,先在这里把人解析出来
|
||||
- [15 媒体文件](15-媒体文件.md)——把群里的图片、文件落到本地
|
||||
- [99 风险与确认](99-风险与确认.md)——隐私敏感读取的完整规则
|
||||
- [README 的验证进度](README.md#各能力的验证进度)——本域为什么被列为「完全未实测」
|
||||
Reference in New Issue
Block a user