| name | moments_summary |
| description | 朋友圈内容总结助手,帮助用户通过当前页面视图读取朋友圈 feed,并总结动态内容、主题和重点。当用户要求“总结朋友圈”“看看朋友圈都发了什么”“概括一下发现页内容”“帮我总结这页动态”“看看大家最近在发什么”时使用此技能。适用于当前页面已经处于朋友圈、动态流、feed 流或类似内容列表时的总结任务。 |
| always | false |
朋友圈内容总结助手
帮助用户基于当前页面视图读取朋友圈 feed,并输出简洁、可信、带边界说明的总结。
触发条件
此技能应该在以下情况下触发:
- 用户要求“总结朋友圈”
- 用户要求“看看朋友圈都发了什么”
- 用户要求“概括一下发现页内容”
- 用户要求“总结这页动态”
- 用户要求“看看大家最近在发什么”
- 用户要求“把这个 feed 总结一下”
注意:
- 只有当任务核心是“阅读当前 feed 内容并总结”时才触发此技能。
- 如果用户要点赞、评论、发朋友圈或打开某条动态,不要用此技能完成动作本身。
工作流程
步骤 1: 先看页面
优先调用 android_view_context_tool,读取当前可见页面结构。
完整调用格式:
{
"targetHint": "朋友圈动态"
}
如果当前页面不是朋友圈 / 动态流,而是别的页面:
- 明确告诉用户当前页不是可总结的朋友圈 feed
- 不要凭空编造总结
进入朋友圈前的点击规则
如果当前页面不是朋友圈,而是微信聊天列表页,并且页面上可见“发现”标签:
- 从最新
android_view_context_tool 结果中找到“发现”标签的 bounds
- 计算该 bounds 的中心点作为
x 和 y
- 调用
android_gesture_tool 执行 tap
tap 参数必须同时包含:
x
y
observation.snapshotId
observation.referencedBounds
observation.targetDescriptor
不要只说“点击发现”,不要省略 x/y。
如果点击失败并提示缺少当前轮 observation,必须先重新调用 android_view_context_tool,再决定下一步。
如果点击失败并提示参数不合法,必须先修正参数,再决定是否重试,不要重复发送相同 shape 的 tap。
步骤 2: 提取可见动态
从当前可见视图中提取每条动态的关键信息,尽量包括:
- 发布者
- 时间
- 正文
- 位置
- 图片/视频说明
- 点赞/评论等统计提示
如果某项信息看不清:
步骤 3: 判断是否需要滑动补读
默认先基于当前可见内容总结。
判断是否继续探索时,优先看“当前证据是否已经满足用户请求”,而不是机械地继续读更多页面。
通用停止规则:
- 如果当前可见内容已经足够回答用户显式要求的数量、范围或摘要粒度,就立即停止并输出
- 如果新增一次读取很可能不会改变答案,就不要继续探索
- 不要为了重复确认“是不是最新”“是不是最全”而反复读同一屏
- 不要在相反方向之间来回滑动,除非用户明确要求改变查看方向
方向规则:
- 当目标是查看更早 / 更下面的动态时,才向下滑动补读
- 当目标是查看更近 / 更上面的动态时,只在当前证据明显不足时再考虑向上移动
- 如果已经处在 feed 顶部附近,并且当前屏已能支持回答“最近”“当前可见”“这一页”的请求,不要为了确认排序继续反向滑动
如果用户明确要求“完整一点”“多看几条”“继续往下看再总结”,或者当前可见动态明显不足以支撑总结,可以受控向下滑动页面,继续查看更早的朋友圈内容,再补读:
- 从最新
android_view_context_tool 结果中选出承载朋友圈内容的滚动容器,并记录该容器的 observation.snapshotId 与 observation.referencedBounds
- 调用一次
android_gesture_tool,使用 action=swipe、direction=down,必要时可配 amount=medium,并把上一步选中的容器 observation 一起传入
- 再次调用
android_view_context_tool
- 合并新旧可见内容
限制:
- 最多补读 2 次
- 每次补读后都要重新看页面,不要盲滚
- 补读目标是查看之前/更早的朋友圈动态
- 如果滚动后没有出现新的动态,应停止继续滚动
- 如果新增读取没有带来新的相关动态,应停止继续探索
- 这里的滚动能力依赖 gesture runtime 的真实页面事件注入,不要在 Skill 中自己编造裸坐标
- 如果页面上存在多个滚动容器,必须明确选择“朋友圈内容所在的那个容器”,不要让 runtime 自行猜测
步骤 4: 去重
如果多次读取后出现重复动态,按以下信息做近似去重:
不要把同一条动态重复计入总结。
步骤 5: 生成总结
输出时优先包含:
- 整体主题
- 主要动态摘要
- 可见范围说明
推荐输出结构:
这页朋友圈主要在发:
1. ...
2. ...
3. ...
整体上,大家最近主要在聊/晒:
- ...
- ...
说明:以上总结基于当前可见的 N 条动态。
决策规则
| 条件 | 决策 | 原因 |
|---|
| 当前页就是朋友圈 feed | 直接读视图并总结 | 任务目标就是总结当前内容 |
| 当前页不是朋友圈 feed | 明确说明当前页不对 | 避免凭空总结 |
| 信息不完整 | 只总结看得到的部分 | 保持可信 |
| 当前证据已满足用户显式数量或范围要求 | 立即停止并总结 | 避免无收益探索 |
| 需要查看更多更早内容 | 向下补读 | 与时间线方向一致 |
| 新增一次读取不会改变答案 | 停止继续探索 | 控制时延与动作成本 |
| 用户要求更完整,或希望看之前的朋友圈 | 最多补读 2 次 | 允许通过滑动查看更早内容,但控制动作范围 |
| 多次读取出现重复动态 | 去重后再总结 | 避免重复计数 |
| 页面内容很少 | 明确说明样本有限 | 防止过度概括 |
输出要求
- 总结要简洁、可信、可追溯到当前可见内容
- 优先使用“这页可见内容显示”“当前看到的动态主要是”这类表述
- 不要把猜测写成事实
- 不要把未看到的内容写进总结
- 如果只看了当前屏幕,必须明确说明“基于当前可见内容”
错误处理
看不到可用内容
如果 android_view_context_tool 没有返回可读的 feed 内容:
我当前没有在页面上看到可总结的朋友圈动态内容。你可以先打开朋友圈页,我再帮你总结。
内容过少
如果当前只看到 1 到 2 条动态:
我目前只能看到少量动态,先基于这几条做简要总结:...
需要继续查看
如果用户要求“继续看”“多看一些”或“看看之前的朋友圈”:
- 先说明将继续向下滑动,查看更早的朋友圈动态
- 再执行一次受控滚动和补读
示例对话
示例 1:基于当前可见内容总结
用户: 帮我总结一下朋友圈都在发什么
Agent:
- 调用
android_view_context_tool({"targetHint":"朋友圈动态"})
- 提取当前可见动态
- 输出:
这页朋友圈主要在发:
1. 有人在分享迪士尼出游和夜间烟花体验。
2. 有人在发工作复盘,提到周报模板和测试排查。
3. 也有人在晒骑行、宠物和读书会内容。
整体上,这一页可见动态主要围绕出行休闲、工作日常和个人生活记录。
说明:以上总结基于当前可见的朋友圈内容。
示例 2:要求多看几条
用户: 再往下看一点,然后总结完整一些
Agent:
- 从最新 view context 中选择朋友圈列表容器,带上该容器的
observation.snapshotId + observation.referencedBounds
- 调用
android_gesture_tool 向下滚动一次
- 再次调用
android_view_context_tool
- 合并并去重
- 输出更新后的总结,并说明“基于当前屏幕 + 补读内容”
示例 3:查看之前的朋友圈
用户: 往前翻一点,看看之前的朋友圈都在发什么
Agent:
- 说明将继续向下滑动查看更早动态
- 从最新 view context 中选择朋友圈列表容器,带上该容器的
observation.snapshotId + observation.referencedBounds
- 调用
android_gesture_tool 向下滚动一次
- 再调用
android_view_context_tool
- 对新增内容和当前内容一起总结,并说明总结基于补读后的可见范围
示例 4:当前页不对
用户: 总结一下朋友圈
Agent:
我当前没有看到朋友圈 feed 页面内容。你可以先打开朋友圈页,我再帮你总结。