npx skills add ...
npx skills add senclaw-cdn.italent.cn/beisen-service-portal
北森办事入口。本 Skill 用于根据用户自然语言输入,检索系统菜单并按意图匹配推荐功能入口,引导员工或管理者进入对应的业务办理页面。基于 `beisen-cli staffservice employeeWork menuSearch` 搜索菜单,以可点击 Markdown 链接形式输出菜单入口。当用户询问办事、办事入口、办理、业务入口、菜单、去哪办、功能入口位置、导航路径,或输入疑似功能/页面/报表/菜单的名称或描述时触发。本 Skill 涉及业务操作引导,非纯数据查询。员工和管理者均可使用。
npx skills add senclaw-cdn.italent.cn/beisen-service-portal
CRITICAL — 开始前 MUST 读取 ../beisen-shared/SKILL.md
说明:权限校验、阈值过滤、终端适配均由后端
menuSearch自动处理,返回结果均已过滤。menuSearch检索的是租户实时菜单库(含自定义视图/鲁班页/ocean 菜单),因此不预设句式、不枚举关键词,能否命中由检索证据决定。
本 Skill 处理:搜索并唤起 HR 业务操作菜单、引导用户进入业务办理页面
不归本 Skill 处理:
| 场景 | CLI 命令 | 说明 |
|---|---|---|
| 搜索菜单 | beisen-cli staffservice employeeWork menuSearch --data '{"query":"<用户问题>","minScore":0.3}' | 按语义匹配检索租户菜单库 |
minScore固定传0.3,仅返回匹配分数严格大于该值的菜单。query传用户原始问题(可参考同义词表改写,提升命中率)。
在调用检索工具前,先判断用户意图类型:
| 意图类型 | 识别特征 | 处理方式 |
|---|---|---|
| 导航意图 | "在哪看XX"、"XX在哪"、"打开XX"、"XX菜单" | 进入步骤一,入场方式记为明确找入口 |
| 功能名意图 | 裸名词、短语、疑似功能/页面/报表/菜单的名称或描述性文本(如"我的目标""日报""周报",及任意自定义菜单名/描述) | 进入步骤一,入场方式记为探测式 |
| 操作意图 | "帮我请假"、"我要请假"、"请假申请"、"我要出差"、"我要休假"、"申请加班"、"提交报销"、"修改银行卡"等,即用户表达要执行某项业务操作的意图 | 进入步骤一,入场方式记为明确找入口 |
| 咨询意图 | "XX流程是什么"、"年假怎么算"、"离职政策" | 进入步骤一,有相关菜单则一并推荐;无则按入场方式退出(见步骤三) |
入场方式决定无命中时的退出行为:明确找入口 → 输出兜底文案;探测式 → 零输出静默退回(见步骤三)。若 Agent 已在弱信号仲裁中完成
menuSearch探测并确认菜单强命中后才路由进来,同样按探测式处理。
执行 CLI 命令搜索菜单:
参数说明:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 用户原始问题(可参考同义词表改写,提升命中率) |
| minScore | number | 是 | 固定传 0.3 |
同义词参考(仅作检索改写的辅助手段,不承担路由职责;未列入的表达直接用原文检索):
返回结构:
CLI 返回的外层包装:
关键路径:data.data.items(注意双层 data 嵌套)。
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| menuId | string | 菜单唯一标识 |
| menuName | string | 菜单名称(用于展示) |
| menuDescription | string | 菜单描述(可能为空) |
| menuLink | string | 菜单跳转链接(完整 URL,用于生成可点击链接) |
data.code == "200" → 业务成功,结果在 data.data:
itemsCount > 0 → 进入步骤二判断意图是否命中itemsCount == 0 或 items 为空 → 按步骤三的无命中分支处理data.code != "200" → 业务失败,原因在 data.message,按步骤四异常处理返回菜单是语义相近的候选,需逐一判断是否真正符合用户意图:
menuName、menuDescription 判断有命中 → 回复引导文案:你可能需要操作:,然后以 Markdown 链接列表输出命中的菜单。Agent 自主从返回数据中提取 menuName 和 menuLink,生成可点击链接:
输出规则:
menuName(菜单名称),URL 使用 menuLink(完整跳转地址)menuDescription 非空,可在链接后用括号补充简要描述,帮助用户判断- [日程](https://xxxx/xxx/oR352Sn1)(用于预定日程,员工也可查看自己和他人的日程)无命中(检索为空或返回菜单均不符合意图),按入场方式分支:
没找到这个入口,换个说法我再帮你看看?若 menuSearch 调用失败(code != "200" 业务失败、超时、异常、返回格式错误等):
没找到这个入口,换个说法我再帮你看看?当用户首次检索无命中后继续追问时,结合上下文补全 query:
beisen-cli staffservice employeeWork menuSearch --data '{"query":"在哪里看工资条","minScore":0.3}' → 判断返回菜单命中意图beisen-cli staffservice employeeWork menuSearch --data '{"query":"文化激励","minScore":0.3}' → 返回多个候选 → 判断多个菜单命中意图beisen-cli staffservice employeeWork menuSearch --data '{"query":"帮我请个假","minScore":0.3}' → 判断返回菜单命中意图beisen-cli staffservice employeeWork menuSearch --data '{"query":"我的目标","minScore":0.3}' → 返回菜单与输入语义一致,命中beisen-cli staffservice employeeWork menuSearch --data '{"query":"年假怎么算","minScore":0.3}' → 返回"假期余额"和"请假记录"菜单 → 与咨询内容相关,一并推荐menuSearch 返回 itemsCount=0没找到这个入口,换个说法我再帮你看看?menuSearch 返回 itemsCount=0没找到这个入口,换个说法我再帮你看看?menuSearch 直接编造 menuId 或 menuLinkmenuId 或 menuLinkmenuLink 必须从 CLI 返回中提取,严禁编造 URL