基于AI Agent与MCP协议构建智能命令行求职工具

基于AI Agent与MCP协议构建智能命令行求职工具 简介这是一套面向开发者与招聘技术实践者的AI代理优先命令行工具专为BOSS直聘平台设计聚焦职位智能搜索、福利语义筛选、招聘者工作流自动化、MCP状态跟踪及AI简历优化五大核心场景。资源包共238个文件含170个Python脚本实现CLI主逻辑、Agent调度与API对接、35份Markdown文档含使用指南、API说明与案例教程、9个YAML/YML配置文件定义工具链参数与MCP状态机辅以HTML前端页面、JS交互逻辑及SVG/PNG等资源整体仅1.75MB轻量易部署。已有174人学习下载开箱即用提供完整可运行的boss-agent-cli可执行文件、多级插件化架构目录、支持风格迁移的简历优化模块、以及适配小红书生态的图文解析与创作风格学习能力助力技术从业者快速构建招聘领域AI工作流。1. 项目概述当命令行遇上AI重塑求职体验最近在折腾一个挺有意思的玩意儿我把它叫做“AI-agent-first CLI for BOSS直聘”。说白了就是一个用命令行CLI来操作BOSS直聘并且深度整合了AI能力的工具。你可能觉得现在不都是图形化界面GUI的时代了吗谁还用黑乎乎的命令行来找工作一开始我也有这个疑问但真正深入使用和开发后我发现对于频繁、批量操作求职流程的人来说一个高效、可编程、能自动化的命令行工具配合上AI的“大脑”效率提升不是一点半点。这个项目的核心是想解决几个传统求职平台用起来不那么顺手的地方。比如你每天要手动刷新几十个关键词挨个点开看有没有新职位比如面对海量职位你只能靠平台有限的筛选条件很难精准找到那些“隐形”的好机会比如虽然没写但实际给股票期权的再比如给不同的公司投简历每次都得重新调整措辞非常耗时。这个CLI工具就是想把求职这个事从被动的“浏览-点击-等待”变成主动的、智能的“搜索-筛选-分析-投递”工作流。它主要面向几类人一是开发者、运维、数据科学家等本身就熟悉命令行的技术从业者二是求职顾问、HR或需要批量处理招聘信息的人三是任何希望用更聪明、更自动化的方式管理自己求职进程的积极求职者。通过几个简单的命令你就能完成复杂的职位搜索、基于自定义规则甚至是AI理解的自然语言规则进行福利筛选、管理与招聘者的沟通流程并且借助MCPModel Context Protocol工具和AI简历优化让你的每一次投递都更加有的放矢。2. 核心架构与设计思路拆解2.1 为何选择“AI-agent-first”与CLI的结合“AI-agent-first”是这个项目的灵魂。它不是简单地在CLI工具里调用一两个AI接口而是将AI智能体Agent作为整个工具的核心决策与执行引擎。传统的自动化脚本是“if-else”逻辑而AI Agent可以根据你的自然语言指令、当前的上下文比如你的技能、求职偏好、历史投递记录动态地决定下一步做什么。例如你告诉Agent“帮我找找北京有没有既用Go语言又重视分布式系统经验并且团队氛围好的机会”Agent会理解这个复合需求分解成搜索关键词、分析职位描述语义、甚至爬取公司评价等一连串动作并通过CLI执行。选择CLI作为载体则完全是出于效率和集成的考虑。CLI没有花哨的界面消耗资源极少可以轻松在服务器上7x24小时运行。它天然支持脚本化和管道操作这意味着你可以把搜索的结果直接通过管道|传递给其他工具进行处理比如导出为CSV、生成可视化图表或者触发一个自动投递的脚本。对于开发者而言CLI工具可以无缝集成到自己的日常开发环境如VS Code的终端或自动化流水线如GitHub Actions中实现真正的“求职即代码”。这个架构可以简单理解为你用户通过自然语言或结构化命令与AI Agent交互 - AI Agent理解意图并分解为可执行的任务 - Agent调用一系列“技能”Skills其中最关键的就是通过CLI与BOSS直聘平台进行交互的“技能” - 获取结果后Agent再进行分析、筛选、决策最终将结果呈现给你或自动执行下一步。CLI在这里既是与目标平台BOSS直聘交互的执行器也是整个AI工作流的统一入口和控制器。2.2 关键组件MCP工具与技能生态MCPModel Context Protocol是近年来大模型工具调用领域的一个新兴开放协议由Claude的创造者Anthropic提出。你可以把它理解为一套标准化的“插件”协议。在这个项目中MCP扮演了至关重要的角色它让我们的AI Agent能够安全、规范地访问外部工具和数据。我们为这个求职CLI开发了多个MCP Server工具服务器BOSS直聘交互MCP Server这是核心。它封装了与BOSS直聘网站或API通过模拟浏览器或合法接口交互的所有复杂逻辑如登录、搜索、获取职位详情、投递简历、发送消息等。AI Agent通过标准的MCP协议调用这个Server而无需关心底层是用Playwright模拟点击还是Requests库发请求。简历解析与优化MCP Server负责读取用户的简历文件PDF/DOCX解析出结构化的信息技能、经历、项目并提供一个“优化”接口。AI Agent可以调用它根据特定职位描述JD来动态调整简历中的措辞突出匹配的关键词。市场数据MCP Server可能接入一些公开的薪资数据集、公司技术栈分析报告等为AI Agent的决策提供额外的上下文信息。这些MCP Server共同构成了AI Agent的“技能库”。AI Agent运行在本地或云端的大模型通过MCP客户端与这些Server通信。这样做的好处是解耦和标准化Agent的推理逻辑和工具的具体实现是分离的工具可以独立开发、升级并且理论上任何支持MCP协议的AI模型如Claude、GPT都可以利用这套工具增强了项目的通用性。注意与任何外部平台的交互都必须严格遵守其robots.txt协议和服务条款。本项目所有设计均基于可公开访问的数据接口或经授权的合法方式获取信息强调合规和数据隐私保护绝对禁止任何形式的恶意爬取或干扰平台正常运行的行为。2.3 技术栈选型与考量要实现这样一个项目技术选型需要兼顾CLI的开发体验、AI集成的便利性以及网络交互的可靠性。CLI框架我选择了Typer基于Python。它比传统的argparse或click更现代利用Python类型提示Type Hints可以实现非常清晰和自动生成文档的命令行接口。它的异步支持也很好适合需要大量网络IO的求职查询操作。AI Agent核心目前有很多优秀的Agent框架如LangChain、LlamaIndex、AutoGen等。考虑到需要深度集成MCP和灵活的流程控制我选择了对MCP原生支持较好且设计灵活的框架。Agent的核心大模型可以选择本地部署的如Qwen、DeepSeek Coder或云API如GPT-4、Claude 3通过环境变量配置给了用户最大的灵活性。网络交互与爬取对于需要与网页交互的部分Playwright是首选。它比Selenium更快速API更优雅能很好地处理现代单页面应用SPA。配合其异步模式可以高效地并发处理多个页面。注意所有操作都应模拟人类正常行为设置合理的请求间隔避免对目标服务器造成压力。MCP Server开发使用官方的**mcp** Python SDK可以快速构建MCP Server。它提供了标准的工具定义、资源发布和调用响应格式。数据存储为了记录搜索历史、职位收藏、沟通记录需要一个轻量级数据库。SQLite是CLI工具的绝配零配置单文件完全够用。复杂的缓存或向量检索可以用ChromaDB或SQLite-VSS扩展来实现。# 一个简化的项目依赖文件requirements.txt示例 typer[all]0.9.0 playwright1.40.0 mcp0.1.0 sqlite-utils3.35 pydantic2.5.0 # 用于数据验证和设置管理 httpx0.25.0 # 用于异步HTTP请求 openai1.0.0 # 或 anthropic, qwen等SDK3. 核心功能模块深度解析3.1 智能职位搜索超越关键词匹配传统的搜索框只能进行关键词匹配。我们的CLI工具将搜索能力提升到了一个新的维度。基础搜索命令看起来可能很简单boss-cli search --keyword “后端开发” --city “北京” --experience “3-5年”但这背后AI Agent可能会做更多查询扩展Agent会根据“后端开发”自动联想出相关的技术栈如“Java”, “Spring Cloud”, “MySQL”, “Redis”并组合成更全面的搜索查询避免遗漏。语义过滤即使职位描述里没有明确写出“弹性工作制”但Agent可以通过分析全文判断出“不打卡”、“结果导向”等描述可能意味着弹性工作从而在初步筛选中将其标记出来。跨平台聚合可选扩展虽然本项目聚焦BOSS直聘但架构允许接入其他招聘平台的MCP Server。一个搜索命令可以同时返回多个平台的结果并由Agent进行去重和排序。实操心得搜索频率一定要控制好。在代码中我会在每次网络请求后随机休眠1-3秒并且将一次复杂搜索拆分成多个子请求分批进行。这既是对目标网站的尊重也能保证自己IP的稳定。另外所有搜索条件城市、经验、薪资等都做成了可配置的预设preset你可以保存一个“我的目标工作”预设以后一键调用。3.2 高级福利筛选用自然语言定义好工作这是最能体现AI价值的功能之一。薪资、地点是硬条件但公司文化、福利是软条件很难用精确的关键词筛选。通过这个CLI你可以这样操作boss-cli filter --input “search_results.json” --rule “团队规模小于50人技术氛围浓有定期技术分享年假多于10天”AI Agent会解析这条自然语言规则并将其转化为一系列可执行的判断逻辑“团队规模小于50人”可能需要从公司介绍页或工商信息接口获取数据。“技术氛围浓”这是一个语义判断。Agent会扫描职位描述和公司介绍中是否包含“技术驱动”、“深耕技术”、“极客文化”、“开源贡献”等关键词并给予评分。“有定期技术分享”直接匹配相关短语。“年假多于10天”在福利待遇部分进行数字提取和比较。实现技巧这个功能依赖于对职位详情页的深度解析。我们不仅要爬取页面上可见的文本还要注意那些折叠的、需要点击“展开更多”才能看到的内容。Playwright在这里可以完美模拟点击展开操作。解析后的文本会交给AI模型进行总结和判断并将结果结构化存储。规则引擎本身可以配置初期可以用一组预定义的规则模板后期允许用户用自然语言自定义。3.3 招聘者工作流管理让沟通更高效对于积极求职者主动与招聘者沟通至关重要。这个模块帮你自动化管理沟通链路。批量打招呼可以针对筛选出的职位自动发送个性化的开场白。个性化不是简单的“{公司名}你好”而是AI根据你的简历和职位描述生成一段突出你最匹配点的简短介绍。boss-cli greet --job-ids “12345,67890” --template “smart”对话记录与提醒CLI工具会拉取与所有招聘者的聊天记录本地存储。你可以快速查询和某人的历史对话。更智能的是Agent可以分析对话状态如果对方已读未回超过3天它可以提醒你“是否需要跟进”如果对方问了技术问题它可以帮你从简历项目中提取相关经历草拟回复。面试日程同步当与招聘者约好面试后你可以通过命令将时间、地点、链接等信息快速添加到本地日历如Google Calendar或Outlook或提醒事项中。注意事项自动化沟通必须谨慎过度使用会被平台判定为营销或骚扰行为。我的策略是1) 严格控制发送频率和总量2) 消息内容必须高度个性化拒绝群发感3) 为每个消息添加可选的延迟发送模拟人工操作。核心是“辅助”而非“替代”人与人的交流。3.4 AI简历优化一键适配不同职位这是投递前的临门一脚。你的核心简历可能只有一份但针对不同的职位侧重点应该不同。boss-cli resume optimize --resume “my_cv.pdf” --job-description “jd_abc.txt” --output “cv_for_abc.pdf”这个命令背后简历解析MCP Server和AI模型会协同工作解析从PDF中提取出所有文本并结构化为“个人信息”、“工作经历”、“项目经历”、“技能”等部分。分析AI同时分析你的简历和目标职位描述找出关键词匹配度、缺失的技能点、经历描述上的强弱项。优化建议AI会生成详细的修改建议例如“在‘项目经历A’中你提到了‘高性能’但职位描述强调‘高并发’建议将‘高性能’改为‘高并发与高性能’。”“职位要求‘熟悉Kubernetes’你的技能列表有‘Docker’建议在‘Docker’后加上‘及Kubernetes基础’。”一键改写可选在用户确认后AI可以直接生成一份修改后的简历文本。对于PDF可能生成一个带有修订标记的文本文件或者直接调用LaTeX/Word模板生成新PDF。重要提醒简历优化最重要的是“真实性”和“专业性”。AI的建议仅供参考所有修改必须由你自己最终审核确保每一段经历、每一个技能点都经得起推敲切忌无中生有或过度夸大。4. 实战操作从安装到第一个智能搜索4.1 环境准备与安装假设你已经在本地安装了Python3.10和pip。安装CLI工具最理想的方式是发布到PyPI这样用户可以直接pip install。在开发阶段可以从GitHub仓库克隆并安装。# 方式一从PyPI安装假设已发布 pip install boss-cli-ai-agent # 方式二从源码安装 git clone your-repo-url cd boss-cli-ai-agent pip install -e .安装浏览器驱动因为用了Playwright进行网页交互需要安装浏览器。playwright install chromium # 安装Chromium浏览器配置AI模型工具需要一个大模型API来驱动AI Agent。在项目根目录创建一个.env文件填入你的API密钥。# .env 文件示例 OPENAI_API_KEYsk-你的密钥 # 或者使用其他模型 ANTHROPIC_API_KEY你的密钥 QWEN_API_KEY你的密钥 # 指定默认使用的模型 DEFAULT_LLM_PROVIDERopenai DEFAULT_LLM_MODELgpt-4-turbo-preview初始化配置第一次运行CLI时会引导你进行基本配置。boss-cli init这个过程会询问你的BOSS直聘账号用于后续合规交互密码仅本地加密存储绝不外传。让你选择默认的工作城市、期望薪资范围。指定你的简历文件路径。在本地生成一个配置文件~/.config/boss-cli/config.json和一个SQLite数据库文件。4.2 执行一次完整的AI驱动搜索让我们完成一次从搜索到筛选的完整流程。步骤1启动MCP ServerAI Agent需要工具才能工作。我们需要在后台启动BOSS直聘的MCP Server。# 在一个终端窗口运行这会启动一个本地服务器 boss-cli mcp-server start --server boss # 服务器启动后会输出一个连接地址如 stdio://...步骤2进行智能搜索打开另一个终端窗口。# 使用AI Agent进行语义化搜索 boss-cli agent search --query “我想找一份北京的远程工作主要用Python和Go公司最好是有产品技术氛围的不要太加班”这时AI Agent比如GPT-4会开始工作理解你的自然语言查询。将其分解为结构化搜索指令city北京,keywordPython Go,attribute远程, 并理解“产品技术氛围”、“不加班”是后续筛选的软性条件。通过MCP协议调用BOSS直聘MCP Server执行搜索。获取一批初始职位列表。步骤3应用高级筛选Agent不会止步于初始列表。它会自动对这批职位应用更深入的筛选并发地通过MCP Server获取每个职位的详情页。分析详情页中的职位描述、公司介绍、团队介绍等文本。使用内置的规则模型判断是否符合“产品技术氛围”如出现“用户导向”、“快速迭代”、“A/B测试”等词和“不加班”如出现“弹性”、“不打卡”、“拒绝996”等词或没有出现“抗压”、“加班”等词。根据匹配度进行排序。步骤4查看与保存结果# 查看本次搜索的结果摘要 boss-cli result list --session latest # 结果会以表格形式呈现包含职位名、公司、匹配度评分、AI提炼的亮点等。 # 你可以将感兴趣的结果保存到本地库 boss-cli result save --job-id 123456,789012至此一次由AI Agent驱动的、超越简单关键词的智能搜索就完成了。你得到的不是一个简单的列表而是一个经过初步理解和筛选的、带有智能评分的候选集。5. 常见问题与故障排查实录在实际开发和使用的过程中我踩过不少坑。这里把一些典型问题和解决方案记录下来希望能帮你绕开这些弯路。5.1 网络交互与反爬虫策略问题1频繁操作后出现验证码或访问被限制。这是最可能遇到的问题。BOSS直聘等平台肯定有反爬机制。排查与解决降低频率这是根本。确保你的代码中每个请求之间都有随机延时例如time.sleep(random.uniform(2, 5))。并发请求数不要太高建议控制在3个以内。模拟真人行为使用Playwright等工具时启用真实的浏览器上下文携带正常的User-Agent并模拟鼠标移动、滚动等操作。不要使用无头模式headless进行高频操作可以间歇性使用非无头模式。使用代理IP池高级如果需求量大可以考虑使用可靠的代理IP服务并轮换IP。但这增加了复杂度和成本且必须确保代理的合法性。尊重robots.txt定期检查目标网站的robots.txt文件避免爬取被明确禁止的目录。账户安全避免使用主账号进行自动化测试。如果平台提供开发者API务必优先申请和使用API其稳定性和合法性远高于模拟操作。问题2页面元素加载不全或定位失败。现代网站大量使用JavaScript动态加载内容元素选择器可能随时变化。排查与解决使用更稳定的选择器优先使用style="width:16px;margin-left:4px;vertical-align:text-bottom;cursor:text;" />