Skip to content

Demo 公共规范 ​

项内容
适用范围本目录下的场景 PRD(T1-到校前简报.md 及后续)
目的把前端形态、智能体边界、定时任务方式、数据与输出规范这些「每个场景都一样」的内容抽出来;场景 PRD 只写场景本身
选型假设DeerFlow(高可能)

1. 总体形态 ​

Demo 不重做 AI 能力,只做小程序壳:

  • 小程序提供首页、日程、资讯、洞察、我的五个 tab;
  • 首页右下角「AI」悬浮球是唯一的对话入口,点击打开嵌入的 DeerFlow 聊天区;
  • 首页「本周 AI 运行洞察」卡片区展示最近 7 天的 L4 主动服务摘要;
  • 聊天区、智能体、定时任务、能力中心仍用 DeerFlow 自带能力。

每个场景 = 一个智能体 + 若干 Skill + 若干 MCP + 一个定时任务(如需要)。


2. 前端形态 ​

2.1 嵌入方式 ​

  • 小程序底部 tab:首页 / 日程 / 资讯 / 洞察 / 我的。
  • 首页右下角「AI」悬浮球:唯一对话入口,不设第二个聊天入口。
  • 点击悬浮球 → 打开小程序内的聊天页 → 用 web-view 加载 DeerFlow 聊天页。
  • 首页「本周 AI 运行洞察」卡片区展示最近 7 天的 L4 主动服务摘要,见 §2.7。
  • 只保留聊天区;隐藏左侧导航(新对话、对话、智能体、定时任务、能力中心、渠道、项目、设置和更多)、顶部工作区面包屑、网关状态、退出登录、会话列表。
  • 顶部保留当前智能体名称,让用户知道现在是教师助手还是学生助手。
  • 聊天区不新增业务卡片、不新增接口传数据;Agent 输出即聊天区内容;首页洞察卡片属于小程序壳,见 §2.7。
  • 隐藏这些元素需要改 DeerFlow 前端(组件开关或 CSS);如果是跨域 iframe,无法注入样式,必须同源部署或改源码。

2.2 单会话(AI 联系人) ​

  • 一个用户一条常驻会话:登录后始终进入同一条会话,用户看到的就是一条连续的聊天记录,不感知 session。
  • 不做会话管理:不展示会话列表、不提供「新对话」入口;退出再进入,看到的还是这条会话的历史。
  • 定时任务不新建会话:触发消息直接写入该用户的常驻会话,Agent 在同一条会话里回复;触发消息和回复都成为后续对话的上下文,用户追问时 Agent 能看到。
  • 用户正在聊天时触发:消息追加到当前时间轴,不打断、不切换会话;用户下一条输入仍属于同一条会话。
  • 多条任务同时触发:排队执行,避免消息交错。
  • 触发消息的展示:建议显示一条轻量系统消息(如「系统:生成今日简报」);也可以隐藏,只保留 AI 回复。
  • 上下文长度:单会话会越来越长,demo 不处理;生产需要摘要/裁剪。
  • 技术前提:调度器能把触发消息写入指定会话(DeerFlow 原生支持,或通过聊天 API 实现)。

2.3 移动端适配 ​

  • 宽度自适应;输入框贴底;软键盘不遮挡输入区。
  • Mermaid 容器宽度 100%,图表不横向溢出。

2.4 渲染能力 ​

元素要求
Markdown标题、列表、表格、加粗、代码块
Mermaidpie、xychart-beta、flowchart、sequenceDiagram
  • Mermaid 图表保留缩放/全屏;下载/复制在移动端隐藏。
  • xychart-beta 需要 Mermaid ≥ 10.3;如果显示成代码块,说明版本不够或渲染未开,demo 前必须解决。

2.5 不做什么 ​

  • 聊天区内不做业务卡片、按钮组件、独立页面;首页「本周 AI 运行洞察」卡片是小程序壳的一部分,不属于聊天区渲染。
  • 需要用户确认时,用文字或编号选项,不依赖前端组件。

2.6 页面元素清单 ​

区域元素移动端
左侧栏新对话、对话、智能体、定时任务、能力中心、渠道、项目、设置和更多隐藏
顶部网关状态、退出登录隐藏
顶部当前智能体名称保留
首页欢迎语、六个快捷入口(小惊喜/写作/研究/收集/学习/创建)隐藏
消息区Markdown、Mermaid、缩放/全屏保留
消息区图表下载/复制隐藏
底部“内容由 AI 生成”提示保留小字

输入框:

元素移动端说明
@ 技能/文件引用隐藏由 Agent 自动选择 Skill,不需要用户手动引用
附件上传保留,仅图片T8/S10 拍照报修用;限制 image/*,不支持其他附件
语音输入(ASR)保留需在目标 WebView 实测语音识别是否可用
优化输入隐藏用处不大
文本输入 + 发送保留核心

2.7 首页「本周 AI 运行洞察」 ​

  • 位置:首页「待办事项」下方,卡片列表,右上角「更多」。
  • 内容:所有 L4 主动服务的摘要,一卡一条,如「T1 到校前简报」「空间利用率偏低」「能耗异常」「外包能效波动」。
  • 展示范围:最近 7 天,超过 7 天的卡片自动移出。
  • 与聊天区的关系:每条主动服务同时进两个地方——聊天区(完整内容)+ 洞察卡片(摘要);卡片是入口,详细内容和追问在聊天区完成。
  • 按角色/权限过滤:用户只看到自己有权看到的卡片。
  • 点击:进入聊天区,看到该条主动服务的完整内容;「更多」进入完整列表。
  • Demo 阶段卡片可用预置示例数据;后续再接智能体输出。 20261104100224

3. 智能体配置与系统提示词边界 ​

3.1 智能体划分 ​

按角色建智能体,每个只挂本角色需要的 Skill 和 MCP:

智能体绑定能力
教师助手教师相关 Skill(T1–T9)+ 课程/设备/天气/地图 MCP
学生助手学生相关 Skill(S1–S11)+ 课程/空间/工单/充电 MCP
运维助手运维相关 Skill(O1–O9)+ 巡检/告警/工单/能耗 MCP
管理者助手管理相关 Skill(M1–M11)+ 指标/能耗/人流/巡检统计 MCP
访客助手(预留)访客/企业嘉宾相关 Skill(E1,待设计)+ 访客/门禁/导航 MCP
校友助手(预留)校友/返校相关 Skill(E2,待设计)+ 校友活动/预约/导航 MCP

注:访客/企业嘉宾、校友/返校生两类外部角色对应 08 §8,尚未详细设计;先预留智能体位,Skill/MCP 待 E1/E2 的 PRD 确定,不进入本期 demo 范围。

3.2 能力边界(写进系统提示词) ​

  • 对话入口只做已配置 Skill / MCP 范围内的问答与查询。
  • 禁止通过对话创建、修改、删除、暂停定时任务;定时任务只在「定时任务」页面由实施人员配置。
  • 禁止调用与场景无关的能力:联网搜索、网页抓取、生成幻灯片/图片/视频、执行代码、写文件。
  • 工具无返回时说「暂无」,不按 0 或「正常」处理;不编造数据。
  • 越权请求(他人数据、跨范围)直接拒绝并说明原因。

3.3 系统提示词追加段(草稿) ​

你是上海交通大学新院区 IBMS 的{角色}助手。你只能在已配置的技能和工具范围内回答。

禁止:
- 通过对话创建、修改、删除、暂停任何定时任务;
- 联网搜索、抓取网页、生成幻灯片/图片/视频、执行代码、写文件;
- 回答配置范围之外的问题;越权请求直接拒绝并说明原因。

无数据时回答「暂无」,不要编造,不要把空值当作 0 或「正常」。

3.4 实现方式与风险 ​

  • DeerFlow 默认系统提示词可能允许创建定时任务、联网搜索等;需要确认能否覆盖或追加。
  • 如果系统提示词不可改,用工具白名单兜底:只挂载本场景 MCP,不挂通用工具(任务管理、搜索、代码执行等)。
  • 这条是通用配置,场景 PRD 不重复。

3.5 角色 → 智能体加载 ​

角色互斥时,一个用户对应一个智能体;同一个对话里不需要同时跑两个智能体。

推荐:一角色一智能体,登录后自动加载。

角色智能体
教师教师助手
MBA 学生学生助手
运维运维助手
管理者管理者助手
访客 / 企业嘉宾访客助手(预留)
校友 / 返校生校友助手(预留)
  • 登录后从 IAM 取角色,移动端壳直接打开对应智能体的聊天页。
  • 同一角色的不同用户共用同一个智能体;数据范围靠用户 ID + MCP 权限控制,不靠智能体区分。
  • 需要确认:DeerFlow 智能体是否支持 URL/参数直接打开、是否支持默认智能体、登录角色能否传给 DeerFlow。
  • 不支持自动加载时,demo 兜底为「登录后手工选一次智能体」。
  • 若一个用户有多个角色,入口做角色切换,不同时加载两个智能体。

4. 定时任务规范 ​

  • 统一在 DeerFlow「定时任务 → 新建任务」页面配置,不由对话创建。
  • 表单字段对应:
表单字段填法
标题场景编号 + 名称,如「T1 教师到校前简报」
任务指令执行「<场景>」skill。当前用户 ID:<id>。
运行时间重复 / 每天 / 具体时间 / Etc/GMT-8(北京时间)
每次运行的目标(可选)一句话描述本次要产出的结果
保险上限:运行次数Demo 一般留空
保险上限:结束时间Demo 一般留空
高级选项默认不配置
  • 任务指令已经包含「执行哪个 Skill + 用户 ID」,Skill 内部再调 MCP。
  • 如果定时任务能绑定智能体,绑定对应角色的智能体(如 T1 → 教师助手);不能绑定就用默认智能体,并在任务指令里写清角色。
  • Demo 固定演示账号;生产上按「当天有课/有任务的用户」逐个触发。
  • 每个场景最多 1 个定时任务,每天最多 1 条,避免打扰。
  • Demo 不做微信服务号/订阅消息/企微推送:微信服务号推送限制多、配置麻烦,本期不做。定时任务结果写入该用户的常驻会话 + 「本周 AI 运行洞察」卡片,用户打开小程序后可见;熄屏收不到推送的问题本期不解决。
  • 所有 L4 主动服务都同时进入常驻会话和「本周 AI 运行洞察」卡片:常驻会话放完整内容,卡片放摘要;卡片只展示最近 7 天(见 §2.7)。

5. 数据与演示规范 ​

  • 只用真实数据或明确标注的模拟数据,不编造。
  • 空值 ≠ 0;无数据写「暂无」。
  • 手机号、车牌、身份证等个人信息脱敏。
  • 演示账号固定,不展示他人数据。
  • 演示前检查:MCP 可用、外部服务(天气/地图)可用、课表等数据已同步。

6. 通用输出规范 ​

  • 结论先行:第一段给结论,细节在后。
  • 元素:Markdown 文字 + 表格 + Mermaid;不输出 JSON、不用 HTML。
  • 图表选择:
目的图表
占比pie
趋势 / 对比xychart-beta(line / bar)
流程flowchart
交互时序sequenceDiagram
  • 一次回复最多 1–2 张图,避免刷屏。
  • 口径有变化要说明,如「以教务为准」。

6.1 图表配色 ​

所有场景的数据图(折线、柱状、饼图)用同一套色板,不各画一套。流程图、时序图、状态图不涉及配色,保持默认。

用途颜色
主色(单序列折线 / 柱状、饼图首项)#5B8FF9
次要 / 未占用(饼图的「剩余」「空闲」)#C9CDD4
多序列扩展顺序#5B8FF9 → #5AD8A6 → #F6BD16 → #E8684A

写法是在 mermaid 代码块开头加 frontmatter,只设 themeVariables、不设 theme——图表底色跟随读者编辑器的明暗主题,不会出现深色文档里嵌一块白底。

折线图(xychart-beta + line):

markdown
```mermaid
---
config:
  themeVariables:
    xyChart:
      plotColorPalette: '#5B8FF9'
---
xychart-beta
    title "302 近 14 天日用电(kWh)"
    x-axis ["10-19","10-21","10-23"]
    y-axis "kWh" 0 --> 80
    line [42,68,39]
```

柱状图(xychart-beta + bar)。多根柱子代表不同对象时仍用同一主色,靠 x 轴标签区分:

markdown
```mermaid
---
config:
  themeVariables:
    xyChart:
      plotColorPalette: '#5B8FF9'
---
xychart-beta
    title "各课程选课率(%)"
    x-axis ["公司金融","投资学","案例研讨"]
    y-axis "选课率 %" 0 --> 100
    bar [84,84,67]
```

同一张图里有两条以上 line / bar(如"本周 vs 上周")时,按色板顺序给多个颜色:

markdown
      plotColorPalette: '#5B8FF9, #5AD8A6'

饼图(pie)。两类(已用 / 剩余)用主色 + 浅灰:

markdown
```mermaid
---
config:
  themeVariables:
    pie1: '#5B8FF9'
    pie2: '#C9CDD4'
---
pie title "302 选课情况"
    "已选 42 人" : 42
    "剩余 8 人" : 8
```

分项占比(≥3 项)按色板顺序取色:

markdown
```mermaid
---
config:
  themeVariables:
    pie1: '#5B8FF9'
    pie2: '#5AD8A6'
    pie3: '#F6BD16'
    pie4: '#E8684A'
---
pie title "302 近 30 天分项用电"
    "空调" : 58
    "照明" : 22
    "插座" : 14
    "动力" : 6
```

注:plotColorPalette 需要 Mermaid ≥ 10.9(Typora 新版、GitHub、mermaid@11 均支持);版本过低时不生效但也不会报错。多图同页时每张图各自写 frontmatter。


7. 与场景 PRD 的分工 ​

文档写什么
本文所有场景共用的前端形态、智能体边界、定时任务方式、数据与输出规范
场景 PRD(如 T1-到校前简报.md)场景定义、输出模板、MCP、Skill、定时任务参数、权限、验收、待确认

注:场景 PRD 不重复本文内容,只引用。


8. 场景 PRD 模板(后续模块用) ​

新场景先读 08_移动端AI场景设计.md §10 的模块定义,再按下面骨架写:

  1. 场景定义(一句话、用户、触发、边界)
  2. Demo 形态(只写本场景特有,通用部分引用本文)
  3. Agent 输出设计(模板 + 示例 + 异常降级)
  4. MCP 设计(工具、入参、返回字段)
  5. Skill 设计(流程、提示词、few-shot、失败策略)
  6. 定时任务配置(只写本场景的表单值)
  7. 权限与数据范围
  8. 验收要点
  9. 已确认与待确认
  10. 关联文档(只列引用,不写内容)

写作原则:

  • 场景 PRD 是最终设计:和 00/07/08 不一致时,以场景 PRD 为准,回写更新前面文档。
  • 不写前端数据结构、接口字段、可行性分级、报价/分期。
  • 不重复本文的前端形态、系统提示词边界、定时任务方式、输出规范。
  • 只写本场景的:输出长什么样、要哪些 MCP、Skill 怎么编排、定时任务参数、权限、验收。
  • 关联文档只写「文档 + 章节 + 一句话」,不复制内容。

8.1 对话示例的排版约定 ​

示例统一写成「用户 / Agent」两段式对话,读者扫一眼就知道哪句是人说的、哪句是 Agent 回的。

markdown
**用户**

> 我的车充得怎么样了?

**Agent**

> 你的车(苏A·1\*\*89)正在 B2 东区 03 号桩充电,当前电量 **68%**。
>
> | 项目 | 内容 |
> |---|---|
> | 车牌 | 苏A·1\*\*89 |
>
> 1. 充满后提醒我
> 2. 查 B2 其他空位

**注**:文档自己的口径说明写在这里,不进引用块。
项约定
用户消息**用户** 独立一行 → 空行 → 原话放在引用块里;原话直接写正文,不再加「」包裹
Agent 消息**Agent** 独立一行 → 空行 → 整条回复(文字 + 表格 + 编号选项 + Mermaid)放在同一个引用块里,块内空行也要带 >
主动推送没有用户提问时只出一个引用块,标签写清触发方式,如 **Agent(07:30 定时推送)**、**Agent(事件触发)**
Mermaid放进引用块:> ```mermaid … > ``` 。Typora / 飞书可正常渲染;GitHub 不支持引用块内的 Mermaid,以 Typora 预览为准
模板代码块模板与「结构固定:…」这类组装说明,统一放在第 3 章末尾的 ### 3.x 输出模板(开发参考) 一节,开头写明「本节给 Skill 组装输出用,业务评审可跳过」;绝不能插在 **用户** 和 **Agent** 之间,也不要放在示例之前挡住阅读路径
文档说明不用引用块,写成 **注**:…。引用块只表示一条对话消息,口径、边界、补充说明一律用「注」
文首元信息统一用两列表格 `

这样定的原因:原先用户问题和 Agent 回复都用引用块,和文档里的注释性引用块混在一起,扫读时要先判断上下文;分开之后「引用块 = 有人说过的话」是一条稳定的视觉规则。

内部方案材料,请勿外传