dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
口述经历 → 可投递简历 → JD 定制 → 投递体检 → 面试准备
面向应届毕业生与职场人的开源简历 Skill 包。
做简历难的不是排版,是在真实约束下把内容组织对:
真实痛点 · 本项目的做法 内容超出一页,但一个字都不能删(删掉真实经历等于伪造) · 排版密度自动分档:5 档松紧,按内容体量选最宽松且装得下的一档,容量表由实测定标 ATS 解析器读不懂花哨排版 · 纯文本优先:不图片化文字、不用图标字体、不用表格排版正文,字号守住 10pt 下限 模板好看但千篇一律,改配色要动一堆文件 · 四维正交外观:版式 × 底板 × 配色 × 密度,35 种组合任意搭配,派生色阶自动计算 深色底板上分区标题看不见、色块褪成灰色 · 主色分「色块用」与「文字用」两套,按 WCAG 对比度自动校准;派生色设可见下限 投出去不知道能不能过 · 内置 ATS 体检:解析成品 PDF,检查页数、文本层、分区顺序、可提取字符数 一份简历投所有岗位 · JD 匹配分析 + 批量定制:一份底稿,按多个 JD 各出一版 写完简历不知道面试会被问什么 · 自动生成求职信与面试准备清单(高频问题、经历追问点、自我介绍)
一句话:把「排版好看」和「能过机筛」这两件难事,从手工调参变成一条命令。
python scripts/build_all.py resume.json --out ./out --style elite --surface ink一次产出 HTML + PDF + DOCX 三种格式,并自动完成内容质检与 ATS 体检。
版式(9) × 底板(5) × 配色(7) × 密度(5)9 套版式(--style)
键名 · 名称 · ATS · 适用场景 classic · 经典单栏 · ✅ · 单栏自上而下,适配 90% 场景,投递大厂/外企首选 modern · 现代单栏 · ✅ · 左对齐页眉 + 圆角短色条,互联网/产品/运营岗 elite · 精英几何 · ✅ · 斜切几何色块 + 一寸照片位,视觉层次强 academic · 学术严谨 · ✅ · 细线分隔 + 居中对齐分栏,硕博/科研/读博申请 neon · 霓虹卡片 · ✅ · 顶部渐变色带 + 荧光照片 + 色块标签 geo · 几何圆角 · ✅ · 每个分区做成大圆角浅色卡片,留白充足 sidebar · 双栏侧边栏 · ⚠️ · 左侧面板放技能与联系方式,仅用于直接给人看的场景 creative · 创意顶栏 · ⚠️ · 顶部彩色带 + 右侧浅底面板 soft · 柔光双栏 · ⚠️ · 顶部圆角几何块 + 左右双卡片
⚠️ 标记「慎投网申」的双栏版式:部分 ATS 解析器会跨栏错读。线上投递请用单栏版。
5 种底板(--surface)
键名 · 名称 · 说明 white · 纯白 · 标准 A4 白纸,ATS 与打印最稳 ivory · 象牙白 · 一点暖调,适合打印与文档内嵌 mist · 雾霭灰 · 高调浅灰纸,深蓝主色,科技感 sage · 苔绿 · 低饱和绿灰纸,教育/公益/公益行业感 ink · 深墨 · 深色底板整套反色,适合作品集与设计岗;打印耗墨,部分 ATS 截图预览会失真
7 套配色(--palette):indigo 靛蓝 / teal 青碧 / clay 赭红 / plum 紫罗兰 / amber 琥珀 / graphite 石墨 / crimson 绛红
5 档密度(--density):airy / normal / compact / dense / tight,省略则按内容体量自动选择。
lint_resume.py)检查项全部基于中文简历的真实写法:
ats_check.py)解析成品 PDF,输出:页数、文本层是否正常、可提取字符数、识别到的分区顺序、跨栏风险、单页建议。
jd_match.py)输出关键词覆盖率、已命中项、简历缺失项(需用户确认是否真实具备)、按优先级的定制修改建议。
工具只做「分析与建议」,不会替你编造经历。所有建议都附带「若你实际掌握 X 则补上,若无真实经验则不要写」。
tailor_batch.py)一份底稿 + 多个 JD,一次生成多套定制版,每套附匹配报告与汇总 JSON。
cover_letter.py)生成求职信 + 「投递前自查」清单 + 面试准备清单(岗位业务相关问题、经历追问点、自我介绍)。
fit_one_page.py)自动试 6 档排版参数,命中第一个「单页且排版正常」的档位。
basic.photo 支持本地路径 / data URI / 远程 URL,自动转成 base64 内嵌(保证 HTML 单独分享或转 PDF 时图片不丢)。支持 1in / small1in / 2in / square / boss 五种规格与 rect / rounded / circle 三种形状。没有照片时输出轻量占位框,不生成示例图。
PATH 查找# 1. 克隆或解压本项目
cd resume-crafter
# 2. 安装依赖(推荐用虚拟环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
# 3. 自检:验证文件完整性、依赖、浏览器、主题体系一致性
python scripts/doctor.pyrequirements.txt:
python-docx>=1.1.0 # 生成 DOCX
pypdf>=4.0.0 # ATS 体检时解析 PDF
pillow>=10.0.0 # 可选:仅生成示例证件照时需要doctor.py 会检查:脚本与模板是否齐全、依赖是否安装、浏览器内核是否找到、示例数据能否解析、主题体系一致性(派生变量是否声明在 body 层、风格 CSS 是否只写基值、密度档是否只写系数、Python 与 CSS 的密度档数是否一致、35 种底板×配色的主色对比度是否达标)。
关于安装位置:本项目是一个 Agent Skill 包,可直接放到以下任一位置:
~/.workbuddy/skills/resume-crafter/ # WorkBuddy 全局
<项目>/.workbuddy/skills/resume-crafter/ # 项目级本仓库同时是一个标准的 DSH 组合包(bundle),声明了 dsh.bundle,可直接用 dsh plugin 安装:
dsh plugin --profile web add github:lhmlhmlhm11/resume-crafter安装后重启 dsh web,组合包会注册一个 FileSystemSkillProvider,把 resume-crafter 技能加入技能发现列表(与你已有的项目级/用户级技能并存,不会覆盖)。在对话里即可调用;也可用 /resume-crafter 直达。
安装要求:dsh >= 0.1.0-rc.6。包内不含@deepseek-ai/*依赖,官方包由 profile 启动闭包注入。
# ① 写好简历 JSON(结构见第五节)
# ② 一键出三份文件 + 自动质检
python scripts/build_all.py resume.json --out ./out --style elite --surface ink
# ③ 对着目标岗位做匹配分析
python scripts/jd_match.py resume.json jd.txt --out ./jd报告.json
# ④ 生成求职信与面试准备
python scripts/cover_letter.py resume.json jd.txt --out ./求职信.md --interview
# ⑤ 投之前体检成品 PDF
python scripts/ats_check.py ./out/张三.pdf命令 · 作用 build_all.py resume.json --out DIR · 主力命令:质检 → HTML → PDF → DOCX → ATS 体检 render_resume.py data.json --out x.html · 只出 HTML;--list-styles / --list-themes 查看全部选项 lint_resume.py resume.json --style elite · 只做内容质检(--json 输出结构化结果) ats_check.py x.pdf · 只做 ATS 体检 jd_match.py resume.json jd.txt --out r.json · JD 匹配分析 cover_letter.py resume.json jd.txt --out letter.md --interview · 求职信 + 面试准备 tailor_batch.py resume.json --jd a.txt b.txt --out DIR · 一份底稿批量定制多岗位 fit_one_page.py resume.json --out-dir DIR · 自动适配到单页 doctor.py · 环境与文件自检 selftest.py · 端到端回归测试(67 项断言)
# 不知道选什么 → 先看全部选项
python scripts/render_resume.py --list-styles
python scripts/render_resume.py --list-themes
# 大厂投递:单栏 + 白底 + 靛蓝,最稳
python scripts/build_all.py resume.json --out ./out \
--style classic --surface white --palette indigo
# 作品集/设计岗:几何版式 + 深墨底板
python scripts/build_all.py resume.json --out ./out \
--style geo --surface ink --palette plum
# 内容很多,强制用紧凑档(一般不需要,密度会自动选)
python scripts/build_all.py resume.json --out ./out --density compact参数优先级:
命令行参数 > JSON 的 meta > 版式默认值一条数据可以复用多套外观 —— 只要显式指定了 --surface / --palette,JSON 里遗留的 meta.accent 就不再覆盖它。
A. 直接跑脚本 —— 适合批量生成、精细控制(上面所有命令)。
B. 交给 Agent —— 把 skill 装到 ~/.workbuddy/skills/ 后,用自然语言驱动:
「读一下我的简历 JSON,帮我用精英几何版式 + 深墨底板出一份 PDF,职位是字节跳动用户运营实习生」
Agent 会自动读取 SKILL.md(技能说明书)、references/data-schema.md(数据格式)、references/design-system.md(设计体系)、references/writing-guide.md(写作规范),按流程执行。
唯一事实来源 —— HTML / PDF / DOCX 三种产物都由它渲染,改 JSON 再重建即可同步更新全部格式。
{
"meta": {
"style": "elite",
"surface": "ink",
"palette": "indigo"
},
"basic": {
"name": "张三",
"title": "电子商务专业 · 2027 届本科",
"photo": "sample-photo.png",
"photo_size": "1in",
"photo_shape": "rect",
"contact": [
{ "type": "phone", "text": "138-0000-0000" },
{ "type": "email", "text": "zhangsan@example.com" },
{ "type": "location", "text": "江苏 · 苏州" },
{ "type": "link", "text": "github.com/zhangsan" }
]
},
"summary": "电子商务专业在读,具备 2 段电商运营实习经历,熟悉从选品、店铺搭建到活动策划、数据复盘的完整链路,能独立完成单店日常运营并输出周度数据报告。",
"sections": [
{
"id": "experience",
"title": "实习经历",
"type": "experience",
"items": [
{
"org": "苏州某某电子商务有限公司",
"role": "电商运营实习生",
"location": "苏州",
"start": "2025.07",
"end": "2025.09",
"bullets": [
"接管天猫店铺日常运营,通过重排选品结构与详情页 A/B 测试,将单品转化率由 1.8% 提升至 2.6%",
"策划 3 场平台大促活动,累计带来 GMV 约 42 万元,超额完成月度目标 23%"
]
}
]
},
{
"id": "skills",
"title": "专业技能",
"type": "skills",
"groups": [
{ "label": "数据与工具", "items": ["Excel(数据透视表、函数建模)", "SQL 基础"] },
{ "label": "运营能力", "items": ["选品与市场分析", "活动策划与文案"] }
]
},
{
"id": "awards",
"title": "荣誉奖项",
"type": "list",
"items": [
{ "text": "全国大学生电子商务三创赛校赛一等奖(2025)" }
]
}
]
}分区类型:experience / project / education(条目型)、skills(分组型)、list(列表型)、text(纯文本型)。 完整字段说明见 _staging/resume-crafter/references/data-schema.md。
build_all.py 的产物python scripts/build_all.py resume.json --out ./out \
--style elite --surface ink --name "张三-电商运营实习生"out/
├── 张三-电商运营实习生.html (25 KB) # 内嵌 CSS,头像已转 base64,可单独分享
├── 张三-电商运营实习生.pdf (476 KB) # 文本型,ATS 可解析
└── 张三-电商运营实习生.docx (41 KB) # 可在 Word 里继续编辑文件名默认取 JSON 里的basic.name,用--name可覆盖。
控制台输出:
==================================================================
简历构建 — 张三-电商运营实习生
==================================================================
排版风格:elite(精英几何(几何色块))
纸面底板:ink 主色配色:indigo 密度:自动
头像位:已启用一寸照片位
[1/4] 内容质检:0 个必须修复 / 0 处建议 / 1 条优化建议
[2/4] HTML 已生成:张三-电商运营实习生.html
[3/4] PDF 已生成:张三-电商运营实习生.pdf
[4/4] DOCX 已生成:张三-电商运营实习生.docx
[ATS 体检] 1 页 — 阻断 0 / 风险 0注意:ATS 体检结果打印在控制台,不单独落盘为文件。需要留存报告请自行重定向输出,或单独跑 ats_check.py。jd_match.py 的产物(JSON)