🧠 Resume Agent Harness:从零打造一个“越用越懂你”的简历智能体

0 阅读8分钟

金三银四 0 offer?可能不是你不优秀,而是简历没替你说话。
这篇文章会手把手带你实现一个基于 Agent 架构的简历优化助手——粘贴 JD 链接,对话式生成匹配岗位的简历,还能记住你的每一次偏好。

🧭 思维导图速览

mindmap
  root((ResumeHarness))
    为什么要做
      ATS 6秒筛选
      一份简历走天下失效
      岗位关闭快
      逐岗位定制太慢
    核心功能
      JD链接自动抓取
      关键词精准匹配
      对话式生成
      多模板输出
      专属记忆系统
      多渠道接入
      简历渲染下载
    技术架构
      接入层 Web/飞书/微信
      Agent服务 FastAPI
      共享单例层
      每会话隔离层
      存储 文件→SQLite
    从OpenHarness重构
      学习架构思想
      裁剪43+本地工具
      重构核心模块
      新增领域能力
    路线图
      P0 Agent核心
      P1 Web服务
      P2 多用户
      P3 IM渠道
      P4 增强版

一、为什么要做这个项目?

你可能也经历过这些“简历之痛”

  • 能力明明匹配,投出去的简历却石沉大海 —— ATS 系统扫 6 秒就决定命运,关键词没命中直接淘汰。
  • 一篇简历走天下?投前端要突出 React,投后端要强调架构,投管理岗要写带团队。同一份简历投所有岗位 = 海投
  • 等你花两小时改完简历,那个心仪岗位已经收到 500 份投递关闭了。好岗位稍纵即逝,求职是快鱼吃慢鱼

💡 如果有一个人,能读懂你的经历,还能针对每个 JD 精准优化简历呢?

这就是 ResumeHarness 的起点 —— 一个基于 Agent 架构的简历智能体。你只需要粘贴 JD 链接,剩下的交给它。


二、我要做什么

核心定位

ResumeHarness 基于 OpenHarness v0.1.6 裁剪重构,而非直接使用。核心理念:

“The model is the agent. The code is the harness.”
—— 模型提供智能,Harness 提供手、眼、记忆和安全边界。

OpenHarness 是一个通用的 Agent 基础设施框架,拥有 43+ 内置工具、12 种消息渠道、54 条命令……能力很强,但对简历场景来说太重了。我的做法是:

  • 学习其架构思想:Agent Loop、记忆系统、技能系统、Hook 机制、渠道适配
  • 裁剪不需要的部分:Bash/File/LSP/Sandbox 等 43+ 本地工具、Swarm 多 Agent、Voice、Vim……简历场景用不到
  • 重构核心模块:将需要的引擎、客户端、记忆、技能等模块按简历场景重新实现
  • 新增领域能力:简历渲染、JD 抓取、记忆自动提取、微信适配等

🚀 不重复造轮子,也不照搬照抄,而是站在巨人的肩膀上做垂直场景的重构。

技术约束(MVP 务实版)

约束选型原因
部署环境轻量云服务器 2C4G成本可控,个人也能跑
大模型DeepSeek API(多 Key 轮询)性价比高,64K 上下文
目标并发10 用户同时在线MVP 先跑通
前端React SPA现代化交互体验

三、能实现什么功能

1. 智能简历优化 —— 对话即生成

不再是填表式模板,而是自然语言对话驱动:

你:帮我优化简历,投递这个前端岗位 https://job.example.com/position/123
Agent:我来帮你分析 JD 并优化简历... [自动抓取 JD]
       根据岗位需求,我调整了以下内容:
       1. 将 React 项目经验提到最前
       2. 补充了 TypeScript 和 Webpack 关键词
       3. 用 STAR 法则重写了项目成果描述

关键能力

  • JD 链接自动抓取:粘贴招聘链接,web_fetch 工具自动解析岗位需求
  • 关键词精准匹配:基于 resume-skill.md 领域知识(ATS 友好、STAR 法则、行业关键词)
  • 多模板输出:商务风 / 学术风 / 创意风,一键切换

2. 越用越好用 —— 专属记忆系统

这是 ResumeHarness 最亮眼的设计。每个用户拥有独立的记忆空间:

记忆文件内容更新方式
简历原文.md原始简历上传 API
职业偏好.md写作风格/偏好LLM 自动写入 / 手动编辑
技能标签.md技能和经验年限LLM 自动写入 / 手动编辑
优化历史.md历次优化要点LLM 自动追加

记忆自动提取:LLM 在对话中主动调用 memory_write 工具,将你表达的偏好、技能标签持久化,下次对话自动注入提示词。

💡 第 1 次使用 → 上传简历原文 → 存入记忆
第 2 次使用 → Agent 记住你的偏好:“不要用 STAR 法则” → 自动调整
第 3 次使用 → 无需重复说明,直接按你的风格生成

3. 多渠道接入 —— 不只是 Web

  • Web 端:React SPA,流式对话 + 简历预览/下载
  • 飞书:在工作群里 @机器人,直接生成简历
  • 微信/企微:消息即服务,超长简历自动分段 + Web 下载链接

4. 简历渲染与下载

  • Markdown → PDF / HTML / Markdown 多格式导出
  • 渲染队列防 OOM(单线程渲染,60s 超时保护)
  • 简历快照持久化,会话淘汰后仍可下载
  • 每用户最多保留 20 份历史版本

四、项目架构

架构总览(Mermaid 版)

┌─────────────────────────────────────────────────────────────┐
│                        接入层                                │
│   Web UI (SPA)  │  飞书频道  │  微信/企微  │  其他 IM 渠道   │
└────────┬────────────┬─────────────┬────────────────────────┘
         │ SSE / JSON │ MessageBus  │ ChannelAdapter
┌────────▼────────────▼─────────────▼────────────────────────┐
│                    Resume Agent Service                      │
│                   (FastAPI + uvicorn)                        │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐  │
│  │               共享单例层 (进程级)                       │  │
│  │  API Client Pool(多Key) │ McpClientMgr │ ToolRegistry │  │
│  │  HookExecutor          │ SkillLoader                    │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐  │
│  │              每会话独立层 (用户级)                       │  │
│  │  QueryEngine │ Messages │ User Memory │ Settings      │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                  Web API 层                            │  │
│  │  POST /api/chat      流式对话 (SSE)                    │  │
│  │  /api/resume/*       简历生成与下载                     │  │
│  │  /api/memory/*       用户记忆管理                      │  │
│  │  /api/settings/*     用户配置                          │  │
│  └──────────────────────────────────────────────────────┘  │
└────────────────────────┬────────────────────────────────────┘
                         │
                    ┌────▼────┐
                    │ DeepSeek│
                    │   API   │
                    │ (多Key) │
                    └─────────┘

从 OpenHarness 重构了什么?

模块重构方式说明
Agent Loop重构实现QueryEngine + query.py + stream_events
API 客户端重构实现DeepSeek 走 OpenAI 兼容协议
记忆系统改造重构按 user_id 隔离,新增 memory_write 工具
技能系统重构实现新增 resume-skill.md 领域知识
钩子系统精简重构简历生成后格式校验等
上下文压缩重构实现长会话自动压缩
消息渠道重构实现飞书适配器 + 新增微信适配器
ohmo/gateway部分重构MessageBus + GatewayBridge 基类

不引入:43+ 本地工具、Sandbox、Swarm 多 Agent、Voice、Vim 等 —— 简历场景不需要。

新增模块(简历领域专属)

模块职责
resume_renderer.pyMarkdown → PDF/HTML 转换(渲染队列)
session_pool.py多租户会话池(LRU 淘汰)
api_key_pool.pyDeepSeek 多 API Key 令牌桶轮询
web_fetch.pyJD 链接自动抓取工具
memory_write.pyLLM 主动记忆写入工具
wechat_adapter.py微信/企微渠道适配器

技术栈速览

层次技术
Agent 框架OpenHarness 架构思想(裁剪重构)
LLMDeepSeek API(多 Key 轮询,64K 上下文)
Web 后端FastAPI + uvicorn
Web 前端React SPA
PDF 生成fpdf2(纯 Python,中文友好)
IM 渠道lark-oapi / httpx
MCPmcp SDK(HTTP only)
数据存储文件存储 → SQLite(P2 迁移)
部署systemd / Docker(单机 2C4G)

五、实现路线图(从零到一,5 个阶段)

我会持续更新进度,欢迎关注仓库。

P0:Agent 核心可用版

心脏跳动——Agent Loop 跑通,DeepSeek 对接成功,记忆写入生效

  • 精简版 RuntimeBundle 构建
  • DeepSeek API 接入(多 Key 令牌桶轮询)
  • Agent Loop 完整实现(LLM → 工具 → 反馈 → 继续)
  • 简历领域 Skill(ATS 友好 / STAR 法则 / 关键词)
  • 用户记忆系统(memory_write 工具自动提取偏好)
  • SSE 流式对话端点 + 极简验证页面

P1:Web 服务可用版

从能用变好用——简历可以下载,JD 可以抓取,记忆越用越懂你

  • 简历渲染与下载(PDF/HTML/Markdown,多模板)
  • 记忆管理 API(CRUD + 简历上传)
  • 用户级配置(模板偏好 / 语言风格)
  • web_fetch 工具(JD 链接自动抓取)
  • 工具与系统查询 API

P2:多用户版

从个人工具变产品——10 人并发,认证隔离,React 前端上线

  • JWT 认证体系
  • 多租户数据隔离
  • SQLite 数据存储迁移
  • React SPA 正式前端(登录/对话/简历预览/记忆管理)

P3:IM 渠道版

简历助手无处不在——飞书/微信也能用

  • 飞书渠道接入
  • 微信/企微渠道接入
  • 渠道统一消息路由

P4:增强版

更强更稳更专业——MCP 工具扩展 + 高质量 PDF + 领域 Skill 精调

  • MCP 工具接入(邮件发送、PDF 转换等)
  • 多套简历 CSS 模板 + 中文 PDF 优化
  • 行业细分 Skill(Tech / Finance / Creative)
  • API 速率限制 + 监控

六、为什么值得关注?

1. 实战 Agent 架构的最佳学习材料

不是 Demo,不是 Hello World,是一个完整可运行的 Agent 产品。从 RuntimeBundle、Agent Loop、工具调用、记忆系统到多渠道接入,每一步都有代码。

2. OpenHarness 架构重构的实战案例

OpenHarness 有 43+ 内置工具、12 种消息渠道、54 条命令……对垂直场景太重。ResumeHarness 展示了如何学习架构、裁剪冗余、重构实现——这是从通用框架到垂直产品的完整实践。

3. 从零到一的完整迭代记录

P0 → P1 → P2 → P3 → P4,每个阶段的代码变更、设计决策、踩坑记录都会完整公开。

4. 可复用的 Agent 架构模式

  • 共享单例 + 每会话隔离:API Client 进程级复用,QueryEngine 每会话独立
  • LRU 会话池:2C4G 服务器支撑 10 并发的秘密
  • 记忆自动提取:LLM 主动调用 memory_write,实现“越用越好用”
  • 多 Key 令牌桶轮询:DeepSeek API 429 的优雅应对

七、后续愿景

方向内容
简历评分对生成简历与 JD 的匹配度自动评分
简历对比视图原文 vs 优化版并排展示差异
多轮优化支持对话中逐步修改简历细节
批量投递一次生成多份不同岗位的简历
多语言简历中英双语简历一键生成
招聘网站 MCP自动抓取招聘网站 JD 描述

📌 写在最后

金三银四不裸奔,简历先行找工作。如果你也遇到过简历的坑,或者对 Agent 架构感兴趣,欢迎一起交流!

相关链接

⭐ Star 一下,陪我一起从零到一!

交流讨论

扫码加入 Resume Harness 技术交流群,一起聊聊 Agent 架构和简历优化那些事。

🤔 互动问题:你在求职过程中遇到过“简历没问题,但就是没面试”的情况吗?你觉得 AI 能在多大程度上解决这个问题?欢迎在评论区聊聊你的经历和看法!