Overview
dsh-resume
README / EN
Package documentation
dsh-resume
把简历从一段 Markdown,变成一份可以认真投出去的 A4 成品。
dsh-resume 是 DeepSeek Harness 的求职简历工作台。它不只是“让 AI 改几句文案”,而是把求职简历最容易失控的三件事放到同一个闭环里:
内容改写 → A4 视觉复核 → 排版调优与导出。
你提供真实经历和目标岗位,Agent 负责整理、匹配和调整;你始终能看到 Markdown、A4 预览、模板和排版指标,并在最终导出前做确认。
简历 Agent 的内容取舍和验收依据见:校招简历写作方法论。
你会得到什么
- 一边编辑 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. 打开「求职简历」
第一次打开不用先准备复杂目录。进入插件后,在「开始」页选择:
- 有已有简历:导入并继续
- 从零开始:创建一个空白求职工作区
- 先看看效果:使用示例内容体验工作流
工作区默认是全局的,换会话或重启 DSH 后仍会继续使用。需要切换简历时,在左侧「工作区」页点击「选择文件夹」即可;插件直接复用 DSH 的工作区选择器,不需要手动填写绝对路径,选择过的文件夹会出现在最近工作区列表。
选择空文件夹时插件会自动准备基础文件;选择已有 resume.md 的目录会直接绑定。已有其他文件但还没有 resume.md 的目录会先要求确认,确认后只登记为简历工作区,不会覆盖或自动改动原文件;编辑器存在未保存的内容、排版或模板草稿时,切换前也会提示确认。
工作台会把内容、A4 和排版状态放在同一视线内:
3. 把真实材料和 JD 交给 Agent
直接复制下面这段作为第一句话即可:
请先初始化我的求职工作区。
我的真实材料如下,禁止编造:
- 学校 / 专业 / 时间:
- 意向岗位:
- 项目:
- 实习:
- 联系方式:
目标 JD:
(粘贴 JD)
请完成:
1. 整理通用简历底稿;
2. 生成 companies/目标公司-岗位/ 下的 jd.md 和 resume.md;
3. 根据岗位相关性调整模块顺序和措辞;
4. 执行 jobhunt_render;
5. 告诉我打开「求职简历」检查 A4,不要替我导出。
4. 在预览里复核
当 Agent 完成一轮修改后,打开「预览」:
- 左侧直接改 Markdown
- 中间查看固定 A4 页面
- 顶部查看页数和留白比例
- 需要时打开右侧 AI 助手
- 需要时打开「手动调整」进行细调
右上角的「保存版本」会保存当前 Markdown,并把当前模板、字体、字号、行距、页边距、颜色和图标微调参数绑定到这份版本。进入「投递版本」可以查看主简历和投递版,使用「另存为版本」创建新的岗位版本,或对已有版本改名、打开和归档;归档只隐藏版本记录,不删除原文件。
预览中的排版和模板 CSS 调整先停留在临时草稿,不会随着滑块变化写入共享模板。点击保存当前版本或另存为版本时,若只有字号、行距、页边距、颜色和图标变化,就保存到简历版本;若还有模板结构或 CSS 草稿,会先询问是否复制为新模板。打印时也会给出同样选择;不复制时按已保存模板打印,避免临时试验污染其他简历。
5. 复核内容,再把页面调到合适密度
可以这样要求 Agent:
请读取真实的 A4 排版指标。
目标是内容完整、容易被 HR 扫描;校招优先争取一页,但不要为了塞进一页删掉关键证据或把字压到难读。
请先保留每段经历的个人负责范围、动作、方法和结果,再合并重复、删除低相关内容,最后调整模板视觉参数,最多自动调优 3 轮;
每轮都重新渲染并复核。允许把有依据的事实写得更专业、更有成果感,但不要凭空新增数字、职责、技术栈或结果。
6. 可选:手动启动简历 MCP
打开「求职简历」工作台左侧的「MCP 服务」,点击「启动 MCP」后,插件才会启用本地 Streamable HTTP 端点 /dsh-resume/mcp。点击「停止」后不会自动重启,也不会影响 DSH 的预览、模板和手动调整。
启动后点击「复制配置」,把面板生成的 JSON 粘贴到其他 Agent 的 MCP 配置中即可。典型配置如下:
{
"mcpServers": {
"dsh-resume": {
"type": "streamable-http",
"url": "http://127.0.0.1:3099/dsh-resume/mcp"
}
}
}
兼容宿主仍需要按自身方式连接面板显示的本地端点;插件不会在未授权时自动把 MCP 注入所有 Agent。需要 stdio 方式时,也可以在插件目录执行 npm run mcp,使用同一套简历工具。
工作台怎么工作
内容层:Markdown 是你的可读底稿
你可以直接编辑 Markdown,也可以让 Agent 修改。内容和视觉分开保存:换模板不会覆盖经历,改排版不会污染正文。
视觉层:模板是可替换的视觉基线
模板库提供不同的布局和视觉方向:
| 模板 | 适合场景 | 视觉特点 |
|---|---|---|
| 校招标准 | 通用校招、第一份实习 | 稳定、清晰、单栏 |
| 技术极简 | 前端、后端、算法 | 高密度、技术感、少装饰 |
| 安静编辑 | 产品、运营、综合岗位 | 低饱和、舒展、阅读友好 |
| 黑白终端 | 开发、测试、工程岗位 | 黑白高对比、少量强调色 |
| 侧栏聚焦 | 项目很多、技能信息密集 | 双栏、项目优先 |
| 工程时间线 | Geek、工程和技术岗位 | 紧凑层级、经历时间线 |
| 作品集网格 | 前端、设计、产品作品集 | 双栏、项目卡片 |
| 产品信号 | 产品、运营、综合岗位 | 结果导向、舒展阅读 |
| 学术研究 | 研究生复试、科研申请 | 衬线字体、克制分隔 |
点击模板卡片只会选择视觉方向,不会把你带离当前页面;确认后再进入 A4 预览。
模板库支持把最多三个候选加入对比。候选缩略图使用当前 Markdown 通过同一套 Renderer 生成的真实 A4 页面,只做缩放展示,不是几条线拼出的静态占位图。模板工坊会同时显示候选缩略图、当前内容的实时 A4 预览和视觉 Token 面板;颜色、圆角和分隔线只先作用于当前预览,点击“另存为模板”后才进入模板库。模板卡片会标出内置/自定义、来源和当前修订号;查看版本时可以基于历史修订继续生成副本,应用模板只改变当前简历,不改模板库。
如果选中的模板需要更饱满或更适配内容,应要求 Agent 在它的视觉基线上改造。改造不只包括字号、行距和边距,也可以重构模块承载、信息密度、组件变体、流向和 CSS;默认会先生成草稿,确认后保存为独立副本,原模板不变:
复制“技术极简”为“前端实习高密度”,
保留它的视觉语言,重构模块承载以突出项目结果,
保存为新模板并让我在模板库里预览和管理版本。
如果你想从零做一个视觉方向,也不需要手写完整模板 JSON。告诉 Agent 面向什么岗位、希望单栏还是双栏、内容密度和视觉语气,插件会生成候选模板和模块布局(例如技能标签、项目卡片、经历时间线),经过校验、预览和 A4 测量后直接完成保存;只有目标路径或是否覆盖已有内容不明确时,Agent 才会停下来询问。
模板生成不是让模型自由拼接 CSS。Agent 会先从主题家族中选择一个稳定的视觉骨架,再组合语义模块预设,最后用真实 A4 指标复核。当前可用方向包括校招清晰、工程密集、双栏侧重、安静编辑、黑白终端和项目作品集;同一份 Markdown 可以在这些方向之间切换。
复核层:A4 指标不是装饰
插件会读取浏览器中的真实预览结果,关注这些指标:
- 页面数量
- 内容是否溢出
- 底部剩余空间比例
- 内容密度和异常留白
- 模块是否被分页截断
- 标题、项目和列表是否出现孤立断裂
如果用户明确要求一页,“一页通过”不是只看页面数量。真正的通过是:页面数量为 1、没有溢出、底部留白处于合理范围、内容没有被硬挤变形。 校招投递版将一页作为硬交付指标;内容取舍遵循实习和教育完整、项目按岗位筛选、荣誉优先于技能,先改模板和排版,再处理低优先级文本。
调优层:Agent 和用户各自负责什么
Agent 适合做:
- 根据 JD 调整信息优先级
- 改写空泛表述,强化有依据的动作、负责范围和结果
- 选择适合岗位的模板
- 根据测量结果进行有限轮次的排版调优
- 解释为什么需要缩短、收紧或更换布局
用户适合做:
- 确认经历是否真实
- 选择自己愿意使用的视觉方向
- 用滑杆做最后的字号、行高、页边距微调
- 在导出前确认内容和页面效果
AI 助手:不是另一个聊天窗口
AI 助手位于当前预览工作台右侧,拿到的是当前简历上下文:
- 当前 Markdown 草稿
- 当前模板和模板参数
- 当前 A4 测量结果
- 当前主对话的任务流
它的作用是减少“离开预览 → 复制上下文 → 回主对话 → 再回来确认”的往返。你可以直接说:
把项目经历压缩成每个项目两行,保留技术栈和量化结果。
现在底部留白太多,请优先收紧模块间距;如果仍然不足,再考虑字号。
主对话发生 Think、Read、Edit、Tool call 时,助手会按真实顺序显示任务流;最终回答和推理过程分开,不把整段工作过程挤成一条消息。
Agent 工具链
插件提供一组面向求职工作区的工具,Agent 可以组合使用:
模板视觉设计的详细方法由随包提供的 skills/resume-template-design/SKILL.md 承载;系统提示词负责触发路由,工具负责最终校验和落盘。
外部 Agent 通过 MCP 连接时不会自动读取 DSH 的 Skill。MCP 会在连接初始化时提供短版规则,并提供 resume_guide;但业务闭环不依赖 Agent 是否真的读到了指南:首次制作或每次切换工作区/简历时,必须先调用 resume_prepare,服务端会绑定当前工作区、保存内容基线、执行本地预检并返回当前版本指南。没有准备、工作区已切换、内容已被 DSH 或其他 Agent 改动,MCP 会拒绝写入和渲染并返回 nextTool。
MCP 的模板能力与 DSH 内置工具保持同一套业务边界:template_list、template_family_list、template_validate、template_generate、template_save、template_copy、template_versions、template_restore、layout_save、presentation_save 和 template_autotune。模板结构修改通过复制后保存,内置模板不会被覆盖;字号、行距、页边距、颜色和图标微调通过呈现参数保存,不改 Markdown。核心实习和关键项目不得为了“一页”先被压缩,先用模板结构和排版承载。
MCP 写入采用服务端工作流引导:resume_prepare → resume_read / resume_check → 变更 → resume_read / resume_check → resume_render → resume_metrics。每次写入、模板结构修改、布局保存、呈现参数保存或持久化调优后,服务端会返回检查、渲染和指标的推荐下一步,但不阻塞下一次有明确意图的迭代;简历内容允许 Agent 按用户意图重写、压缩、改名和重组,核心条目变化只作为审计警告返回。HTTP MCP 渲染后登记 renderId/contentHash,插件页会轮询轻量状态并刷新预览 iframe,由 iframe 将真实 DOM 测量回传给 resume_metrics;Agent 不应直接打开 file:// 预览文件来等待指标。硬门槛仅用于工作区绑定、路径安全、外部内容过期和未知图标等完整性问题。这个门槛只存在于 MCP 会话,不改变 DSH 内置工具和手动编辑入口。
| 工具 | 用途 |
|---|---|
jobhunt_init |
初始化求职工作区 |
jobhunt_read / jobhunt_write |
读取和写入简历材料 |
jobhunt_check |
检查内容证据、目录和排版风险 |
jobhunt_template_list |
查看 6 个内置模板和已保存的 composition 模板;不支持的模板会被忽略 |
jobhunt_template_copy |
复制模板并建立独立版本 |
jobhunt_template_generate |
从 DesignBrief 生成可校验的模板候选,不自动入库 |
jobhunt_template_validate |
校验模板配置 |
jobhunt_template_save |
创建 composition 模板;默认不覆盖已有自定义模板,覆盖必须显式确认影响 |
jobhunt_layout_validate |
校验模块布局声明 |
jobhunt_layout_metrics |
读取真实 A4 测量指标 |
jobhunt_template_autotune |
根据指标做有限轮次调优 |
jobhunt_template_versions / jobhunt_template_restore |
查看模板历史修订;按指定修订或最新历史修订恢复为新的当前修订 |
jobhunt_render |
生成或刷新预览 |
jobhunt_template_autotune 默认只返回草稿建议,不会因为一次试调就写入共享配置;只有用户接受后才显式传 persist=true 提交。模板 CSS 或结构修改则由工作台在保存、另存为或打印边界询问是否复制为新模板。
推荐的 Agent 工作顺序是:
初始化 → resume_prepare → 读取材料和 JD → 检查证据 → 生成投递版
→ 选择或生成模板候选 → 校验 → 保存并重新列出确认
→ 用精确模板 ID 渲染 → 读取 A4 指标
→ 有界调优 → 用户确认 → 复制/保存模板修订 → 再检查和渲染
模板生成的完成判定不是“AI 返回了候选 JSON”,而是 jobhunt_template_save 成功,随后
jobhunt_template_list 能查到该 ID,并且 jobhunt_render 使用同一个 templateId 成功刷新预览。
不支持的旧模板不会进入模板库;需要使用时应重新生成 composition 模板。
文件结构
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 或某个公司的投递版,模板和视觉可以保持不变。
应用模板会改动原模板吗?
不会。模板是视觉基线,简历内容单独保存。只调整当前简历的参数时,设置绑定到简历版本;需要改结构或 CSS 时,系统基于选中模板生成副本。内置模板不可变,已有自定义模板也不会被 AI 默认覆盖。
模板副本和版本怎么管理?
模板库会显示来源、修订号和历史版本。小的字号、行距、图标调整不会生成新模板;结构性改造在确认后生成副本,副本内部继续保留 v1、v2 等修订。恢复历史版本会生成新的当前修订,不删除旧记录。
为什么页面显示 1 页,但看起来还是不对?
因为“1 页”只代表没有分页,不代表排版平衡。请继续看底部留白、内容密度和模块断裂;插件会把这些状态区分出来。
能不能让 Agent 自动调到刚好一页?
可以。先让它读取 jobhunt_layout_metrics,再要求最多 3 轮有界调优。每轮必须重新渲染和复核,避免无限试错或把字号压得过小。
Agent 思考很久会被插件判定失败吗?
不会再使用固定秒数判定主对话失败。长思考、连续工具调用和等待确认会保持真实状态;如果你不想继续等,可以在 AI 助手里主动停止等待,主对话本身不会被取消。
Agent 写入新文件后需要我手动刷新吗?
不需要反复打开 Settings。主对话产生新的 jobhunt_render 或模板保存事件后,工作台会自动刷新文件列表、模板和 A4 预览;顶部也保留一个轻量的“刷新预览”按钮。若你有未保存的 Markdown 草稿,插件不会静默覆盖,而会提供“读取最新文件”按钮。
简历数据会上传到 GitHub 吗?
不会自动上传到本仓库。简历内容保存在你选择的本地工作区(旧版默认目录仍兼容);模型调用和数据传输仍遵循你的 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
