Skip to content

AI 空间智能体 — 猜你想问配置管理 PRD v1.0

版本记录

  • v2.0 (2026-07-15):重大重构——移除「可见角色」体系,替换为「子智能体(能力)数据字典」;Agent ID 从单值文本输入改为能力多选;数据模型 rolesagent_ids
  • v1.3 (2026-07-13):同步原型变更——表格/筛选/表单统一分组列在角色前;批量操作栏新增批量启用/禁用按钮;表单新增分组字段;新增变更人/变更时间列;新增查询按钮。
  • v1.2 (2026-07-13):移除用户角色定义章节,左侧导航布局修正,增加问题文本模糊查询,优先级改为 1-100 默认 50。
  • v1.1 (2026-07-13):Agent 改为文本输入(不与 Dify 打通),角色改用搜索式标签多选(中台中文角色名),移除 Chatbox 端集成章节。
  • v1.0 (2026-07-13):初稿
  • v1.0 (2026-07-13):初稿

1. 产品定位

目标用户:运营人员 / 实施人员(配置各 AI 智能体 Chatbox 的默认推荐问题)。

核心功能:管理「猜你想问」问题列表——每一条问题绑定到一或多个子智能体(能力),用户在空对话状态下看到关联了当前激活能力的推荐问题,点击即可快速发起对话。

设计原则

  • 轻量配置:只有一套列表页面 + 单个弹窗表单 + 导入导出,不做复杂交互
  • 能力关联:问题通过「子智能体(能力)」多选关联,一个问题可同时属于多个能力(如「闲聊」和「会议预定」)
  • 数据字典驱动:子智能体名称 ↔ Agent ID 的映射由中台数据字典统一维护,页面只显示名称
  • 前端截取:各端按屏幕尺寸自行决定展示数量,后端不做截断

2. 页面设计

2.1 整体布局

┌──────────┬───────────────────────────────────────────────────────────┐
│ 左侧导航  │  首页 > AI 设置 > 猜你想问                                │
│          │                                                          │
│ 🧬语义   │  ┌──────────────────────────────────────────────────┐   │
│ 📦产品   │  │ [问题...] [能力 ▼] [标签...] [状态 ▼] [查询]      │   │
│ 🏢空间   │  │ [+ 新建]  [📥 导入] [📤 导出] [📋 下载空模板]    │   │
│ 💡设备   │  ├──────────────────────────────────────────────────┤   │
│ 🔧诊断   │  │  □ 问题文本 │ 能力/智能体   │标签│优先│启用│...│   │
│ 💬引导   │  │  ──────────────────────────────────────────────── │   │
│ ⚙️       │  │  □ 帮我查.. │ [会议预定]    │会议│ 50 │ ✅│...│   │
│          │  │  □ C-304... │ [设备控制]    │  — │ 50 │ ✅│...│   │
│          │  │  □ 今天待办工单  │ [工单创建] │ 维修 │ 50 │ ☑️ │...│   │
│          │  │  □ 巡更流程 │ [闲聊]       │  — │ 40 │ ☑️ │...│   │
│          │  │  ...                                            │   │
│          │  │                                                  │   │
│          │  │  共 12 条                          1/1 页       │   │
│          │  └──────────────────────────────────────────────────┘   │
│          │                                                          │
│          │  📌 问题可关联多个能力/子智能体,选择后 Chatbox 端按匹配展示│   │
└──────────┴───────────────────────────────────────────────────────────┘

左侧导航

  • 遵循现有管理后台左侧导航布局,💬 引导 图标入口与其他模块并列
  • 点击「猜你想问」进入当前页面

2.2 筛选栏

  • 问题搜索:文本输入框,对 question_text 进行模糊匹配(LIKE 查询),默认空
  • 能力筛选:下拉多选面板,选中一或多个子智能体名称后,仅展示关联了其中任一能力的问题。不选 = 全部(默认「全部」)
  • 标签筛选:文本输入框,对 tags 进行模糊匹配(LIKE 查询),默认空
  • 状态筛选:下拉选择「全部 / 仅启用 / 仅禁用」,默认「全部」
  • [查询] 按钮:触发筛选刷新(输入框支持 oninput 即时过滤,按钮提供显式触发)
  • 各筛选条件间为 AND 关系

2.3 操作按钮

按钮功能
[+ 新建]打开新建问题弹窗
[📥 导入]上传 CSV/JSON 文件,追加式导入(见 §4 导入导出)
[📤 导出]下载当前筛选结果(见 §4 导入导出)
[📋 下载空模板]下载空模板 CSV 文件(仅表头 + 一行示例)

勾选表格行后出现批量操作栏:

按钮功能
[批量编辑]打开批量能力编辑弹窗
[批量启用]直接将选中记录全部启用(无需弹窗确认)
[批量禁用]直接将选中记录全部禁用(无需弹窗确认)
[批量删除]删除选中记录(需确认)

2.4 表格列

说明
多选框支持批量操作(批量编辑、批量启用、批量禁用、批量删除)
问题文本问题内容,过长时省略展示
能力/智能体关联的子智能体名称标签(来自中台数据字典),可多选。以蓝色标签展示,一个标签 = 一个能力
标签业务自定义分类标签,仅管理界面展示和筛选用(如「会议」「设备」「工单」)
优先级数值越小越靠前展示
启用启用/禁用开关
变更人最近修改该条记录的用户
变更时间最近修改时间
操作编辑 / 删除按钮

2.5 新建/编辑弹窗

点击 [+ 新建] 或某行的编辑按钮,弹出表单弹窗:

┌──────────────────────────────────────────┐
│  新建猜你想问                        [✕]  │
├──────────────────────────────────────────┤
│                                          │
│  问题文本 *                               │
│  ┌──────────────────────────────────┐   │
│  │ 帮我查一下今天的会议               │   │
│  └──────────────────────────────────┘   │
│                                          │
│  标签(可选)                            │
│  ┌──────────────────────────────────┐   │
│  │ 会议                              │   │
│  └──────────────────────────────────┘   │
│                                          │
│  关联能力/子智能体 *                      │
│  ┌──────────────────────────────────┐   │
│  │ [会议预定 ✕] [闲聊 ✕]            │   │
│  │ [🔍 搜索能力名称添加...          ] │   │
│  ├──────────────────────────────────┤   │
│  │ 📋 从以下列表选择能力:           │   │
│  │ 闲聊                              │   │
│  │ 设备控制  ← 点击选择               │   │
│  │ 会议预定                           │   │
│  │ 工单创建                           │   │
│  │ 数据查询                           │   │
│  └──────────────────────────────────┘   │
│  (可多选,选择后该问题将关联到对应的     │
│   子智能体 Chatbox)                     │
│                                          │
│  优先级                                   │
│  ┌──────────────────────────────────┐   │
│  │ [50                           ] │   │
│  └──────────────────────────────────┘   │
│                                          │
│  启用状态                                 │
│  ○ 已启用  ○ 已禁用                       │
│                                          │
│  [取消]                    [保存]        │
└──────────────────────────────────────────┘

表单规则

  • 问题文本 *:必填,最长 200 字符
  • 关联能力/子智能体 *:搜索式标签多选——点击输入框弹出搜索面板,显示数据字典中所有可用子智能体(中文名称);支持键盘输入过滤;选中的能力以标签形式展示在输入区,点击标签 ✕ 移除。必选至少一个能力
  • 优先级:必填,正整数,范围 1-100,默认 50
  • 启用状态:开关,默认「已启用」

能力数据来源:中台统一「子智能体数据字典」提供 KV 映射(name ↔ agent_id)。配置时存储 agent_ids 数组,页面展示名称。

2.6 批量编辑

选中多条记录后,操作栏出现「批量编辑」按钮:

┌──────────────────────────────────────────┐
│  批量编辑 (已选 3 条)                 [✕]  │
├──────────────────────────────────────────┤
│                                          │
│  以下字段若不填写,则保持原有值不变         │
│                                          │
│  关联能力/子智能体                         │
│  ┌──────────────────────────────────┐   │
│  │ [会议预定 ✕] [闲聊 ✕]            │   │
│  │ [🔍 搜索添加能力...             ] │   │
│  ├──────────────────────────────────┤   │
│  │ 📋 从以下列表选择能力:           │   │
│  │ 闲聊                              │   │
│  │ 设备控制  ← 点击                   │   │
│  │ 会议预定                           │   │
│  │ 工单创建                           │   │
│  │ 数据查询                           │   │
│  └──────────────────────────────────┘   │
│  (修改后将覆盖所有选中记录的能力配置)     │
│                                          │
│  [取消]                    [保存]        │
└──────────────────────────────────────────┘

批量编辑规则

  • 仅支持批量编辑「关联能力/子智能体」字段
  • 选择了新的能力 → 直接覆盖所有选中记录的 agent_ids 字段(不做合并)
  • 留空不修改

批量启用/禁用独立为快捷按钮(在批量操作栏中直接展示),无需弹窗:


4. 导入导出

4.1 导出

点击 [📤 导出],下载当前筛选条件下的结果集。

CSV 格式

csv
问题文本,能力名称,优先级,标签
帮我查一下今天的会议,会议预定,50,会议
C-304 的空调开了吗,设备控制,60,设备
今天有什么待办工单,工单创建;闲聊,30,工单
  • 编码:UTF-8 with BOM(兼容 Excel 中文)
  • 能力名称 列:多个子智能体名称用英文分号 ; 分隔,映射自中台数据字典
  • 字段包含 标签(业务自定义标签),导出一定有该列,导入时可缺省
  • 导入默认启用,CSV 中不包含启用状态列
  • 兼容旧版英文表头(question_text / agent_ids / priority / tags

JSON 格式(备选):

json
[
  {
    "question_text": "帮我查一下今天的会议",
    "agent_ids": ["会议预定"],
    "priority": 50,
    "tags": "会议"
  }
]

注:JSON 格式字段名保持英文(question_text / agent_ids / priority / tags),agent_ids 的值填写子智能体中文名称。

4.2 导入

点击 [📥 导入],选择 CSV 或 JSON 文件上传。

导入规则

  • 追加式导入:上传文件的问题逐条插入,不清除已有数据
  • 去重覆盖:以 agent_ids + question_text 为唯一键,文件中若与已有记录重复 → 覆盖该记录的 agent_idspriorityenabledtags
  • 批量一次性提交:文件内所有记录解析验证后,一次性提交事务,全部成功或全部回滚

导入流程

用户选择文件 → 系统解析验证 → 在页面显示预览 ─→ 用户确认 → 执行导入

                              ├ 成功 N 条
                              ├ 跳过 M 条(重复且数据不变)
                              └ 错误 K 条(展示错误行号+原因)

文件校验规则

规则处理方式
缺少必填列(问题文本 / 能力名称)报错,不执行
某一行的「问题文本」为空跳过该行,记入错误统计
「能力名称」为空或包含无法识别的能力名称跳过该行,记入错误统计
「优先级」不是 1-100 的正整数跳过该行,记入错误统计

4.3 空模板

点击 [📋 下载空模板] 下载,内容:

csv
问题文本,能力名称,优先级,标签
示例:帮我查一下明天的会议,会议预定,50,会议
  • 首行为表头
  • 第二行为示例行(带数据),供用户参考格式后删除替换
  • 模板有 BOM 头,Excel 直接打开不乱码

5. 数据模型

5.1 数据库表:faq_questions

字段类型约束说明
idUUIDPK主键
agent_idsJSON / TEXT[]NOT NULL关联的子智能体 Agent ID 列表(至少一个),映射自中台数据字典
question_textVARCHAR(200)NOT NULL问题文本
priorityINTNOT NULL DEFAULT 50排序优先级 1-100,值越小越靠前
enabledBOOLEANNOT NULL DEFAULT true启用/禁用
tagsVARCHAR(64)DEFAULT NULL业务自定义标签,仅管理界面展示和筛选用
updated_byVARCHAR(64)DEFAULT NULL最近修改人
created_atTIMESTAMPNOT NULL
updated_atTIMESTAMPNOT NULL最近修改时间

唯一约束(agent_ids, question_text) — 同一组能力下不允许重复问题文本。

索引

  • (agent_ids, enabled, priority) — Chatbox 端查询(GIN 索引)
  • (agent_ids, question_text) — 唯一键 + 导入去重

5.2 子智能体数据字典

中台维护一张独立的数据字典表,用于子智能体名称与 Agent ID 的映射:

显示名称Agent ID说明
闲聊qa-agentQA_Chat 闲聊对话
设备控制device-controlSA_Device_Control 设备控制
会议预定meeting-adminSA_Reservation 空间预约
工单创建ticket-agentFA_Ticket 工单建单
数据查询data-queryData_Query → ChatBI 数据分析

管理前端页面只展示「显示名称」,不展示 Agent ID。多选时存储 agent_ids 数组。


6. API 设计

6.1 客户端接口(Chatbox 端调用)

GET /api/v1/faq-questions?agent_ids={agentId1,agentId2}

说明:返回指定子智能体(可多个)关联的已启用问题列表。Agent ID 与数据字典一致。

查询逻辑

sql
WHERE agent_ids CONTAINS ANY :agentIds
  AND enabled = true
ORDER BY priority ASC, created_at ASC

响应示例

json
{
  "code": 0,
  "data": [
    { "id": "uuid-1", "question_text": "帮我查一下今天的会议", "priority": 1 },
    { "id": "uuid-2", "question_text": "C-304 空调开了吗", "priority": 2 }
  ]
}

6.2 管理端接口

方法路径说明
GET/api/v1/faq-questions列表查询(支持 agent_ids / enabled 筛选 + 分页)
POST/api/v1/faq-questions新建问题
PUT/api/v1/faq-questions/:id编辑问题
DELETE/api/v1/faq-questions/:id删除问题
POST/api/v1/faq-questions/batch-delete批量删除(传 ID 数组)
PUT/api/v1/faq-questions/batch-edit批量编辑(传 ID 数组 + 要修改的字段)
POST/api/v1/faq-questions/import导入(上传 CSV/JSON 文件)
GET/api/v1/faq-questions/export导出(支持当前筛选条件参数)
GET/api/v1/faq-questions/import-template下载空模板

7. 边界场景与错误处理

场景处理方式
同能力下配置了 100+ 个问题管理端分页正常展示;Chatbox 端按 priority 取前 N 条,N 由各端自定
能力/子智能体在数据字典中被删除管理页面仍展示已关联的能力名称(保留原值),但标记为「已删除」灰色标记;新增时不再出现在可选列表中
导入文件编码非 UTF-8服务端检测编码,非 UTF-8 报错提示用户重新导出
导入文件超过 1MB服务端前置校验,超过则拒绝并提示
导入数据全部合法全部导入,返回成功计数
导入数据部分合法部分非法合法部分导入,非法部分跳过并展示错误明细(行号 + 原因)
同时多人编辑同一问题乐观锁(updated_at 比对),提交时版本冲突则提示用户刷新

Released under the Private License.