国考模拟选岗 Skill
指导 Agent 在新一年国考职位表尚未发布时,用近三年真实国考数据做参考选岗:先补齐简历硬条件 → 定位近三年国考公告(剔除补录)→ 逐届取数 → 一次性渲染成按年份分组的岗位明细表。
与 position-select skill 的分工:那个 skill 处理「当前有职位表可选」的常规选岗;本 skill 专门处理「目标考试职位表还没出」的提前选岗,用历年数据代偿。触发词不重叠,不要混用。
何时使用
- 「今年国考职位表还没出,我能报什么岗?」
- 「帮我按往年国考数据提前选选岗。」「国考模拟选岗。」
- 用户想报国考,但
exam_search 里目标年份的公告 positionNum = 0 或搜不到 → 主动转本 skill。
不适用:用户问的是省考/事业编(本期只覆盖国考);目标年份职位表已发布(走 position-select skill)。
1. 开场定预期
第一句话就把口径说清,避免用户误以为在选今年的真岗:
- 新一年国考职位表尚未发布,本次基于近三年真实国考职位数据做参考选岗,岗位与竞争情况仅供参考,实际以官方公告为准。
- 模拟选岗全流程都需要登录:登录用户由服务端从请求识别,不需要也无法由你指定;未登录时
user_resume_get / position_select / position_group_render 直接返回 401,先引导用户登录再继续。
2. 简历门槛:学历 + 专业硬性,其余一轮引导
先 user_resume_get 探测。
学历或专业任一缺失 → 必须先补,不要跳过。 这两项是岗位硬过滤的地基,缺了出来的结果没有参考价值。转 resume skill 引导:
- 专业必须走
major_query 归一化确认后再存;
eduBackgrounds 是全量覆盖语义,先读现有教育背景、合并本次改动后传全量。
其余核心字段(政治面貌 / 应届身份 / 意向地区 / 生日)一轮引导、允许跳过。 每项说明补了会怎样(「补上生日能筛掉超龄岗」「补上政治面貌才能判断党员限定岗」),用户不接话就按「不限」继续,不追问第二次。引导时优先输出选择卡片让用户点选(见 resume skill「交互形态」)。
3. 定位近三年国考(含补录过滤)
exam_search(query="国家公务员考试", filter.examType=["国考"], queryType="ANNOUNCEMENT", limit=20)。
- 国考是全国统一考试,
filter.region 必须留空。
- 剔除补录考试:
exam_search 没有补录专用字段,按 examName 判断——含「补录」「补充录用」「调剂」的一律排除。补录岗位是残余名额,竞争口径与正常批次不可比,混进来会误导用户。
- 从剩余项里按
year 倒序取 3 个不同年份、且 positionNum > 0 的公告,记下各自 articleId。同一年份有多条时取 positionNum 最大的那条。
- 相对年份(用户说「今年」)先解析成绝对年份再比。
- 命中不足 3 年就有几年用几年,并向用户说明只找到几年数据。
4. 逐届取数
对每个 articleId 调一次 position_select:
position_select(
query = "<专业名 + 意向工作内容等自然语言>",
filter.articleId = <该届公告 id>,
filter.conditions = { eduBackground, politicStatus, workAddress, ... },
limit = 20
)
硬规则:
filter.region 留空(国考不属于任何省);用户的意向工作地放 conditions.workAddress。这是 position-select skill 的规则,此处同样适用。
- 专业默认拼进
query 做语义召回,精确匹配靠登录简历里的结构化专业;首轮不要传 conditions.majorIds——它只收窄不放宽,传了会排除全部「专业不限」岗位。某届结果明显过宽时才对该届补传一次:用 major_query 拿到该专业的三级 code(ID_nnn),去掉 ID_ 前缀后的数字作为元素,三级全传;本 skill 每次调用都带了 filter.articleId,专业目录已锁定。详见 position-select skill 的「专业的处理」。
- 一届一次调用,不要为同一届反复翻页。
5. 一次性渲染成分组表
三届结果一次性传 position_group_render:
position_group_render(
title = "近三年国考匹配岗位明细库",
summary = "近三年共匹配到 8 个岗位,集中在基层法院与税务系统两条线。\n你的专业在司法行政类岗位上召回更稳,建议优先看法院系统。\n补齐基层工作经历后还能解锁一批定向岗位。",
groups = [
{ key: "2026", label: "2026年国考", summary: "匹配 18 个岗位,以税务与基层法院为主。", positionIds: [...] },
{ key: "2025", label: "2025年国考", summary: "...", positionIds: [...] },
{ key: "2024", label: "2024年国考", summary: "...", positionIds: [...] }
]
)
页面形态是顶部总结性分析 + 下方按年份分 tab 的岗位表,两处文案分工别写重:
- 顶层
summary = 页首的跨三年整体分析,可多段(段间用 \n),建议不超过 3 段:三年匹配趋势 / 推荐报考方向 / 下一步建议。
- 分组
summary = 该 tab 内的当年一句话特征(匹配数量、岗位分布),只讲这一年。
其余硬规则:
- 一次调用一张页面:不要分多次调用拼同一张表,也不要每届单独渲染一次。
- 只传分组标签 + positionId 顺序:招录单位、职位名称、招录人数、进面分、报录比等客观字段由服务端按 id 回捞,你复述反而可能与真实数据冲突。
label 用人话(「2026年国考」)。
- 整体结论已经在页首
summary 里了,渲染后聊天区不要再复述一遍,直接进第 6 步收尾引导。
竞争数据的口径
进面分 / 报录比 / 报名人数都会明文展示在表格里,可以放心谈:
- 表格每一行都直接展示进面分与报录比,不必引导用户跳官网看。
- 但聊天区不要把表格里已有的数值再罗列一遍。顶层
summary 与分组 summary 同理:写岗位数量与分布特征,不逐个抄数字。
- 用户就某一个具体岗位追问竞争情况时,拿该岗位的
history 口述历年明细(表格只展示最近一年)。
- 不要凭印象猜数字:
position_select 没返回的年份就说没有数据。
6. 收尾一轮
- 按结果里出现的限定岗类型引导补齐对应简历字段:限户籍岗→户籍;定向生源岗→生源地;退役军人/残疾人等专项岗→特殊身份;基层岗→基层经历 + 年限;民族限定岗→民族。一轮最多 3 项,用户不接话就结束。
- 提示可以继续追问某个具体岗位的历年竞争情况。
- 提示新职位表发布后可以重新选一次真岗(国考职位表通常 10 月中下旬发布)。
边界与错误处理
- 三届都没匹配岗位:按「放宽条件(去掉某限制、扩大意向地区)」引导重试,而不是直接说没有。
- 某一届取数为空:保留该年分组(表格会显示「该分组暂无匹配岗位」),并在结论里说明那年没有匹配岗位。
exam_search 一条国考公告都没召回(下游异常时返回空 items,不报错):按「暂时取不到历年国考数据,建议稍后重试」兜底,不要用记忆里的年份硬编 articleId。
- 用户问的是省考/事业编:本 skill 只覆盖国考,转 position-select skill 或说明暂不支持按历年省考数据模拟选岗。
1---2name: mock-position-select3description: 国考模拟选岗。新一年国考职位表尚未发布时,基于近三年真实国考数据帮考生提前选岗:先引导补齐简历核心信息(学历+专业为硬门槛),再按年份分组呈现匹配岗位明细表。触发词:国考模拟选岗、模拟选岗、今年国考能报什么岗、新职位表还没出、提前选岗、按历年国考选岗、国考预选岗、国考职位表还没发布、先看看往年国考岗位。4---5
6# 国考模拟选岗 Skill
7
8指导 Agent 在**新一年国考职位表尚未发布**时,用近三年真实国考数据做参考选岗:先补齐简历硬条件 → 定位近三年国考公告(剔除补录)→ 逐届取数 → 一次性渲染成按年份分组的岗位明细表。
9
10与 **position-select skill** 的分工:那个 skill 处理「当前有职位表可选」的常规选岗;本 skill 专门处理「目标考试职位表还没出」的提前选岗,用历年数据代偿。触发词不重叠,不要混用。
11
12## 何时使用
13
14- 「今年国考职位表还没出,我能报什么岗?」
15- 「帮我按往年国考数据提前选选岗。」「国考模拟选岗。」
16- 用户想报国考,但 `exam_search` 里目标年份的公告 `positionNum = 0` 或搜不到 → 主动转本 skill。
17
18**不适用**:用户问的是省考/事业编(本期只覆盖国考);目标年份职位表已发布(走 position-select skill)。
19
20## 1. 开场定预期
21
22第一句话就把口径说清,避免用户误以为在选今年的真岗:
23
24- 新一年国考职位表尚未发布,本次基于**近三年真实国考职位数据**做参考选岗,岗位与竞争情况仅供参考,实际以官方公告为准。
25- 模拟选岗全流程都需要登录:登录用户由服务端从请求识别,不需要也无法由你指定;未登录时 `user_resume_get` / `position_select` / `position_group_render` 直接返回 401,先引导用户登录再继续。
26
27## 2. 简历门槛:学历 + 专业硬性,其余一轮引导
28
29先 `user_resume_get` 探测。
30
31**学历或专业任一缺失 → 必须先补,不要跳过。** 这两项是岗位硬过滤的地基,缺了出来的结果没有参考价值。转 **resume skill** 引导:
32- 专业必须走 `major_query` 归一化确认后再存;
33- `eduBackgrounds` 是**全量覆盖**语义,先读现有教育背景、合并本次改动后传全量。
34
35**其余核心字段(政治面貌 / 应届身份 / 意向地区 / 生日)一轮引导、允许跳过。** 每项说明补了会怎样(「补上生日能筛掉超龄岗」「补上政治面貌才能判断党员限定岗」),用户不接话就按「不限」继续,**不追问第二次**。引导时优先输出选择卡片让用户点选(见 resume skill「交互形态」)。
36
37## 3. 定位近三年国考(含补录过滤)
38
39`exam_search(query="国家公务员考试", filter.examType=["国考"], queryType="ANNOUNCEMENT", limit=20)`。
40
41- **国考是全国统一考试,`filter.region` 必须留空。**
42- **剔除补录考试**:`exam_search` 没有补录专用字段,按 `examName` 判断——含「补录」「补充录用」「调剂」的一律排除。补录岗位是残余名额,竞争口径与正常批次不可比,混进来会误导用户。
43- 从剩余项里按 `year` 倒序取 **3 个不同年份**、且 `positionNum > 0` 的公告,记下各自 `articleId`。同一年份有多条时取 `positionNum` 最大的那条。
44- 相对年份(用户说「今年」)先解析成绝对年份再比。
45- 命中不足 3 年就有几年用几年,并向用户说明只找到几年数据。
46
47## 4. 逐届取数
48
49对每个 `articleId` 调**一次** `position_select`:
50
51```
52position_select(
53 query = "<专业名 + 意向工作内容等自然语言>",
54 filter.articleId = <该届公告 id>,
55 filter.conditions = { eduBackground, politicStatus, workAddress, ... },
56 limit = 20
57)
58```
59
60硬规则:
61
62- **`filter.region` 留空**(国考不属于任何省);用户的意向工作地放 `conditions.workAddress`。这是 position-select skill 的规则,此处同样适用。
63- **专业默认拼进 `query` 做语义召回**,精确匹配靠登录简历里的结构化专业;**首轮不要传 `conditions.majorIds`**——它只收窄不放宽,传了会排除全部「专业不限」岗位。某届结果明显过宽时才对该届补传一次:用 `major_query` 拿到该专业的三级 code(`ID_nnn`),去掉 `ID_` 前缀后的数字作为元素,三级全传;本 skill 每次调用都带了 `filter.articleId`,专业目录已锁定。详见 position-select skill 的「专业的处理」。
64- 一届一次调用,不要为同一届反复翻页。
65
66## 5. 一次性渲染成分组表
67
68三届结果**一次性**传 `position_group_render`:
69
70```
71position_group_render(
72 title = "近三年国考匹配岗位明细库",
73 summary = "近三年共匹配到 8 个岗位,集中在基层法院与税务系统两条线。\n你的专业在司法行政类岗位上召回更稳,建议优先看法院系统。\n补齐基层工作经历后还能解锁一批定向岗位。",
74 groups = [
75 { key: "2026", label: "2026年国考", summary: "匹配 18 个岗位,以税务与基层法院为主。", positionIds: [...] },
76 { key: "2025", label: "2025年国考", summary: "...", positionIds: [...] },
77 { key: "2024", label: "2024年国考", summary: "...", positionIds: [...] }
78 ]
79)
80```
81
82页面形态是**顶部总结性分析 + 下方按年份分 tab 的岗位表**,两处文案分工别写重:
83
84- 顶层 `summary` = 页首的**跨三年整体分析**,可多段(段间用 `\n`),建议不超过 3 段:三年匹配趋势 / 推荐报考方向 / 下一步建议。
85- 分组 `summary` = 该 tab 内的**当年一句话特征**(匹配数量、岗位分布),只讲这一年。
86
87其余硬规则:
88
89- **一次调用一张页面**:不要分多次调用拼同一张表,也不要每届单独渲染一次。
90- **只传分组标签 + positionId 顺序**:招录单位、职位名称、招录人数、进面分、报录比等客观字段由服务端按 id 回捞,你复述反而可能与真实数据冲突。
91- `label` 用人话(「2026年国考」)。
92- **整体结论已经在页首 `summary` 里了,渲染后聊天区不要再复述一遍**,直接进第 6 步收尾引导。
93
94## 竞争数据的口径
95
96进面分 / 报录比 / 报名人数都会明文展示在表格里,可以放心谈:
97
98- 表格每一行都直接展示进面分与报录比,不必引导用户跳官网看。
99- 但**聊天区不要把表格里已有的数值再罗列一遍**。顶层 `summary` 与分组 `summary` 同理:写岗位数量与分布特征,不逐个抄数字。
100- 用户就**某一个具体岗位**追问竞争情况时,拿该岗位的 `history` 口述历年明细(表格只展示最近一年)。
101- **不要凭印象猜数字**:`position_select` 没返回的年份就说没有数据。
102
103## 6. 收尾一轮
104
105- 按结果里出现的限定岗类型引导补齐对应简历字段:限户籍岗→户籍;定向生源岗→生源地;退役军人/残疾人等专项岗→特殊身份;基层岗→基层经历 + 年限;民族限定岗→民族。**一轮最多 3 项**,用户不接话就结束。
106- 提示可以继续追问某个具体岗位的历年竞争情况。
107- 提示新职位表发布后可以重新选一次真岗(国考职位表通常 10 月中下旬发布)。
108
109## 边界与错误处理
110
111- 三届都没匹配岗位:按「放宽条件(去掉某限制、扩大意向地区)」引导重试,而不是直接说没有。
112- 某一届取数为空:保留该年分组(表格会显示「该分组暂无匹配岗位」),并在结论里说明那年没有匹配岗位。
113- `exam_search` 一条国考公告都没召回(下游异常时返回空 items,不报错):按「暂时取不到历年国考数据,建议稍后重试」兜底,不要用记忆里的年份硬编 articleId。
114- 用户问的是省考/事业编:本 skill 只覆盖国考,转 position-select skill 或说明暂不支持按历年省考数据模拟选岗。