70 lines
3.3 KiB
Markdown
70 lines
3.3 KiB
Markdown
# JobRadar Agent 契约
|
||
|
||
## Agent 名称与目标
|
||
|
||
第一版只实现“岗位研究 Agent(Job Research Agent)”。它根据当前用户的岗位目标和个人画像,自主选择必要工具,查找候选岗位、补充企业证据、执行筛选与评分,最终输出可解释、可追溯的岗位研究结果。
|
||
|
||
## 输入
|
||
|
||
- 当前用户和个人画像编号
|
||
- 岗位关键词、地区、薪资、经验和学历边界
|
||
- 企业性质、行业偏好及排除条件
|
||
- 评分配置版本和目标招聘网站
|
||
- 最大岗位数量、运行时间和工具调用预算
|
||
|
||
## 结构化输出
|
||
|
||
- Agent Run 状态
|
||
- 候选、淘汰、推荐和待复核岗位数量
|
||
- 推荐岗位、维度分数和硬规则命中情况
|
||
- 企业性质、证据来源和置信度
|
||
- 风险提示、信息缺口和人工处理要求
|
||
- 工具调用及运行摘要
|
||
|
||
## 第一版工具
|
||
|
||
| 工具 | 单一责任 | 副作用 |
|
||
| --- | --- | --- |
|
||
| `search_jobs` | 获取候选岗位 | 保存原始记录 |
|
||
| `normalize_jobs` | 标准化并识别重复岗位 | 保存标准化结果 |
|
||
| `apply_hard_filters` | 执行确定性筛选规则 | 保存筛选结果 |
|
||
| `research_company` | 查询企业主体、性质和证据 | 保存企业证据 |
|
||
| `analyze_job_match` | 生成结构化匹配维度分析 | 保存分析结果 |
|
||
| `calculate_job_score` | 使用固定公式计算最终分数 | 保存评分结果 |
|
||
| `save_research_report` | 保存本次最终报告 | 完成运行状态 |
|
||
|
||
工具实现前可以调整命名,但必须保持类型化参数、结构化返回值、单一职责和清晰的副作用说明。
|
||
|
||
## 状态与上下文
|
||
|
||
运行上下文至少包含 `user_id`、`agent_run_id`、`search_task_id`、个人画像版本、规则版本、评分配置版本和当前运行预算。上下文不包含网站明文密码、Cookie、模型 API Key 等敏感值;工具在服务端根据授权范围读取凭据。
|
||
|
||
## 人工确认边界
|
||
|
||
以下情况必须暂停或转人工处理:
|
||
|
||
- 遇到验证码、登录失效或网站访问限制。
|
||
- 企业主体或企业性质证据冲突。
|
||
- 准备执行超出用户配置范围的大规模采集。
|
||
- 任何简历投递、消息发送或对外联系行为。
|
||
- 删除历史岗位、证据或运行记录。
|
||
|
||
第一版不向 Agent 提供自动投递、自动联系、任意 Shell 或任意 SQL 工具。
|
||
|
||
## 可观测性
|
||
|
||
每次运行记录 Agent、模型、指令和工具版本,以及开始、结束、暂停和失败时间。每次工具调用记录名称、参数摘要、结果摘要、耗时和错误,同时保存最终结构化输出、trace 标识、token 用量、成本和人工确认结果。
|
||
|
||
WebUI提供“最终结果”和“执行过程”两个视角,使项目既可用于求职,也可展示 Agent 如何完成真实任务。
|
||
|
||
## 非目标
|
||
|
||
- 不使用多 Agent 伪造复杂度。
|
||
- 不通过兼容层同时支持多个 Agent 框架。
|
||
- 不引入 pgvector、向量数据库或无明确需求的 RAG。
|
||
- 不允许模型直接访问数据库、执行任意代码或绕过工具权限。
|
||
|
||
## 多 Agent 演进条件
|
||
|
||
只有单一 instructions 无法表达职责、工具和上下文导致稳定性下降、评测证明不同领域互相干扰,或者某类任务需要独立模型和安全边界时,才拆分专家 Agent。拆分后使用 Agents SDK 正式 handoff 或 manager pattern,并通过评测证明收益。
|