Skills로 돌아가기
qianwen-ai/apsara-conference-2026실행 전 동작 확인

SKILL DETAIL

yunqi-agent-attendance

qianwen-ai/apsara-conference-2026/yunqi-agent-attendance

>-

설치 수 · 202출처 보기

Installation

npx skills add https://github.com/qianwen-ai/apsara-conference-2026 --skill yunqi-agent-attendance

스킬 파일

SKILL.md

최근 동기화 · 2026. 9. 20.

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/` 查询,并提示用户外部信息以官网为准。