REQUIREMENTS.md 8.3 KB

网页指引 Skill 需求梳理文档

版本:v2.0(经 brainstorming/grilling 拷问后修订)| 日期:2026-09-07 | 状态:七项决策已与用户逐条确认

1. 背景与目标

矿井一通三防智能管控平台(通防管控平台)内嵌了智能助手(顶栏机器人图标,聊天面板形态)。平台页面多、层级深,用户记不住入口。需要一个"网页指引"skill,让用户用自然语言即可:

  1. 快速直达:说"帮我打开风门监测页面"→ 返回该页可点击链接 + 功能简介;
  2. 全局地图:说"给我网页地图"→ 聊天内输出全部页面树状地图,按需访问;
  3. 换环境不换脑子:部署地址变化时说"将网址换成 XXX"→ 所有链接前缀随之更换;
  4. 会用页面:说"风门怎么远程开"→ 给出页面内分步操作指引。

总目标:把"找页面"从 3-5 次点击/检索降为 1 句话,把"学页面"从摸索降为一问。

2. 实机验证事实(2026-09-07,182 演示环境,lizuo 测试账号)

事实 影响
智能助手面板支持 Markdown 蓝色可点击链接 链接直达方案可行 ✅
点链接后:AI 面板自动关闭 + 当前窗口路由跳转 链接即跳转,无需额外交互 ✅
现有实现给出的"风门监测与控制"链接点击后跳到了首页模型页而非风门页 现有实现链接指向有误 → 本 skill 替换它
现有回答格式已是"【页面名】+功能简介+🔗立即打开",且快捷 chips 预置了"帮我打开风门监测页面" 导航是智能助手预设场景,本次是固化+补全+纠错
智能助手每日配额 10 次 页面地图等一次回答要尽量全量,避免多次追问
权限外路由统一 404,无法区分"不存在/无权限" 权限需前置过滤(动态感知)
21 页详测 + 26 页路由模式验证 + 4 页 404 数据来源可靠,详见《通防平台页面学习记忆.md》

3. 已确认决策(与用户逐条对齐,共九项)

# 决策点 结论
D1 与平台现有实现关系 替换:本 skill 成为智能助手网页指引能力的唯一权威源
D2 智能体架构 有工具调用(function calling):skill 主形态为"数据文件+工具封装",prompt 注入为降级方案
D3 换前缀作用域 全局持久化:工具写后端配置,所有用户所有会话生效,带变更历史
D4 权限感知 按账号动态感知:运行时调平台菜单/权限接口,按当前用户过滤页面
D5 网页地图形态 聊天内树状图(通用性优先,不做平台弹窗)
D6 能力边界 指路 + 操作指引("怎么操作"给页面内步骤;21 个实测页有素材)
D7 清单维护 人工维护 pages.yaml + 运行时动态权限过滤(不做自动同步脚本)
D8 交付位置 仅工作区 D:\ZCodeWorkspaces\web-nav-guide\,不装用户级目录
D9 数据格式 YAML(人工维护)+ JSON(机器读取)双份,维护时改 YAML 后重新生成 JSON

4. 功能需求

F1 模糊页面导航(单页直达)【核心】

  • 触发:"打开/进入/跳转/带我去/看一下 + 页面/系统/页面名",如"帮我打开风门监测页面""打开风门操控""我要看主扇数据"。
  • 匹配策略(优先级):① name 精确 → ② aliases 精确(主扇/局扇/甲烷等口语词)→ ③ name/aliases/keywords 包含匹配 → ④ 分类名命中(转 F2 按类输出)。
  • 权限前置:匹配结果先按当前用户可见菜单(D4)过滤;不可见=未找到。
  • 输出:页面名 + 一句话简介 + 完整可点击链接。
  • 歧义:多候选并列时列前 3(简介+链接)供选择,不猜。
  • 未找到:"未找到此页面" + 最相近 3 个候选(权限过滤后)。
  • 设备类页面:path 已内置默认设备实例 ID,只说设备类型即可直达。

F2 网页地图(树状全量导航)【核心】

  • 触发:"网页地图/页面地图/都有哪些页面/平台功能一览/只看XX类页面"。
  • 输出:分类→子类→页面三级树,每页一句话简介+链接;标注当前部署地址;支持按大类筛选。
  • 全量输出(权限过滤后的全量),不省略条目——每日配额有限,一次给全。

F3 部署前缀切换【核心】

  • 触发:"将网址换成 XXX / 把前缀改为 XXX / 切换部署地址"。
  • 校验http(s)://host[:port];只有 host:port 时自动补 http:// 并告知;去尾斜杠;非法格式向用户确认。
  • 持久化(D3):调 set_base_url 工具写后端配置 + 追加 history;确认后用示例链接验证展示。
  • 降级:无工具环境仅会话内生效,明确告知"仅本会话有效"。

F4 权限与不可见页面(D4 动态感知)

  • 页面注册表每页带 menu_key,与平台菜单/权限接口返回对齐;
  • 所有输出(F1/F2/F6)先按当前用户可见 menu_key 集合过滤;
  • 用户执意要未开通页面 → "该页面您当前无权访问或未开通,请联系管理员"。

F5 通用性(跨智能体架构,D2/D9)

  • 主形态:数据文件(pages.yaml/pages.json + config)+ 4 个工具封装(query_page / get_page_map / set_base_url / get_visible_menus);
  • 降级形态:SKILL.md 指令 + 数据可直接注入系统提示词;
  • 兼容 Agentskills 目录规范(ZCode/Claude Code 直接挂载);
  • 数据与逻辑分离,维护只动 YAML。

F6 页面操作指引【新增,D6】

  • 触发:"XX怎么操作/怎么远程开风门/怎么一键测风/XX页面怎么用"。
  • 输出:页面链接 + 分步操作步骤(来自注册表 usage 字段)。
  • 素材边界:21 个实测页有完整步骤;未实测页 usage 标"待补充",回答时如实说明并给链接。

5. 非功能需求

编号 要求
N1 页面数据集中在 pages.yaml,运维人员无需懂代码即可增删改
N2 所有输出链接完整可点击(base_url+path 拼接,无双斜杠)
N3 全中文;简介每页 ≤60 字;操作指引分步、每步一句
N4 换矿部署:改 base_url + 换设备实例 ID + 对齐 menu_key 即可
N5 不采集不上传用户数据;skill 只读平台路由知识

6. 交付物清单

vent-web-nav/
├── SKILL.md              # 技能定义:工具调用主路径 + prompt注入降级 + 意图A-F
├── config.yaml           # 部署前缀(base_url + 变更历史;工具或人工写入)
├── references/
│   ├── pages.yaml        # 页面注册表(84页:别名/关键词/menu_key/路径/简介/操作指引)
│   ├── pages.json        # 由 pages.yaml 生成,机器读取
│   ├── build_pages.py    # 校验+生成脚本
│   ├── sync_pages.py     # 新功能发布后菜单差集同步
│   ├── query.py          # 命令行匹配测试
│   └── simulate_output.py # 输出效果模拟
├── ADAPTATION.md         # 三种架构接入指南 + 维护手册
├── GUIDE.md              # 使用与维护手册
└── REQUIREMENTS.md       # 本文档

7. 边界与开放问题

  1. 角色管理与用户管理在 docx 中共用同一 URL,暂按同址录入并注明,待管理员账号核实;
  2. 设备实例 ID 与矿井/模型绑定,换矿需重新录入(维护流程见 ADAPTATION.md);
  3. menu_key 命名约定是本 skill 假设,接入时需与平台菜单接口实际返回对齐(对齐方法见 ADAPTATION.md);
  4. 404 无法区分"不存在/无权限",统一按"未找到或无权限"话术;动态权限过滤上线后该场景大幅减少;
  5. 平台智能助手每日 10 次配额属于平台侧配置,与本 skill 无关。

8. 验收场景(交付时逐项演示)

# 输入 期望输出
A1 帮我打开风门监测页面 【风门监测与控制】+简介+正确链接(指向 monitor-gate 而非首页)
A2 给我网页地图(瓦斯类) 瓦斯类 5 页树状图+链接
A3 将网址换成 http://10.120.3.15:8092 校验+持久化+示例链接确认
A4 风门怎么远程开 风门页链接+分步操作(远程模式→开门按钮→操作历史)