尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Jobber源码解析:PlannerAgent与BrowserNavAgent如何分工协作,自动投递简历

Jobber源码解析:PlannerAgent与BrowserNavAgent如何分工协作,自动投递简历 Jobber源码解析PlannerAgent与BrowserNavAgent如何分工协作自动投递简历【免费下载链接】jobberbrowser controlling AI agent that applies to relavant jobs on internet autonomously. join chat https://discord.gg/umgnyQU2K8项目地址: https://gitcode.com/gh_mirrors/jobber4/jobberJobber 是一个能自主控制浏览器、自动搜索并投递简历的 AI Agent浏览器控制型智能体。这篇文章带你源码级拆解它的两大核心——**PlannerAgent规划智能体**与BrowserNavAgent浏览器导航智能体看懂两个 Agent 是如何分工协作完成在 LinkedIn 上申请后端工程师职位这类任务的帮你看透多智能体Multi-Agent协作的设计精髓。一、先认识 Jobber自动投递工作的浏览器 AI 智能体想象你输入一句话apply for a backend engineer role based in helsinki on linkedinJobber 就会自己打开浏览器、搜索职位、点击 Easy Apply、填写申请表单、上传简历全程无需人工干预。它的工作方式可以概括为三个关键词规划PlanPlannerAgent 把大任务拆成一步步可执行的子任务执行ExecuteBrowserNavAgent 像一双手调用技能点击、输入、上传文件验收Verify每一步都用真实浏览器截图作为事实依据来核对二、整体架构大脑 手脚的任务协作链路整个系统由一个极简的入口驱动启动逻辑在jobber/__main__.py中只有 4 行有效代码随后把控制权交给jobber/core/system_orchestrator.py里的SystemOrchestrator系统编排器。它的职责很轻通过jobber/core/playwright_manager.py用 CDP 协议连接你本地已登录好的 Chrome远程调试端口 9222这样 Agent 能复用你的登录状态进入命令循环每次收到用户任务就新建一个 PlannerAgent去执行支持exit命令优雅关闭浏览器这种编排器只做调度智能体各自为战的结构是 Jobber 保持代码精简的关键。三、拆解 PlannerAgent会规划、会验收的大脑PlannerAgent 的完整源码只有 80 行jobber/core/agents/planner_agent.py却承担了所有思考工作。它做三件核心的事1. 带记忆和日期的开场初始化时它会把jobber/user_preferences/user_preferences.txt里的用户长期记忆LTM——姓名、期望薪资、简历文件路径、技能经验等——注入系统提示词再补上当天的日期与星期。也就是说你写的简历偏好Agent 全程都记得。2. 输出严格的 JSON 计划PlannerAgent 每次回复都是一个四字段 JSON提示词见jobber/core/prompts.py{ plan: 1. 打开 LinkedIn Jobs ... 12. 点击提交, next_step: Go to https://www.linkedin.com/jobs, terminate: no, final_response: 仅终止时出现的最终答案 }注意它的人格设定一个极度耐心的规划者——一次只下达一个最简步骤、绝不替用户做额外假设、计划失败必须换思路重试、每步之后都要验证。3. 用截图当真相之源这是最精彩的设计。BrowserNavAgent 汇报我做完了之后PlannerAgent 不会轻信文字而是立刻调用get_screenshot技能截屏把执行报告 当前页面截图一起发给大模型复核见receive_browser_message方法。截图才是 Ground Truth文字汇报只是辅助。四、拆解 BrowserNavAgent自带 10 项技能的手脚BrowserNavAgent 源码同样只有 52 行jobber/core/agents/browser_nav_agent.py它的能力全部来自挂载的10 个浏览器技能都在jobber/core/skills/目录下技能作用open_url打开指定网址click_using_selector点击指定元素enter_text_using_selector/enter_text_and_click输入文本、输入后点击get_dom_with_content_type按文本/表单域/全元素三种模式获取 DOMget_url获取当前页面 URLpress_key_combination按键如回车提交搜索pdf_text_extractor从 PDF 提取文本upload_file上传文件如简历get_user_input遇到登录、验证码时请人类接手它的两条重要纪律无状态Stateless每完成一步就调用reset_messages()清空自己的对话历史把每一步都当成新任务彻底避免上下文污染顺序执行 汇报制所有操作串行执行完成后输出简短总结并以##TERMINATE TASK##标记收尾一个巧妙的细节PlannerAgent 知道 Helper 没有返回上一页能力所以提示词里明确要求——要回退必须在步骤里写出完整 URL。这种能力边界写进提示词的做法非常值得学习。五、协作协议一次任务的完整闭环两个 Agent 的协作循环定义在 PlannerAgent 的process_query方法里本质上是一个 while 循环Planner收到用户任务 浏览器截图 → 输出next_step如设置职位为 Software EngineerBrowserNav收到指令自动附带当前页面 URL → 依次调用技能执行 → 用##TERMINATE TASK##收尾汇报Planner收到汇报 新截图 → 判断继续修正计划还是terminate: yes交回最终答案任何一端判断终止循环结束结果返回 SystemOrchestrator终止信号是双方约定的暗号BrowserNav 用##TERMINATE TASK##Planner 用 JSON 里的terminate: yes。基类jobber/core/agents/base.py负责解析这些信号、执行工具调用、并做消息瘦身——只保留最新一张截图历史消息中的旧截图全部剥离既省 Token 又防止旧画面误导模型。六、核心源码文件索引照着这份清单读源码文件路径说明jobber/core/agents/planner_agent.py规划智能体任务拆解与截图验收jobber/core/agents/browser_nav_agent.py导航智能体挂载 10 项浏览器技能jobber/core/agents/base.py智能体基类LLM 调用、工具循环、终止信号解析jobber/core/system_orchestrator.py系统编排器启动浏览器与命令循环jobber/core/playwright_manager.pyPlaywright 浏览器管理单例、CDP 连接jobber/core/prompts.py全部提示词规划者/执行者人格设定jobber/core/memory/ltm.py长期记忆读取用户偏好文件jobber/user_preferences/user_preferences.txt你的简历与偏好改这里即可定制 Agenttest/evaluators.py任务评估器可用于批量跑评测七、给开发者的 3 个可复用设计模式 思考与执行彻底分离规划者无工具执行者无计划双方都笨一点系统反而更稳 多模态验收不信文字汇报信截图这一步让任务成功率大幅提升 无状态执行器每步重置执行端上下文把记忆集中放在规划端简单可靠想动手试试安装依赖后先以调试模式启动 Chrome--remote-debugging-port9222并完成登录再运行python -u -m jobber输入你的第一个任务即可。仓库中还有一个基于有限状态机FSM的进阶实现jobber_fsm/可扩展性更强值得对比阅读。【免费下载链接】jobberbrowser controlling AI agent that applies to relavant jobs on internet autonomously. join chat https://discord.gg/umgnyQU2K8项目地址: https://gitcode.com/gh_mirrors/jobber4/jobber创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表