skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
senclaw-cdn.italent.cn2.3k installs

beisen-service-portal

北森办事入口。本 Skill 用于根据用户自然语言输入,检索系统菜单并按意图匹配推荐功能入口,引导员工或管理者进入对应的业务办理页面。基于 `beisen-cli staffservice employeeWork menuSearch` 搜索菜单,以可点击 Markdown 链接形式输出菜单入口。当用户询问办事、办事入口、办理、业务入口、菜单、去哪办、功能入口位置、导航路径,或输入疑似功能/页面/报表/菜单的名称或描述时触发。本 Skill 涉及业务操作引导,非纯数据查询。员工和管理者均可使用。

How do I install this agent skill?

npx skills add https://senclaw-cdn.italent.cn --skill beisen-service-portal
view source ↗

Is this agent skill safe to install?

No partner audit is available yet. Read the source before installing.

What does this agent skill do?

办事入口

CRITICAL — 开始前 MUST 读取 ../beisen-shared/SKILL.md

任务目标

  • 本 Skill 用于:根据用户自然语言输入,检索系统菜单并按意图匹配推荐功能入口
  • 触发条件:用户询问功能入口位置、导航路径,表达业务操作意图,或输入疑似功能/菜单名称的文本(含 Agent 弱信号仲裁后的探测式路由)

说明:权限校验、阈值过滤、终端适配均由后端 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 命令搜索菜单:

beisen-cli staffservice employeeWork menuSearch --data '{"query":"<用户原始问题>","minScore":0.3}'

参数说明:

参数类型必填说明
querystring是用户原始问题(可参考同义词表改写,提升命中率)
minScorenumber是固定传 0.3

同义词参考(仅作检索改写的辅助手段,不承担路由职责;未列入的表达直接用原文检索):

  • "打卡" / "签到" → "考勤"
  • "工资" / "薪水" → "薪资"
  • "请假" / "休假" → "假期"
  • "打开日程菜单" → "日程"

返回结构:

CLI 返回的外层包装:

{
  "ok": true,
  "identity": "user",
  "data": {
    "code": "200",
    "data": {
      "itemsCount": 6,
      "items": [
        {
          "menuId": "d594f7c9-153f-4ea0-9527-7a8f4b4740f3",
          "menuName": "日程",
          "menuDescription": "用于预定日程,员工也可查看自己和他人的日程",
          "menuLink": "https://xxxx/xxx/oR352Sn1"
        }
      ]
    },
    "message": null
  }
}

关键路径:data.data.items(注意双层 data 嵌套)。

字段说明:

字段类型说明
menuIdstring菜单唯一标识
menuNamestring菜单名称(用于展示)
menuDescriptionstring菜单描述(可能为空)
menuLinkstring菜单跳转链接(完整 URL,用于生成可点击链接)
  • data.code == "200" → 业务成功,结果在 data.data:
    • itemsCount > 0 → 进入步骤二判断意图是否命中
    • itemsCount == 0 或 items 为空 → 按步骤三的无命中分支处理
  • data.code != "200" → 业务失败,原因在 data.message,按步骤四异常处理

步骤二:判断用户意图是否命中

返回菜单是语义相近的候选,需逐一判断是否真正符合用户意图:

  • 结合用户问题和 menuName、menuDescription 判断
  • 根据意图精度动态控制输出数量,上限 4 个:
    • 精确意图(单一功能):1-2 个
    • 中等意图(一类功能):2-3 个
    • 宽泛意图(一个领域):最多 4 个
  • 若无菜单命中意图,按步骤三的无命中分支处理

步骤三:输出结果

  • 有命中 → 回复引导文案:你可能需要操作:,然后以 Markdown 链接列表输出命中的菜单。Agent 自主从返回数据中提取 menuName 和 menuLink,生成可点击链接:

    - [菜单名称1](菜单链接1)
    - [菜单名称2](菜单链接2)
    

    输出规则:

    • 链接文本使用 menuName(菜单名称),URL 使用 menuLink(完整跳转地址)
    • 若 menuDescription 非空,可在链接后用括号补充简要描述,帮助用户判断
    • 示例:- [日程](https://xxxx/xxx/oR352Sn1)(用于预定日程,员工也可查看自己和他人的日程)
  • 无命中(检索为空或返回菜单均不符合意图),按入场方式分支:

    • 明确找入口(用户明确询问入口/导航/操作)→ 输出兜底文案:没找到这个入口,换个说法我再帮你看看?
    • 探测式(功能名意图/咨询意图/Agent 弱信号仲裁转入)→ 零输出静默退回:不输出任何文案、解释或兜底语,由 Agent 按失败兜底链继续处理(知识查询/兜底)

步骤四:异常处理

若 menuSearch 调用失败(code != "200" 业务失败、超时、异常、返回格式错误等):

  1. 检测当前会话中是否有其他可用 Skill(如 ../beisen-knowledge/SKILL.md 知识库检索、../beisen-data-query/SKILL.md 数据查询等)
  2. 若有可用 Skill → 将用户原始问题转交对应 Skill 处理
  3. 若无可替代 Skill → 输出兜底文案:没找到这个入口,换个说法我再帮你看看?

多轮对话

当用户首次检索无命中后继续追问时,结合上下文补全 query:

  • 用户追问中省略主语或宾语时,从上一轮对话中提取并拼接
  • 示例:用户先问"在哪看我的工资" → 无命中 → 追问"那出勤呢?" → query 补全为"在哪看我的出勤"

使用示例

示例 1:导航意图命中

  • 输入:用户问"在哪里看工资条"
  • 处理:执行 beisen-cli staffservice employeeWork menuSearch --data '{"query":"在哪里看工资条","minScore":0.3}' → 判断返回菜单命中意图
  • 输出:
    你可能需要操作:
    - [工资条](https://xxxx/xxx/xxxxxx)
    

示例 2:操作意图命中(多菜单)

  • 输入:用户说"我想打开文化激励"
  • 处理:执行 beisen-cli staffservice employeeWork menuSearch --data '{"query":"文化激励","minScore":0.3}' → 返回多个候选 → 判断多个菜单命中意图
  • 输出:
    你可能需要操作:
    - [文化激励](https://xxxx/xxx/xxxxxx)
    - [文化激励管理](https://xxxx/xxx/yyyyyy)
    

示例 3:操作意图命中(请假/出差/休假)

  • 输入:用户说"帮我请个假" / "我要出差" / "我要休假"
  • 处理:意图分类为操作意图 → 执行 beisen-cli staffservice employeeWork menuSearch --data '{"query":"帮我请个假","minScore":0.3}' → 判断返回菜单命中意图
  • 输出:
    你可能需要操作:
    - [请假申请](https://xxxx/xxx/xxxxxx)
    

示例 4:功能名意图(裸名词)命中

  • 输入:用户说"我的目标"(或"日报""周报",或某自定义菜单的名称/描述文本)
  • 处理:功能名意图 → 执行 beisen-cli staffservice employeeWork menuSearch --data '{"query":"我的目标","minScore":0.3}' → 返回菜单与输入语义一致,命中
  • 输出:
    你可能需要操作:
    - [我的目标](https://xxxx/xxx/xxxxxx)
    

示例 5:咨询意图有相关菜单

  • 输入:用户问"年假怎么算"
  • 处理:执行 beisen-cli staffservice employeeWork menuSearch --data '{"query":"年假怎么算","minScore":0.3}' → 返回"假期余额"和"请假记录"菜单 → 与咨询内容相关,一并推荐
  • 输出:
    你可能需要操作:
    - [假期余额](https://xxxx/xxx/xxxxxx)
    - [请假记录](https://xxxx/xxx/yyyyyy)
    

示例 6:明确找入口但无返回

  • 输入:用户问"怎么修改银行卡信息",menuSearch 返回 itemsCount=0
  • 输出:没找到这个入口,换个说法我再帮你看看?

示例 7:探测式入场无命中 → 静默退回

  • 输入:用户说"月度总结"(功能名意图),menuSearch 返回 itemsCount=0
  • 处理:探测式入场 → 零输出静默退回,由 Agent 继续走知识查询/兜底;不输出"没找到入口"等任何文案

示例 8:多轮对话接续

  • 第一轮:用户问"在哪看我的工资"(明确找入口)→ 无命中 → 输出没找到这个入口,换个说法我再帮你看看?
  • 第二轮:用户追问"那出勤呢?" → query 补全为"在哪看我的出勤" → 执行 CLI 命令检索

示例 9:路由判断 — 数据查询非本 Skill 范围

禁止事项

  • 不得跳过 menuSearch 直接编造 menuId 或 menuLink
  • 不得修改后端返回的 menuId 或 menuLink
  • 不得在无命中时输出菜单链接列表
  • 不得强制输出菜单:意图不匹配时按入场方式输出兜底文案或静默退回
  • 不得在探测式入场无命中时输出任何文案(必须零输出静默退回)
  • 不得输出冗余的思考过程
  • menuLink 必须从 CLI 返回中提取,严禁编造 URL

详细参考

不在本 Skill 范围

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/senclaw-cdn.italent.cn/beisen-service-portal">View beisen-service-portal on skillZs</a>