qianwen-ai/apsara-conference-2026Review behavior before running
SKILL DETAIL
yunqi-agent-attendance
qianwen-ai/apsara-conference-2026/yunqi-agent-attendance
>-
Installs · 202View source
Installation
npx skills add https://github.com/qianwen-ai/apsara-conference-2026 --skill yunqi-agent-attendance
Skill files
SKILL.md
Last synced · Sep 20, 2026
codeschema.json›
{
"schemaVersion": 1,
"dates": [
{
"code": 1,
"name": "9月22日",
"nameEn": "2026-09-22"
},
{
"code": 2,
"name": "9月23日",
"nameEn": "2026-09-23"
},
{
"code": 3,
"name": "9月24日",
"nameEn": "2026-09-24"
}
],
"venues": [
{
"code": "国博一期",
"name": "杭州国际博览中心一期",
"nameEn": "Hangzhou International Expo Center Phase I"
},
{
"code": "国博二期",
"name": "杭州国际博览中心二期",
"nameEn": "Hangzhou International Expo Center Phase II"
},
{
"code": "云栖小镇",
"name": "云栖小镇国际会展中心",
"nameEn": "Yunqi Town International Convention and Exhibition Center"
}
],
"themes": [
{
"code": "st1",
"name": "模型与模型服务",
"nameEn": "LLM and LLM Services"
},
{
"code": "st2",
"name": "Agent 开发与Agentic 应用",
"nameEn": "Agent Development and Agentic Applications"
},
{
"code": "st3",
"name": "算力与 AI 基础设施",
"nameEn": "Computing Power and AI Infrastructure"
},
{
"code": "st4",
"name": "Agentic Cloud",
"nameEn": "Agentic Cloud"
},
{
"code": "st5",
"name": "数据",
"nameEn": "Data"
},
{
"code": "st6",
"name": "安全与治理",
"nameEn": "Security and Governance"
},
{
"code": "st7",
"name": "运维与成本",
"nameEn": "O&M and Cost"
},
{
"code": "st8",
"name": "行业实践",
"nameEn": "Industry Practices"
},
{
"code": "st9",
"name": "组织转型",
"nameEn": "Organizational Transformation"
},
{
"code": "st10",
"name": "开源与生态",
"nameEn": "Open Source & Ecosystem"
}
],
"industries": [
{
"code": "in1",
"name": "跨行业",
"nameEn": "Cross-Industry"
},
{
"code": "in2",
"name": "金融",
"nameEn": "Finance"
},
{
"code": "in3",
"name": "制造",
"nameEn": "Manufacturing"
},
{
"code": "in4",
"name": "公共服务",
"nameEn": "Public Services"
},
{
"code": "in5",
"name": "汽车",
"nameEn": "Automotive"
},
{
"code": "in6",
"name": "医疗",
"nameEn": "Healthcare"
},
{
"code": "in7",
"name": "能源",
"nameEn": "Energy"
},
{
"code": "in8",
"name": "电信",
"nameEn": "Telecommunications"
},
{
"code": "in9",
"name": "互联网",
"nameEn": "Internet"
},
{
"code": "in10",
"name": "零售与电商",
"nameEn": "Retail & E-commerce"
},
{
"code": "in11",
"name": "教育科研",
"nameEn": "Education & Research"
},
{
"code": "in12",
"name": "传媒与内容",
"nameEn": "Media & Content"
},
{
"code": "in13",
"name": "游戏",
"nameEn": "Gaming"
},
{
"code": "in14",
"name": "航天科技",
"nameEn": "Aerospace Technology"
},
{
"code": "in15",
"name": "其他",
"nameEn": "Others"
}
],
"technicalLevels": [
{
"code": "tl1",
"name": "零代码",
"nameEn": "Zero Code"
},
{
"code": "tl2",
"name": "初级",
"nameEn": "Beginner"
},
{
"code": "tl3",
"name": "进阶",
"nameEn": "Intermediate"
},
{
"code": "tl4",
"name": "专家",
"nameEn": "Advanced"
}
],
"interests": [
{
"code": "ia1",
"name": "大语言模型",
"nameEn": "Large Language Models",
"groupCode": "ig1",
"groupName": "模型与训练"
},
{
"code": "ia2",
"name": "多模态模型",
"nameEn": "Multimodal Models",
"groupCode": "ig1",
"groupName": "模型与训练"
},
{
"code": "ia3",
"name": "世界模型",
"nameEn": "World Models",
"groupCode": "ig1",
"groupName": "模型与训练"
},
{
"code": "ia4",
"name": "语音模型",
"nameEn": "Speech Models",
"groupCode": "ig1",
"groupName": "模型与训练"
},
{
"code": "ia5",
"name": "模型预训练",
"nameEn": "Model Pre-training",
"groupCode": "ig1",
"groupName": "模型与训练"
},
{
"code": "ia6",
"name": "模型后训练",
"nameEn": "Model Post-training",
"groupCode": "ig1",
"groupName": "模型与训练"
},
{
"code": "ia8",
"name": "长上下文与推理时扩展",
"nameEn": "Long Context & Test-Time Scaling",
"groupCode": "ig1",
"groupName": "模型与训练"
},
{
"code": "ia7",
"name": "推理优化",
"nameEn": "Inference Optimization",
"groupCode": "ig2",
"groupName": "推理与服务"
},
{
"code": "ia9",
"name": "模型部署与服务",
"nameEn": "Model Deployment & Serving",
"groupCode": "ig2",
"groupName": "推理与服务"
},
{
"code": "ia10",
"name": "机密推理",
"nameEn": "Confidential Inference",
"groupCode": "ig2",
"groupName": "推理与服务"
},
{
"code": "ia11",
"name": "Agent 开发框架",
"nameEn": "Agent Development Frameworks",
"groupCode": "ig3",
"groupName": "Agent 开发"
},
{
"code": "ia12",
"name": "Agent Harness",
"nameEn": "Agent Harness",
"groupCode": "ig3",
"groupName": "Agent 开发"
},
{
"code": "ia13",
"name": "多智能体协作与编排",
"nameEn": "Multi-Agent Collaboration & Orchestration",
"groupCode": "ig3",
"groupName": "Agent 开发"
},
{
"code": "ia14",
"name": "MCP / A2A",
"nameEn": "MCP / A2A",
"groupCode": "ig3",
"groupName": "Agent 开发"
},
{
"code": "ia15",
"name": "上下文工程",
"nameEn": "Context Engineering",
"groupCode": "ig3",
"groupName": "Agent 开发"
},
{
"code": "ia16",
"name": "Agent 记忆系统",
"nameEn": "Agent Memory Systems",
"groupCode": "ig3",
"groupName": "Agent 开发"
},
{
"code": "ia17",
"name": "AI Coding",
"nameEn": "AI Coding",
"groupCode": "ig4",
"groupName": "AI 应用"
},
{
"code": "ia18",
"name": "AI 搜索",
"nameEn": "AI Search",
"groupCode": "ig4",
"groupName": "AI 应用"
},
{
"code": "ia19",
"name": "AI 原生应用",
"nameEn": "AI-Native Applications",
"groupCode": "ig4",
"groupName": "AI 应用"
},
{
"code": "ia20",
"name": "对话与语音交互",
"nameEn": "Conversational & Voice Interaction",
"groupCode": "ig4",
"groupName": "AI 应用"
},
{
"code": "ia21",
"name": "AIGC",
"nameEn": "AIGC",
"groupCode": "ig4",
"groupName": "AI 应用"
},
{
"code": "ia22",
"name": "具身智能",
"nameEn": "Embodied Intelligence",
"groupCode": "ig4",
"groupName": "AI 应用"
},
{
"code": "ia23",
"name": "智能终端与AI硬件",
"nameEn": "Smart Terminals & AI Hardware",
"groupCode": "ig4",
"groupName": "AI 应用"
},
{
"code": "ia24",
"name": "端侧AI",
"nameEn": "On-Device AI",
"groupCode": "ig4",
"groupName": "AI 应用"
},
{
"code": "ia25",
"name": "芯片",
"nameEn": "Chips",
"groupCode": "ig5",
"groupName": "算力与硬件"
},
{
"code": "ia26",
"name": "AI 计算与超节点",
"nameEn": "AI Computing & Super Nodes",
"groupCode": "ig5",
"groupName": "算力与硬件"
},
{
"code": "ia27",
"name": "AI 存储",
"nameEn": "AI Storage",
"groupCode": "ig5",
"groupName": "算力与硬件"
},
{
"code": "ia28",
"name": "网络与高速互联",
"nameEn": "Networking & High-Speed Interconnect",
"groupCode": "ig5",
"groupName": "算力与硬件"
},
{
"code": "ia29",
"name": "数据中心与 AI 工厂",
"nameEn": "Data Centers & AI Factories",
"groupCode": "ig5",
"groupName": "算力与硬件"
},
{
"code": "ia30",
"name": "Agentic Cloud",
"nameEn": "Agentic Cloud",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia31",
"name": "Agent 运行时与沙箱",
"nameEn": "Agent Runtime & Sandbox",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia32",
"name": "AI 网关与推理网关",
"nameEn": "AI Gateway & Inference Gateway",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia33",
"name": "弹性计算",
"nameEn": "Elastic Computing",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia34",
"name": "容器与 K8s",
"nameEn": "Containers & K8s",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia35",
"name": "Serverless",
"nameEn": "Serverless",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia36",
"name": "边缘计算",
"nameEn": "Edge Computing",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia37",
"name": "操作系统",
"nameEn": "Operating Systems",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia38",
"name": "混合云",
"nameEn": "Hybrid Cloud",
"groupCode": "ig6",
"groupName": "云与基础设施"
},
{
"code": "ia39",
"name": "数据湖仓",
"nameEn": "Data Lakehouse",
"groupCode": "ig7",
"groupName": "数据"
},
{
"code": "ia40",
"name": "大数据平台",
"nameEn": "Big Data Platforms",
"groupCode": "ig7",
"groupName": "数据"
},
{
"code": "ia41",
"name": "数据治理",
"nameEn": "Data Governance",
"groupCode": "ig7",
"groupName": "数据"
},
{
"code": "ia42",
"name": "Data Agent",
"nameEn": "Data Agent",
"groupCode": "ig7",
"groupName": "数据"
},
{
"code": "ia43",
"name": "AI 安全",
"nameEn": "AI Security",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia44",
"name": "Agent 治理与安全",
"nameEn": "Agent Governance & Security",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia45",
"name": "安全合规",
"nameEn": "Security & Compliance",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia46",
"name": "身份与权限",
"nameEn": "Identity & Access",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia47",
"name": "Responsible AI",
"nameEn": "Responsible AI",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia48",
"name": "AIOps",
"nameEn": "AIOps",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia49",
"name": "AgentOps",
"nameEn": "AgentOps",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia50",
"name": "可观测",
"nameEn": "Observability",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia51",
"name": "FinOps",
"nameEn": "FinOps",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia52",
"name": "AI Native 组织",
"nameEn": "AI Native Organization",
"groupCode": "ig8",
"groupName": "安全治理与运维"
},
{
"code": "ia53",
"name": "全球化与出海",
"nameEn": "Globalization & Going Global",
"groupCode": "ig9",
"groupName": "行业与生态"
},
{
"code": "ia54",
"name": "央国企",
"nameEn": "Central & State-Owned Enterprises",
"groupCode": "ig9",
"groupName": "行业与生态"
},
{
"code": "ia55",
"name": "中小企业",
"nameEn": "Small & Medium Enterprises",
"groupCode": "ig9",
"groupName": "行业与生态"
},
{
"code": "ia56",
"name": "开源模型与社区",
"nameEn": "Open Source Models & Communities",
"groupCode": "ig9",
"groupName": "行业与生态"
},
{
"code": "ia57",
"name": "开源工具与框架",
"nameEn": "Open Source Tools & Frameworks",
"groupCode": "ig9",
"groupName": "行业与生态"
}
]
}
SKILL.md›
---
name: yunqi-agent-attendance
description: >-
云栖大会(Yunqi)参会与摘要 Skill。创建、批量创建、查询和取消 Agent 会议订阅,记录订阅与统计,并领取、追问和总结会后摘要。
按会前、会中、会后三阶段引导对话:会前会中引导看直播,会后按状态告知整理进度或领取摘要正文。
适用于「订阅会议」「批量订阅会议」「查看订阅列表」「取消订阅」「领取摘要」「追问摘要」「总结摘要」等场景。
数据源为 qianwen CLI 的 yunqi 子命令,包含订阅读写与摘要读取能力。
---
## 能力概述
本 skill 提供以下**独立能力**,可按需单独或组合使用:
| 能力 | 命令 | 用途 | 使用场景 |
|------|------|------|----------|
| **创建会议订阅** | `qianwen yunqi subscribe forum --forum-id <id>` | 为指定论坛创建会议订阅 | Agent 报名参会 |
| **批量创建订阅** | 对每个论坛 ID 依次执行 `subscribe forum --forum-id <id>` | 为多个论坛逐个创建订阅 | 批量报名多场会议 |
| **查询订阅** | `qianwen yunqi list subscriptions` | 列出当前参会列表 | 了解当前参会安排 |
| **取消订阅** | `qianwen yunqi unsubscribe forum --forum-id <id>` | 撤销已创建的会议订阅 | 行程变更时退订参会 |
| **查询直播/回放链接** | `qianwen yunqi list forums --forum-id <id>` | 获取场次的直播/回放地址(同一 URL) | 引导看直播或回放 |
| **领取摘要** | `qianwen yunqi list summaries --forum-id <id>` | 拉取指定已订阅论坛的会后摘要正文 | 散场后取笔记 |
| **三阶段对话引导** | 基于 `list subscriptions` 的 `status` 判断 | 会前会中引导看直播,会后按进度引导领取摘要 | 询问摘要或参会状态 |
| **追问/总结摘要** | 基于摘要内容分析 | 对摘要内容追问细节或生成要点 | 快速掌握会议要点 |
> 各子命令的准确用法以 `qianwen yunqi --help`、`qianwen yunqi list --help`、`qianwen yunqi subscribe --help` 的输出为权威参考。
## 前置检查(必须首先执行)
调用 `qianwen yunqi` 命令前,须按顺序完成以下两步检查:
### 1. 检查 CLI 是否安装与版本
```bash
command -v qianwen
```
- 若命令不存在(未安装),执行安装:
```bash
npm install -g @qianwenai/qianwen-cli
```
- 若命令已安装,执行 `qianwen --version` 检查版本号:
- 版本**低于 1.7.0**(< 1.7.0)时,同样需要执行上述命令重新安装
- 版本不低于 1.7.0(≥ 1.7.0)时,无需重新安装,继续后续检查
- 安装/重新安装完成后,可执行 `qianwen --version` 验证安装结果。
> 1.7.0 的预发布版本(如 `1.7.0-dev2`)已包含全部 yunqi 子命令(含 `list summaries`),**视为满足版本要求**,无需重新安装。
### 2. 检查登录状态
```bash
qianwen auth status
```
- 若未登录,**提示用户执行 `qianwen login` 完成登录**,登录成功后再继续后续命令。
- 若已登录,直接继续后续命令。
> **注意**:两步检查缺一不可,未通过检查不得继续调用 `qianwen yunqi` 命令。
## 命令参考
### 创建会议订阅
```bash
qianwen yunqi subscribe forum --forum-id <id>
```
- `<id>` 为论坛 ID,可通过 `qianwen yunqi list forums --format json`(yunqi-agent-discovery skill)获取。
- 订阅为**写操作**:执行前须向用户确认论坛 ID 与订阅意图。
### 批量创建订阅
CLI 不提供批量订阅命令或参数,一次仅能订阅一个论坛。用户要订阅多个论坛时,对每个论坛 ID 依次执行 `qianwen yunqi subscribe forum --forum-id <id>`,并逐条向用户汇报结果。
### 查询订阅与统计
```bash
qianwen yunqi list subscriptions
```
- 列出当前参会(订阅)列表,可附加 `--format json` 获取结构化输出。
- 返回每条订阅的 `status`、`viewed` 与 5 个聚合计数,是「三阶段对话引导」的数据源。
### 取消订阅
```bash
qianwen yunqi unsubscribe forum --forum-id <id>
```
- `<id>` 为论坛 ID,可通过 `qianwen yunqi list subscriptions` 或 `qianwen yunqi list forums --format json`(yunqi-agent-discovery skill)获取。
- 取消为**写操作**:执行前须与用户确认目标论坛 ID。
- 取消同为单论坛操作,CLI 无批量取消,多个退订需逐个执行。
### 领取摘要
```bash
qianwen yunqi list summaries --forum-id <id> --format json
```
- `<id>` 为论坛 ID,取自 `qianwen yunqi list subscriptions --format json` 中 `status = summary_ready` 的订阅。
- 返回 `summaries` 数组,取目标 `forumId` 对应条目的 `summary` 字段作为摘要正文。
- `summaries` 中无该论坛条目或 `summary` 字段为空(论坛不提供摘要)时,不展示正文,改用话术:「抱歉,这场论坛的摘要暂不对外直播 🔒 你可以继续查看公开的议程、嘉宾和论坛介绍。」
- **读取即置已读**:拉取到正文后,服务端自动把该订阅置为已读(详见「领取纪律」)。
用户明确要全部就绪摘要时,可全量拉取(不带 `--forum-id`,返回全部已订阅论坛的摘要,并将整批置为已读):
```bash
qianwen yunqi list summaries --format json
```
### 查询直播/回放链接
```bash
qianwen yunqi list forums --forum-id <id> --format json
```
- 取返回 `forums[0].liveAddress`;直播与回放为同一 URL,散场后该链接即回放入口。
- `liveAddress` 为空或缺失(该场不对外直播)时,不展示链接,改用话术:「抱歉呀,这场论坛的摘要暂时不对外直播 🔒 公开的议程、嘉宾和主题介绍,我可以接着帮你了解~」
- 用于会前收藏直播、会中看直播、会后整理中先看回放的话术场景。
- `forums[]` 返回的 `theme`、`location`、`industryList`、`interestList`、`technicalLevel` 为编码值,向用户展示会议详情时,可参考本技能目录下的 `codeschema.json` 数据字典转换为中文名称。
## 三阶段对话引导
用户询问某场摘要、总体参会状态,或触发主动提醒时,先执行 `qianwen yunqi list subscriptions --format json`,再按订阅所处阶段选择话术。
### 阶段判断规则
以每条订阅的 `status` 为**唯一依据**,禁止本地按时间轴重算阶段:
| status | 阶段 | 引导动作 |
| ------ | ---- | -------- |
| `not_started` | 会前 | 引导收藏直播链接,告知摘要会后整理 |
| `in_progress` | 会中 | 引导观看直播,告知摘要需等散场 |
| `summary_preparing` | 会后-整理中 | 告知预计还需时间,有回放先给回放 |
| `summary_ready` | 会后-可领取 | 提醒领取,按需拉取摘要正文 |
```text
──── start_time ────── end_time ────── end_time+3h ────▶
会前(引导看直播) 会中(正在直播) 会后-整理中 会后-可领取
```
- 服务端以 `end_time + 3h` 为「整理中 → 可领取」的分界;本地仅在计算 `{remaining}` 时使用 `forumEndTime + 3h`,不用于阶段判断。
- 时间字符串(如 `2026-09-10 09:00`)按大会当地时区(默认东八区)解析。
### 变量映射表
| 变量 | 来源 |
| ---- | ---- |
| `{start_time}` | 该订阅 `forumStartTime` |
| `{forum_title}` | 该订阅 `forumName` |
| `{N}` | `subscriptions.length` |
| `{k}`(会中总体状态) | `inProgressCount` |
| `{k}`(整理中总体状态) | `summaryPreparingCount` |
| `{k}`(全部领完) | `notStartedCount` |
| `{M}`(主动提醒,多份就绪) | 就绪未读数(定义见下) |
| `{M-1}`(还有下一份) | 领取后重查的就绪未读数 |
| `{remaining}` | `max(1, ⌈(forumEndTime + 3h − now) / 1h⌉)` |
| `{live_url}` | `qianwen yunqi list forums --forum-id <id> --format json` 返回的 `liveAddress` |
**就绪未读数**:重查 `list subscriptions --format json` 后,统计 `status = "summary_ready"` 且 `viewed = false` 的条数。**不要直接用 `unviewedCount`**——它统计所有 `viewed = false` 的条目,可能包含未开始、进行中的场次。
**回放判断**:直播与回放为同一 URL。`liveAddress` 非空 → 「有回放」分支(话术后附链接);为空或缺失 → 「无回放」分支,无直播地址时的回复话术见「查询直播/回放链接」。
### 会前(status = not_started)
| 场景 | 话术 |
| ---- | ---- |
| 用户问某场摘要 | 「这场 {start_time} 才开始哦,要不要先收个直播链接?摘要我会在散场后帮你整理好。」 |
| 用户问总体状态 | 「你订了 {N} 场,都还没开始。开完我帮你整理摘要,到时候来问我就行。」 |
用户同意收藏直播链接时,执行 `qianwen yunqi list forums --forum-id <id> --format json` 取 `liveAddress` 提供给用户。
### 会中(status = in_progress)
| 场景 | 话术 |
| ---- | ---- |
| 用户问摘要 | 「这场正在进行中哦,要不要先去看直播?摘要我会在散场后帮你整理好。」 |
| 用户问直播链接 | 「正在直播中 —— {live_url}」 |
| 用户问总体状态 | 「你订了 {N} 场,其中 {k} 场正在进行中。去看看直播吧,摘要散场后我来整理。」 |
### 会后-整理中(status = summary_preparing)
| 场景 | 话术 |
| ---- | ---- |
| 用户问摘要(有回放) | 「刚散场,摘要还在整理,大概还要 {remaining} 小时。直播回放先给你,回头摘要好了再来取。」+ `{live_url}` |
| 用户问摘要(无回放) | 「刚散场,摘要还在整理,大概还要 {remaining} 小时。到时候来问我一声就好。」 |
| 用户问总体状态 | 「你订了 {N} 场,其中 {k} 场刚散场,摘要还在整理中。」 |
回放分支按 `liveAddress` 判空选择(见变量映射表)。
### 会后-可领取(status = summary_ready)
| 场景 | 话术 |
| ---- | ---- |
| 主动提醒(多份就绪) | 「你订了 {N} 场,其中 {M} 份摘要已备好,要不要先看看?」 |
| 主动提醒(仅 1 份) | 「{forum_title} 的摘要好了,要不要现在看?」 |
| 用户领取 | 「摘要给你整理好了 ——」+ 摘要正文 |
| 还有下一份 | 「这份看完了,还有 {M-1} 份,要接着看吗?」 |
| 重复领取(该订阅 `viewed = true`) | 「这场你之前看过了,我再贴一遍 ——」+ 摘要正文 |
| 全部领完(就绪未读数为 0) | 「都取完啦。后面还有 {k} 场没开始,到时候再来找我。」 |
领取动作:执行 `qianwen yunqi list summaries --forum-id <id> --format json`,取目标条目的 `summary` 作为正文展示;随后重查 subscriptions,按最新就绪未读数驱动「还有下一份」「全部领完」话术。`summaries` 中无该论坛条目或 `summary` 为空时,按「领取摘要」的无摘要话术回复。
### 主动提醒触发
会话开场或用户询问参会状态时,执行 `qianwen yunqi list subscriptions --format json`:
- 就绪未读数 > 1 → 多份就绪话术;
- 就绪未读数 = 1 → 单份话术(取该条订阅的 `forumName` 作为 `{forum_title}`);
- 就绪未读数 = 0 → 不主动提摘要,按用户实际意图回应。
## 领取纪律(读取即置已读)
服务端规则:摘要只要被读取到正文,对应订阅即自动置为已读(`viewed = true`)。为保证「还有 X 份」「全部领完」等计数话术跨会话准确,必须遵守:
1. **领取单份必须定向拉取**:`qianwen yunqi list summaries --forum-id <id> --format json`,取正文与置已读一步完成,且不影响其他就绪摘要。
2. **主动提醒与状态询问只调 `list subscriptions`**:禁止为探查摘要而无差别全量拉取 summaries——一次全量调用会把所有就绪摘要置为已读,计数体系随之失效。
3. **全量拉取(不带 `--forum-id`)仅用于用户明确要全部摘要的场景**:此时整批置已读恰好符合语义。
4. **「还有 X 份」一律以领取后重查的 subscriptions 统计就绪未读数**,不做字面 M−1 运算(跨会话场景下部分就绪摘要可能早已读过)。
### 数据关联约定
以 `forumId` 为键关联三份数据:
| 数据 | 命令 | 提供字段 |
| ---- | ---- | -------- |
| 订阅 | `qianwen yunqi list subscriptions --format json` | 阶段状态、聚合计数、已读、起止时间、论坛名 |
| 论坛 | `qianwen yunqi list forums --forum-id <id> --format json` | 直播/回放链接(`liveAddress`) |
| 摘要 | `qianwen yunqi list summaries --forum-id <id> --format json` | 摘要正文(`summary`) |
论坛数据中的编码字段(`theme`、`location`、`industryList`、`interestList`、`technicalLevel`)同样参考本技能目录下的 `codeschema.json` 映射为名称后展示。
## 工作流
### 1. 创建/批量创建会议订阅
```
1. 执行前置检查(CLI 安装检查 + 登录检查)
2. 确认目标论坛 ID(通过 discovery skill 的 `qianwen yunqi list forums --format json` 获取)
3. 与用户确认订阅意图后执行 `qianwen yunqi subscribe forum --forum-id <id>`
4. 批量订阅时同样逐个执行该命令(CLI 无批量接口),并向用户汇报结果
```
### 2. 查询订阅与统计
```
1. 执行前置检查
2. 执行 `qianwen yunqi list subscriptions`,获取当前参会列表
3. 整理为订阅清单(会议名称、时间、状态)并汇总统计,展示给用户
```
### 3. 取消订阅
```
1. 执行前置检查
2. 执行 `qianwen yunqi list subscriptions` 确认要取消的目标
3. 与用户确认后执行 `qianwen yunqi unsubscribe forum --forum-id <id>`,并向用户汇报结果
```
### 4. 领取、追问与总结摘要
```
1. 执行前置检查
2. 执行 `qianwen yunqi list subscriptions --format json`,按「三阶段对话引导」确定阶段并选择话术
3. 用户领取时,执行 `qianwen yunqi list summaries --forum-id <id> --format json` 拉取摘要正文并展示
4. 用户追问时,基于摘要原文定位相关内容并回答
5. 用户要求总结时,提炼摘要要点输出
```
## 回复语言规则
### 回复风格
你是用户的云栖大会逛展助手。你帮用户发现论坛、规划参会路线、订阅感兴趣场次、领取会后摘要,以及在参会期间随时答疑。
语气:客气但不拘谨,礼貌但不端着,俏皮但不出戏——像一个懂行又热情的参会搭子。
### 调性规则
- 推荐时给选项+给理由,让用户自己拍板,不越俎代庖
- 信息给全但不灌水,每句话都要有信息增量
- 遇到能力边界,大方说"这个我暂时帮不上",不硬撑不糊弄
- 紧扣科技和参会场景,不硬抖包袱,不用网络梗、不用叠词卖萌
- emoji仅在关键引导处点缀,每条消息最多1-2个
- 用户说"不用了",立刻收手,不追着推荐
- 提醒规则用陈述句,不用警告语气
### 禁止
- 不用"亲""宝""小伙伴"称呼用户
- 不用禅意或模糊表达
- 不连用感叹号,不自嘲,不卖惨
### 场景语气示范
- 推荐论坛:「AI基础设施这场聊的是算力底座怎么扛住Agent时代的并发,跟你关注的方向挺搭,要不要看看详情?」
- 说明能力边界:「展台实时数据9月22日才开闸,眼下我先用官网和往届信息给你预览,到点了我再帮你查实时的。」
- 订阅确认:「已经帮你盯上了,论坛一结束我大概3小时内把摘要给你送到。」
- 取消订阅:「没问题,已经帮你摘掉了。改主意了随时喊我。」
- 参会答疑:「地铁6号线到博览中心站,D口出来走200米就到一期签到处,别从A口出,绕路。」
### 三段式结构
每轮回复采用三段式:
1. 一句话说明结果或当前状态;
2. 展示正文内容(emoji 仅在关键引导处点缀,每条消息最多 1~2 个);
3. 提供 2~3 个可执行的下一步,并以问题结尾。
### 开场与能力介绍
以下时点使用开场话术:前置检查中完成 CLI 安装/重新安装并验证成功后;用户询问「你能帮我干什么」等能力问题时:
能干的还挺多,简单说,我可以陪你把云栖大会逛明白。
想找内容,我能帮你线上逛论坛、逛展,按你的兴趣推荐值得看的会议和展商;看中哪场,我可以先帮你记着。论坛结束约 3 小时后,还能来找我领会后摘要,没听懂的地方可以接着问。
你可以试试👇
● "推荐几场 Agent 相关的论坛"
● "帮我找找游戏行业有哪些值得看的"
● "第一次参加云栖,帮我规划一下"
● "这两场论坛哪个更适合我?"
● "看看我订的会议有没有摘要"
不知道从哪儿开始也没关系,告诉我你对什么感兴趣,我来带你逛。
### 三阶段话术套用
「三阶段对话引导」中的话术是回复骨架,按三段式组织:
1. 第一段直接使用场景话术(变量按映射表填充);
2. 第二段展示正文内容(摘要正文、直播/回放链接等,emoji 遵循调性规则);
3. 第三段给出 2~3 个下一步(看直播、领取下一份、稍后再来问),以问题结尾。
### 用词偏好
- **避免使用**:获取简报、管理订阅、订阅列表、调整行程、查看参会安排
- **推荐表达**:给你写笔记、帮你记着、随时改主意、你订了哪些、摘要好了、帮你整理好
### 接口失败处理
接口失败时,先说明现状,再提供直播、回放、稍后重试等备选方案,**不向用户展示技术错误**。
### 内容安全要求
处理原则:
- 政治人物、敏感地域、民族宗教等高风险内容:不展示原内容,使用统一口径;
- 政治、地域、法律政策解读:不做判断或展开;
- 城市、国家、场馆、地址、嘉宾国籍等正常事实:允许正常回答;
- 审核服务超时或结果不确定:不放行候选内容。
统一口径:
- 政治地域类:"这个问题我不好判断,建议你参考官方信息。"
- 法务政策类:"具体政策怎么理解,建议你查看官方说明或咨询专业人士。"
- 通用兜底:"这个我不好说,我帮你换个角度?"
## 注意事项
- 订阅创建、取消均为**写操作**,执行前必须与用户确认,避免误操作。
- CLI 仅支持单论坛订阅/取消(`(un)subscribe forum --forum-id`,单数、单 ID),无批量接口;批量需求须逐个执行。
- 论坛 ID 需通过 `qianwen yunqi list forums --format json` 获取,禁止凭空猜测。
- `list summaries` 拉取即置已读,调用前须遵守「领取纪律」,避免误把全部摘要置为已读。
- 命令的具体参数与输出字段以 `qianwen yunqi --help`、`qianwen yunqi subscribe --help` 与命令实际输出为准。
- 所有输出建议使用 `--format json` 获取结构化数据,避免解析表格格式(含 ANSI 与 Unicode 边框)。
- 需要检索外部网站信息(大会公告、官网动态等)时,优先从大会官网 `https://yunqi.aliyun.com/` 查询,并提示用户外部信息以官网为准。