dsh-resume
把简历从一段 Markdown,变成一份可以认真投出去的 A4 成品。
dsh-resume 是 DeepSeek Harness 的求职简历工作台。它不只是“让 AI 改几句文案”,而是把求职简历最容易失控的三件事放到同一个闭环里:
内容改写 → A4 视觉复核 → 排版调优与导出。
你提供真实经历和目标岗位,Agent 负责整理、匹配和调整;你始终能看到 Markdown、A4 预览、模板和排版指标,并在最终导出前做确认。

你会得到什么
- 一边编辑 Markdown,一边看到真实的 A4 预览
- 清楚知道是“刚好一页”、溢出,还是一页但留白过多
- 用模板库切换视觉方向,不需要重新写简历内容
- 让 Agent 根据目标岗位改写内容、排序模块、补齐排版动作
- 在工作台内镜像主对话的 Think、Read、Edit、Tool call 和回答
- 手动微调字号、行高、模块间距和页边距,实时看到变化
- 确认后再下载 HTML 或导出 PDF,不让 Agent 越权替你提交
它的目标不是“生成一份看起来像简历的文字”,而是让你在投递前回答三个问题:
- 内容有没有围绕这个岗位?
- 视觉上是否清楚、克制、适合阅读?
- 打印或导出后是不是一页,而且没有明显浪费或挤压?
90 秒上手
1. 安装插件
dsh plugin --profile web add github:L3n3L/dsh-resume
然后启动或重启 Web 端:
dsh web
环境要求:
- DeepSeek Harness Web profile
dsh >= 0.1.0-rc.6- Node.js 22+
2. 打开「求职简历」
第一次打开不用先准备复杂目录。进入插件后,在「开始」页选择:
- 有已有简历:导入并继续
- 从零开始:创建一个空白求职工作区
- 先看看效果:使用示例内容体验工作流
工作台会把内容、A4 和排版状态放在同一视线内:

3. 把真实材料和 JD 交给 Agent
直接复制下面这段作为第一句话即可:
请先初始化我的求职工作区。
我的真实材料如下,禁止编造:
- 学校 / 专业 / 时间:
- 意向岗位:
- 项目:
- 实习:
- 联系方式:
目标 JD:
(粘贴 JD)
请完成:
1. 整理通用简历底稿;
2. 生成 companies/目标公司-岗位/ 下的 jd.md 和 resume.md;
3. 根据岗位相关性调整模块顺序和措辞;
4. 执行 jobhunt_render;
5. 告诉我打开「求职简历」检查 A4,不要替我导出。
4. 在预览里复核
当 Agent 完成一轮修改后,打开「预览」:
- 左侧直接改 Markdown
- 中间查看固定 A4 页面
- 顶部查看页数和留白比例
- 需要时打开右侧 AI 助手
- 需要时打开「手动调整」进行细调
5. 调到“刚好一页”再导出
可以这样要求 Agent:
请读取真实的 A4 排版指标。
目标是刚好一页:不要溢出,也不要留下明显空白。
如果不合适,请只调整模板视觉参数,最多自动调优 3 轮;
每轮都重新渲染并复核,不要编造或删掉真实经历。
工作台怎么工作
内容层:Markdown 是你的可读底稿
你可以直接编辑 Markdown,也可以让 Agent 修改。内容和视觉分开保存:换模板不会覆盖经历,改排版不会污染正文。
视觉层:模板是可替换的视觉基线
模板库提供不同的布局和视觉方向:
| 模板 | 适合场景 | 视觉特点 |
|---|---|---|
| 校招标准 | 通用校招、第一份实习 | 稳定、清晰、单栏 |
| 技术极简 | 前端、后端、算法 | 高密度、技术感、少装饰 |
| 安静编辑 | 产品、运营、综合岗位 | 低饱和、舒展、阅读友好 |
| 黑白终端 | 开发、测试、工程岗位 | 黑白高对比、少量强调色 |
| 侧栏聚焦 | 项目很多、技能信息密集 | 双栏、项目优先 |
| 工程时间线 | Geek、工程和技术岗位 | 紧凑层级、经历时间线 |
| 作品集网格 | 前端、设计、产品作品集 | 双栏、项目卡片 |
| 产品信号 | 产品、运营、综合岗位 | 结果导向、舒展阅读 |
| 学术研究 | 研究生复试、科研申请 | 衬线字体、克制分隔 |
点击模板卡片只会选择视觉方向,不会把你带离当前页面;确认后再进入 A4 预览。

模板库支持把最多三个候选加入对比。候选缩略图使用当前 Markdown 通过同一套 Renderer 生成的真实 A4 页面,只做缩放展示,不是几条线拼出的静态占位图。模板工坊会同时显示候选缩略图、当前内容的实时 A4 预览和视觉 Token 面板;颜色、圆角和分隔线只先作用于当前预览,点击“另存为模板”后才进入模板库。
如果内置模板不合适,可以让 Agent 复制一个模板再调整,而不是直接破坏原模板:
复制“技术极简”为“前端实习高密度”,
保留原模板不变,降低装饰,突出项目结果,
保存为新版本并让我在模板库里预览。
如果你想从零做一个视觉方向,也不需要手写完整模板 JSON。告诉 Agent 面向什么岗位、希望单栏还是双栏、内容密度和视觉语气,插件会生成候选模板和模块布局(例如技能标签、项目卡片、经历时间线),经过校验、预览和 A4 测量后直接完成保存;只有目标路径或是否覆盖已有内容不明确时,Agent 才会停下来询问。
模板生成不是让模型自由拼接 CSS。Agent 会先从主题家族中选择一个稳定的视觉骨架,再组合语义模块预设,最后用真实 A4 指标复核。当前可用方向包括校招清晰、工程密集、双栏侧重、安静编辑、黑白终端和项目作品集;同一份 Markdown 可以在这些方向之间切换。
复核层:A4 指标不是装饰
插件会读取浏览器中的真实预览结果,关注这些指标:
- 页面数量
- 内容是否溢出
- 底部剩余空间比例
- 内容密度和异常留白
- 模块是否被分页截断
- 标题、项目和列表是否出现孤立断裂
“一页通过”不是只看页面数量。真正的通过是:页面数量为 1、没有溢出、底部留白处于合理范围、内容没有被硬挤变形。
调优层:Agent 和用户各自负责什么
Agent 适合做:
- 根据 JD 调整信息优先级
- 改写空泛表述,保留可验证结果
- 选择适合岗位的模板
- 根据测量结果进行有限轮次的排版调优
- 解释为什么需要缩短、收紧或更换布局
用户适合做:
- 确认经历是否真实
- 选择自己愿意使用的视觉方向
- 用滑杆做最后的字号、行高、页边距微调
- 在导出前确认内容和页面效果

AI 助手:不是另一个聊天窗口
AI 助手位于当前预览工作台右侧,拿到的是当前简历上下文:
- 当前 Markdown 草稿
- 当前模板和模板参数
- 当前 A4 测量结果
- 当前主对话的任务流
它的作用是减少“离开预览 → 复制上下文 → 回主对话 → 再回来确认”的往返。你可以直接说:
把项目经历压缩成每个项目两行,保留技术栈和量化结果。
现在底部留白太多,请优先收紧模块间距;如果仍然不足,再考虑字号。
主对话发生 Think、Read、Edit、Tool call 时,助手会按真实顺序显示任务流;最终回答和推理过程分开,不把整段工作过程挤成一条消息。
Agent 工具链
插件提供一组面向求职工作区的工具,Agent 可以组合使用:
| 工具 | 用途 |
|---|---|
jobhunt_init |
初始化求职工作区 |
jobhunt_read / jobhunt_write |
读取和写入简历材料 |
jobhunt_check |
检查内容证据、目录和排版风险 |
jobhunt_template_list |
查看可用模板 |
jobhunt_template_copy |
复制模板并建立独立版本 |
jobhunt_template_generate |
从 DesignBrief 生成可校验的模板候选,不自动入库 |
jobhunt_template_validate |
校验模板配置 |
jobhunt_template_save |
保存模板版本 |
jobhunt_layout_validate |
校验模块布局声明 |
jobhunt_layout_metrics |
读取真实 A4 测量指标 |
jobhunt_template_autotune |
根据指标做有限轮次调优 |
jobhunt_render |
生成或刷新预览 |
推荐的 Agent 工作顺序是:
初始化 → 读取材料和 JD → 检查证据 → 生成投递版
→ 选择或生成模板候选 → 校验 → 渲染 → 读取 A4 指标
→ 有界调优 → 用户确认 → 保存模板版本
文件结构
jobhunt/
├─ profile.md # 求职意向、城市、到岗时间
├─ resume.md # 通用简历底稿
├─ resume.layout.json # 模块顺序和布局声明
├─ story-bank.md # 项目 / 实习素材库
├─ notes.md # 缺口、反馈和待补证据
├─ templates/
│ ├─ default.md # 内容结构基线
│ └─ default.css # 工作区自定义样式
└─ companies/
└─ 公司-岗位/
├─ jd.md # 岗位描述
├─ resume.md # 该岗位投递版
└─ preview.html # 渲染预览
模板可以扩展布局,但不需要把私有渲染语法塞进每一份简历正文。内容保持可读,布局放在 resume.layout.json,视觉参数放在模板 Schema 中。
安全边界
这个插件把“投递前确认”放在核心位置:
- 不应编造学校、项目、实习、奖项或数据
- 不自动替你投递
- 不自动替你最终导出 PDF
- 不把模板选择等同于内容覆盖
- 不要求你把简历提交到插件仓库
- Agent 生成的内容仍然需要你确认真实性
建议始终告诉 Agent:不要编造;缺少证据就标出来,写进 notes.md。
常见问题
我只想改措辞,必须打开模板吗?
不需要。直接让 Agent 修改 resume.md 或某个公司的投递版,模板和视觉可以保持不变。
我换模板会丢内容吗?
不会。模板是视觉基线,简历内容单独保存。你也可以复制模板后再改,保留原模板。
为什么页面显示 1 页,但看起来还是不对?
因为“1 页”只代表没有分页,不代表排版平衡。请继续看底部留白、内容密度和模块断裂;插件会把这些状态区分出来。
能不能让 Agent 自动调到刚好一页?
可以。先让它读取 jobhunt_layout_metrics,再要求最多 3 轮有界调优。每轮必须重新渲染和复核,避免无限试错或把字号压得过小。
Agent 思考很久会被插件判定失败吗?
不会再使用固定秒数判定主对话失败。长思考、连续工具调用和等待确认会保持真实状态;如果你不想继续等,可以在 AI 助手里主动停止等待,主对话本身不会被取消。
Agent 写入新文件后需要我手动刷新吗?
不需要反复打开 Settings。主对话产生新的 jobhunt_render 或模板保存事件后,工作台会自动刷新文件列表、模板和 A4 预览;顶部也保留一个轻量的“刷新预览”按钮。若你有未保存的 Markdown 草稿,插件不会静默覆盖,而会提供“读取最新文件”按钮。
简历数据会上传到 GitHub 吗?
不会自动上传到本仓库。简历内容保存在你的本地 jobhunt/ 工作区;模型调用和数据传输仍遵循你的 DeepSeek Harness 配置。
开发与贡献
git clone https://github.com/L3n3L/dsh-resume.git
cd dsh-resume
# 本地开发时,可将插件链接到 web profile 后启动 Harness
dsh plugin --profile web add link:.
dsh web
主要目录:
client/client.js:工作台、编辑器、A4 预览和 AI 助手lib/renderer.js:Markdown、模板和固定 A4 页面渲染lib/template-generation.js:DesignBrief 到安全 TemplateSpec 候选生成lib/template-presets.js:内置模板lib/autotune.js:排版指标和有限调优逻辑index.js:插件工具、工作区和 Harness 对接
License
MIT © L3n3L
No comments yet. Be the first to write one.