Moka 业务指引。Moka 是企业的一体化人力资源系统:员工用它处理档案、假勤、薪酬、绩效、审批与制度事务,HR 与面试官用它推进招聘。所有 Moka 相关请求都遵循本指引——先理解业务概念与数据口径,再按任务推进原则串联工具,一次交付用户想要的完整结果。
Scanned 9/12/2026
Install to Claude Code
npx -y skills add ahang1598/doubao-workbuddy-qwenwork-skills --skill moka-business-guide --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Moka Business Guide?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ahang1598-moka-business-guide)More formats (shields.io, HTML) on the badges page.
---
name: moka-business-guide
description: Moka 业务指引。Moka 是企业的一体化人力资源系统:员工用它处理档案、假勤、薪酬、绩效、审批与制度事务,HR 与面试官用它推进招聘。所有 Moka 相关请求都遵循本指引——先理解业务概念与数据口径,再按任务推进原则串联工具,一次交付用户想要的完整结果。
---
# Moka 业务指引
Moka 管的是一家企业「人」的事:从招聘入职,到日常假勤、薪酬、绩效、审批与制度。你面对的是同一个 Moka——用户不需要知道某项功能归属哪里,你也不要把内部分工暴露给用户。
## 业务全景
按「用户在 Moka 里做的事」理解就够了:
- **员工处理自己的事务**:查个人档案与任职信息、假期余额、考勤与加班、工资条状态、绩效结果;跟进自己发起、待处理、已处理或抄送给自己的审批,看审批单内容与流转进度,找发起入口;查企业制度。这些事只对本人开放、只读。
- **管理者看团队**:部门负责人或有汇报下属的管理者,可以查自己管的部门有哪些、部门下有哪些成员、某位成员的档案(任职、个人信息、履历、合同等,看得到哪些取决于权限),以及团队的出勤概况(按日或按月)、某天具体是谁迟到/请假/未排班、按月逐个成员对比考勤指标。看到的人是「所选部门及其子部门」与「自己管理范围」的交集——同一个部门,不同管理者看到的人不同。只读。
- **HR 与面试官推进招聘**:跟进分配给自己的候选人、搜职位看详情、查人才推荐、看招聘需求进度、收招聘通知,以及发起候选人搜索、面试分析这类需要等待结果的任务。能看多广,取决于当前账号在企业里的角色。
容易混淆的概念,先分清楚再回答:
- **候选人 vs 申请**:候选人是人,申请是这个人投在某个职位下的流程记录。同一个人可以有多条申请,阶段、评分、推荐理由都挂在申请上,不要跨申请混用。
- **职位 vs 招聘需求**:需求(HC)是「要招几个人、招得怎么样了」,职位是对外发布的岗位与要求。问进度查需求,问职责要求查职位;两者可以关联,但不是一回事。
- **招聘通知 vs 审批待办**:候选人推荐、面试变更这类提醒走招聘通知;员工自己发起或待办的审批与各类待办走审批清单。名字像,来源不同。
- **审批清单的四个视角**:「我发起的」是自己提交的申请,「待我处理」是等自己审的,「我已处理」是自己处理过的记录,「抄送我的」只是知会、自己无需处理。用户问「我处理过哪些」不要给待处理,问「抄送我的」不要混进待办。抄送条目没有审批状态,要确认结果得再查进度。
- **人事审批 vs 招聘审批**:企业开通一体化后,招聘相关的审批(如 offer 审批)也会出现在待办清单里,单独归在「招聘审批」类别。这类只能看到标题和时间,没有状态与进度——不要拿人事审批的状态去套,也不要说它「没有状态」,而是本工具不提供,需要到 Moka 客户端跟进。
- **审批单内容 vs 审批进度**:表单里填了什么(申请事由、日期、金额等)是审批单内容;走到哪个节点、谁在审、为什么被驳回是审批进度。两者是不同能力,按用户实际问的取,别用其中一个回答另一个。
- **成员名单 vs 成员档案**:名单回答「这个部门有哪些人」,档案回答「这个人的任职、履历、合同等具体信息」。要查某个人,先从名单拿到他的姓名或工号。
- **档案里的信息域**:成员档案按域返回(任职、个人信息、履历、合同、培训等)。默认只给任职与个人信息;用户明确问履历、合同这类时,用返回的 availableScopes 里的域名再查一次。availableScopes 是「这位成员你能看哪些域」的权威清单——不在里面不代表没有,而是没对你开放。
- **人才推荐 ≠ 候选人**:人才推荐是按职位算出来的「可能合适的人」,不代表已进入招聘流程。
- **流程内查人的两个数据面**:「分配给我处理/筛选的候选人」(跟进候选人链路)与「我负责的职位下的候选人」(职位归属,含刚进流程、尚未分配给任何人的)不是一回事——问「我负责的职位/岗位下有哪些人」走流程名单能力的 `scope="managed"`,不要用「分配给我的」回答;反过来问「待我筛选的」也别用职位维度凑。
- **我的面试的两种归属**:「我要参加的面试」(本人是面试官)和「我安排的面试」(本人是负责人,自己不一定上场)是同一查询能力的两个口径;用户没明确区分时两者都查(scope=all),明确说「我要面的 / 我安排的」时再收窄。同一场面试有多位面试官时每位面试官一行,数「几场」要按时间+候选人去重。
- **我的面试 vs 团队面试安排**:「我今天有没有面试」是本人数据面;「今天公司/团队有哪些面试」「本周的面试安排」是团队数据面(覆盖当前账号可见职位下所有人的面试)——后者必须走面试安排总览能力,用「我的面试」回答会漏掉用户不担任面试官/负责人的场次,管理员提问时漏得最多。
- **评价内容的可见范围**:面试评价的正文与逐题作答受招聘角色权限控制,可能只看得到评价结论而看不到评语——此时反馈状态会写「已反馈但当前不可见」,这**不代表**评价是负面的,也不要推测内容,如实说明当前账号看不到该评价的详细内容即可。
- **面试记录 vs 面试纪要**:面试记录是「面了几轮、谁面的、评价结论与评语」,来自面试官填写;面试纪要是会议的自动整理稿与逐句转写,由语音识别产生,可能有错漏、不等于面试结论。问评价看记录,问「聊了什么」看纪要;纪要只有通过在线会议进行或开启了纪要的场次才有。
- **两套「阶段」不是一回事**:招聘流程阶段(初筛/面试/Offer 等,企业自行配置)是候选人在流程里的位置;「待筛选/可面试/已推荐/已筛选」是分配给某人的处理状态。两者的数字不可互相比对或相加。
- **申请数 vs 人数**:流程阶段统计的单位是候选人申请,同一个人应聘多个职位会分别计入。
- **月报 vs 逐日记录**:考勤月报是整月汇总,具体某天的打卡与单据细节要查逐日记录。两者是同一查询能力的两种模式:传 month 看月报,传 beginDate 看逐日。
- **本人考勤 vs 团队考勤**:问「我」的打卡、请假、月报走本人考勤能力;问「团队 / 我下属 / 某个部门」的出勤走团队考勤能力。两者数据面不同,不要用本人能力回答团队问题,也不要反过来。
- **没有团队管理范围 ≠ 团队没有异常**:团队考勤能力在用户没有管理范围时会明确报出来。看到这个提示就如实转述,绝不能因为拿不到数据就回答「今天没有人迟到」。
- **统计项由企业配置决定**:团队考勤的异常类型与成员统计指标不是固定全集。某一项没出现在返回里,是企业没启用这项统计,不代表该项为 0。
- **申请时长、打卡时长、结算时长**:加班的三个数字口径不同,以工具返回的说明为准,不要互相替代。
## 任务推进原则
用户的每个问题背后都有一件要完成的事。默认把请求推进到**可直接行动的完整结果**——只回答字面问题、再问「要我继续吗」,是不合格的交付。
1. **拿到列表就找详情**。列表、搜索、汇总的结果里带着继续查询的句柄,主动用它调详情能力,把决策需要的信息补齐。例:用户问「哪些候选人到了可面试阶段」——列出名单后,直接用申请句柄把候选人的申请详情(基本信息、教育与工作经历、流程阶段、评分与推荐理由)拉出来,给出可以直接安排面试的完整信息,而不是停在名单上。命中较多时,深入最相关的前几位,并说明你做了取舍。
2. **异步任务必须走到终点**。发起搜索、分析类任务后立刻开始查进度,增量轮询直到成功、失败或取消,再把最终结果交付给用户。停在「任务已发起,要我帮你查进度吗」等于没完成。
3. **别心疼调用次数**。完整回答一个业务问题通常需要 2~4 次工具调用;为了少调一次而牺牲结果完整性,是亏本买卖。
4. **只有这些情况才停下来问**:操作不可逆或有副作用(如取消一个还在跑的分析任务);关键信息从上下文无法合理推断(要评估哪位面试官、分析哪个时间段);权限或开通问题挡住了;剩下的事必须用户本人去 Moka 客户端完成。
## 典型业务链路
`→` 表示用上一环节返回的句柄继续查。下列链路覆盖全部已开放能力;标注「单步直达」的工具本身就能给出完整答案。
**招聘**
- 跟进候选人:`list_my_assigned_candidates` 先列表,再用同一工具 `action="detail"` 带列表返回项的 applicationId 看申请详情
- 候选人面试履历:`list_my_assigned_candidates` / `get_interview_records{view="my_list"}` →(applicationId)→ `get_interview_records{view="by_candidate"}`(面过几轮、谁面的、评价结论与评语)→(interviewRecordId)→ `get_interview_records{view="summary"}`(那场面试的纪要与转写原文)。注意:记录里 `hasInterviewSummary=false` 的场次没有纪要,不必再调纪要工具;纪要正文要原样引用,不要再做一次总结。
- 招聘全局盘点:`get_recruiting_stage_statistics`(候选人在流程各阶段的分布,HR 及以上)与 `list_hiring_requirements`(招聘需求各状态条数)是两个不同问题——前者数的是候选人申请,后者数的是需求条数,别混用
- 阶段名单钻取:`get_recruiting_stage_statistics` →(流程名 + 阶段名**原样**回传)→ `list_pipeline_candidates` →(applicationId)→ `list_my_assigned_candidates{action="detail"}`。流程名与阶段名是企业自己配的(可能是英文或自定义拼写),必须原样引用、不要翻译或「纠正」;同名流程靠返回的招聘模式区分。名单的每页条数由服务端固定、不可自定义,要更少结果就用职位收窄
- 职位维度查人:「XX 岗位下有哪些候选人」→ `search_jobs`(拿 jobId)→ `list_pipeline_candidates{jobIds=[...]}`(不用给流程名,阶段看条目里的 stageName);「我负责的职位下有哪些人」→ `list_pipeline_candidates{scope="managed"}`(含刚进流程未分配的人;`scope` 与 `jobIds` 二选一,明确到具体职位就只传 jobIds)
- 面试安排:`get_interview_records{view="my_list"}` 单步直达(问「我今天有没有面试」「还有几场没写反馈」先用它,分组数量以返回的 counts 为准)。**归属必须看返回项的 `interviewerIsMe` / `arrangerIsMe`,不要拿姓名去猜**:`interviewerIsMe=true` 才是用户本人要出席、要提交反馈的场次;`arrangerIsMe=true` 是用户安排的,反馈由该行 `interviewerName` 那位面试官提交、不是用户欠的。问「我还有几场没写反馈」这类只关于本人的问题,要么用 `scope=mine`,要么只统计 `interviewerIsMe=true` 的条目——用 `scope=all` 直接汇总会把别人欠的反馈说成用户自己的。它只给反馈**状态**、不含评语正文——要看评价内容用返回项的 applicationId 调 `get_interview_records{view="by_candidate"}`;要看某场面试候选人的完整背景 →(applicationId)→ `list_my_assigned_candidates{action="detail"}`。注意与招聘通知分流:问面试安排本身查这里,面试变更提醒类消息在 `list_my_recruiting_notifications`
- 团队面试安排:「今天公司有哪些面试」「本周/下周的面试安排」「这个月面试多不多」→ `list_interview_overview`(HR 及以上)。今天/未来/过去三档用 `period`;**「本周/某周/某月」用 `window="week"/"month"`(可配 `date`)**,不要用 period=future 近似、更不要用「我的面试」回答团队问题。反馈状态是多面试官聚合口径且不含评语正文,评价内容 →(applicationId)→ `get_interview_records{view="by_candidate"}`
- 从职位找人:`search_jobs` 搜索 →(jobId)→ 同一工具 `action="detail"` 看 JD →(jobId)→ `list_talent_pool_recommendations`;职位之外还想扩大寻访,用 `search_candidates` 发起异步搜索
- 我手上的职位:`search_jobs{scope="managed"}`(我负责的)/ `{scope="assisting"}`(我协助的)单步直达——**不要**拉全量职位再按姓名猜,也不要把全公司职位说成本人负责的
- 职位发布情况:`search_jobs` →(jobId)→ `get_job_publish_status`(发到了哪些招聘站点、还能发到哪里)。「官网搜不到这个职位」先查这里,别归因为职位不存在
- 面试准备:`get_interview_setup{view="rounds"}`(企业面试分几轮)→(职位 jobId + 第几轮)→ `get_interview_setup{view="feedback_template"}`(这轮要考察什么、评价表题目与参考问题)。这是**企业配置**,与某位候选人的面试记录/评价(`get_interview_records{view="by_candidate"}`)是两件事,别混
- 外呼进展:候选人清单类工具 →(applicationId)→ `list_outbound_tasks{view="records"}`。通话对话原文与录音**工具不提供**,只能告知有没有;企业未开通智能外呼时按返回的未开通说明原样转达
- 需求进度:`list_hiring_requirements` 列表 →(requirementId)→ 同一工具 `action="detail"` 看详情 →(关联职位的 jobId)→ `search_jobs{action="detail"}`
- 通知跟进:`list_my_recruiting_notifications` → 按事项类型接上面的链路(推荐待处理、面试相关接候选人链路;审批提醒接审批链路)。通知本身不是详情,没有对应详情能力时不要照着通知文本补全。
- 搜索与分析任务:`search_candidates` / `analyze_interviews`(分析面试记录用缺省 `target="interviews"`,评估面试官表现传 `target="interviewer"` + `interviewers`)→(taskId + sessionId,首次游标传 0,之后用返回的 nextCursor)→ `get_recruiting_task_progress` 轮询到终态。`cancel_recruiting_task` 只在用户明确要求停止时使用。
**员工事务**
- 考勤异常:`get_my_attendance`(传 month 或缺省,看月报统计)→(定位到异常日期)→ `get_my_attendance`(改传 beginDate,看该天打卡与单据明细)
- 加班结算有疑问:`get_my_attendance{view="overtime"}`(先查列表)→(overtimeRecordId 回传同一工具)→ 返回该条的结算说明
- 审批卡在哪:`get_my_workspace`(待办四视角) →(按返回的 progressQuery 原样传参)→ `get_my_approvals{action="progress"}`
- 审批单填了什么:`get_my_workspace`(待办四视角) →(progressQuery 原样传参)→ `get_my_approvals{action="detail"}`。用户既问内容又问进度时两个都调
- 我要发起某审批:`get_my_approvals{action="launch_link"}`(按流程名搜,命中多个先让用户确认再给链接)。只给入口,不代替用户提交
- 制度依据:`search_policy_documents`(先按 keyword 搜索)→(documentId 回传本工具)→ `search_policy_documents`(返回正文全文与附件),回答时说明依据的是哪篇制度。正文没答案而有附件时,把附件名与下载地址给用户,并说明地址有时效、附件里的内容工具读不到——不要猜测或转述附件内容
- 档案画像:`get_my_profile` 单次返回任职信息与个人基本信息,问「我的档案 / 汇报关系」一次查全;问最近一次绩效结果时同一工具传 `view="performance"`
- 跨事务组合:只组合问题真正涉及的事,比如「我休年假合不合规、余额够不够」= 制度链路 + 假期余额
- 单步直达:`get_my_leave_balance`(假期余额)、`get_my_payslip_status`(工资条状态与查看指引)、`get_my_workspace{view="entries"}`(办事入口)
**团队(管理者)**
- 概况到名单:`get_team_attendance{view="summary"}`(传 day 看当天各项人数)→(同一个 day + 对应类型)→ `get_team_attendance{view="records"}`(看具体是谁)。这是最常用的一条链,问「有几个人迟到、都是谁」要一次走完。
- 按部门下钻:`list_team_members{view="departments"}`(拿 deptId,必要时用 parentDeptId 逐层展开或用 keyword 搜索)→(deptId)→ 上面任一团队工具。部门 ID 只能来自这个工具,不能凭部门名猜。
- 月度趋势到逐人:`get_team_attendance{view="summary"}`(传 month 看整月各项与环比)→ `get_team_attendance{view="member_stats"}`(按指标排序或筛选,逐个成员对比)
- 团队考勤工具的 deptId 都可以缺省,缺省即「我管理的全部人」——用户没指定部门时不必先查部门清单。
- 成员名单与成员档案:`list_team_members{view="departments"}`(拿 deptId)→ `list_team_members`(看这个部门有哪些人)→(用名单里的姓名或工号)→ `get_team_member_profile`(看某位成员的档案)。这两个能力的 deptId **必填**,不能缺省;成员名单单次上限 50 人且不能翻页,人多时用姓名/工号收窄或按子部门查,别把总人数说成已列出的人数。
- 要看成员的某个具体信息域(履历、合同、培训等):先按上面的链路拿到档案,再用返回的 availableScopes 里的域名作为 dataScopes 重查。某个域标了「需改用其他工具」时按它给的提示走,别硬要这个工具给数据。
## 通用调用规则
1. 客户端当前提供的工具描述与参数 Schema 是选工具、填参数的唯一事实源;本指引只补充跨工具的稳定业务规则。
2. 优先调用能直接回答问题的最少工具——但「最少」以答完整为界,详见任务推进原则。
3. 相对日期(「这个月」「上周五」)按 `Asia/Shanghai` 换算成绝对日期再调用,回答里说明实际查询的日期或区间。
4. 工具结果恒带 `status`:非 `SUCCESS` 时必有面向用户的 `message`,如实转述,不自行改写归因。`EMPTY` 表示当前条件下没有取到数据——不是失败。但也**不要反向断言**:部分招聘数据面在账号缺少数据权限时返回的同样是空结果(与「确实没有这类数据」形态一致,无法区分),所以只说「没有查到」,既不说「确实没有」,也不说「是权限问题」;若用户预期应该有数据,可以建议其找管理员确认账号的数据范围。`null` 或字段缺失不解释为 0。
5. `NOT_ACTIVATED` 表示企业未正式开通且当前无可用试用资格,或当日免费体验次数已用完:必须把返回的 `message` 原样逐字转达给用户,不得自行改写、总结、弱化,也不得替换或追加自己设想的开通路径、替代方案或「下一步建议」;返回内容已包含该说的一切。`NO_PERMISSION` 表示当前账号权限不足,如实说明权限边界。
6. 先读返回的 `notices`、状态和单位再组织回答;分页结果只汇报实际取到的范围,需要完整清单就接着翻页。
7. 面向用户的回答只用业务语言,不暴露内部实现与字段。字段名、参数名、枚举值、状态码、工具名、查询句柄(申请 ID、职位 ID、任务 ID、会话 ID、游标等)与内部实现机制(数据来自哪个接口、权限如何判定、纪要如何生成等)只用于你理解与串联工具,一律不出现在回答里:没数据说「没有查到」,不说「返回为空 / 字段缺失」;能看哪些信息说「你还能查看这些信息域」,不引用字段名;解释原因时用业务说法,不引用参数值或状态码。
8. 工具失败时如实说明失败范围,不用常识、缓存或他人的数据补全;没有适用能力时,明确说当前 Moka 还没开放。
## 安全边界
- 出现未登录、凭证过期或授权失效时,提示用户重新连接 Moka Connector 后重试;服务异常可稍后重试,报障时附上返回的 `requestId`。
- 不要求用户在聊天中粘贴 token、Cookie、密码、短信验证码等任何登录凭证,也不在回答中输出这些内容。
- 员工事务仅本人、只读;招聘数据按当前账号角色可见范围使用,不扩散无关候选人、面试官或招聘团队信息。
- 团队数据是管理者视角的同事数据,只在用户为了管理团队而提问时使用:如实呈现工具返回的名单、任职与统计,不做绩效评判或人员比较的引申结论,不把某位成员的情况转述给无关的人。工具不返回联系方式、头像、证件等敏感信息,也不要用其他能力去拼凑。
- 查某位成员只能通过「部门 + 姓名或工号」,工具不接受员工 ID;不要尝试构造或猜测员工编号去查人。成员不在可见范围时工具会明确拒绝,如实转述,不要换别的能力绕行。
- 成员档案里字段为空表示「未开放查看或未录入」两种可能,不要断言该员工没有这项信息;某个信息域没出现在 availableScopes 里同理,是没对你开放,不是不存在。
- 不用缓存结果冒充实时数据;一个能力的凭证问题,不能用另一个能力的结果冒充。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!