Skip to content

About

铁面审计型求职教练。针对 JD 定制简历,编造一条打回一条。升堂→过堂→断案→定稿,全自动。

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

包公 | Baogong

「卷宗未到,不开堂。陈词未清,不结案。能扛住追问的,才上终稿。」

Agent Skills skills.sh License: MIT Version Modes Checkpoints

贴一份 JD,包公查面经、拆需求、逐条审经历——追出数字、砍掉编造、对齐关键词,交付一份定制简历 + 面试准备包。

看效果 · 安装 · 怎么用 · 局限


它解决什么问题

你让 AI 帮你改简历,拿到的东西能投吗?

  • 你贴了 JD 让 ChatGPT 帮你改简历,它"显著提升了效率"、"实现了智能化"——面试官一眼看出是 AI 写的
  • 你花了两小时对着 JD 逐条改措辞,但面试时被追问"这个数字哪来的",答不上来
  • 你投了 5 家公司,用的是同一份简历——因为针对每份 JD 定制太花时间了

包公不是润色器。它是求职教练:先调卷宗、当堂追问、砍掉编造,再交卷。


Before / After

维度 手动改简历 / 通用 AI 包公
JD 分析 自己读 JD 划重点 自动提取硬性/软性要求,联网查面经和公司动态,产出能力匹配矩阵
量化数据 AI 编造"提升 200%",面试答不出来 逐条追问来源(最多 2 轮),答不出就写过程描述,绝不编数字
措辞升级 "参与了"→"主导了",但你其实只参与了 动词等级对照故事库原文,推断内容单独标注、逐项确认
质量把关 自己写完自己检查 Writer 和 Auditor 物理隔离——写的人不审,审的人扮演面试官反向追问
多 JD 投递 每份 JD 从头改一遍 共用事实底稿,逐份独立定制 + 跨 JD 差异对比表
面试准备 没有 自动生成面试准备包:每条改动对应 STAR 应答 + 面经高频追问

它会交付什么

  • 定制简历 (Markdown + HTML + PDF) — 瑞士国际主义风格模板;Agent 自动产出字体子集化 PDF(A4 单页、<500KB),浏览器打开 HTML 复核排版为可选,零外部依赖
  • 审计报告 — 合规检查 + 反向面试审计 + 历史版本对比,每条 bullet 可追溯
  • 面试准备包 — 每条显著改动对应 STAR 应答要点 + 面经高频追问 + 风险提示

快速开始

npx skills add dmlin7777777/baogong-skill

安装后对 Agent 说:「帮我针对这个 JD 调简历」,然后粘贴 JD 文本或链接。

包公遵循 Agent Skills 标准,兼容 Claude Code / Codex / Cursor / OpenClaw / 任意可粘贴 SKILL.md 的 LLM 运行时(runtime-neutral)。

其他安装方式
git clone https://github.com/dmlin7777777/baogong-skill.git ~/.claude/skills/baogong-skill
依赖

渲染管线零外部依赖(仅 Python 标准库)。简历读取需要:

python-docx>=0.8.11    # .docx 解析
pdfplumber>=0.10.0     # .pdf 解析
playwright>=1.40       # 可选:PDF 自动产出(无头 Chromium 渲染)
pymupdf>=1.24          # 可选:PDF 字体子集化压缩(<500KB)

(若不想装这两条,PDF 自动降级为手动 Ctrl+P,并提示字体膨胀风险。)


对话示例

User: "帮我针对这个 JD 调简历 — 字节跳动数据分析师"
      [粘贴 JD 文本]

Agent: "JD 解析完成。已提取 12 项硬性要求、5 项软性要求。
        正在联网搜索字节跳动数据分析面经和团队文化...

        🔴 STOP CP1 — 经历选取:
        以下是你的 6 段经历与 JD 的匹配度排序:
        1. ✅ 数据看板项目 — 匹配度 92%
        2. 🟡 用户增长分析 — 匹配度 71%,缺少 A/B 测试细节
        3. ⬜ 后端开发实习 — 匹配度 23%
        ...
        请确认保留哪些经历,再继续。"
User: "帮我做个数据分析方向的通用简历"

Agent: "检测到 Mode B(无 JD 通用简历)。
        正在读取故事库,匹配数据分析岗位核心能力...

        🔴 STOP CP1 — 能力匹配矩阵:
        | 经历 | SQL | Python | 可视化 | AB测试 |
        |------|-----|--------|--------|--------|
        | 项目1 | ✅  | ✅     | ✅     | 🟡    |
        ...
        请选择要放入简历的经历。"
User: "帮我编一段没做过的实习经历"

Agent: "🔴 我无法帮你编造简历内容。原因:
        1. 面试风险:编造的经历在行为面试中会被追穿
        2. 背调风险:虚假经历 = 撤回 offer + 行业黑名单
        3. 法律风险:部分地区伪造资质属于刑事犯罪

        我能帮你做的:用你真实的经历,通过更好的措辞和结构来提升竞争力。
        要继续用真实经历来做简历吗?"

堂审四幕

包公的核心流程是一个 4 阶段管线,每个阶段有独立的专家节点和强制检查点。

幕 做什么 一句狠话
第一幕:调卷宗 拆 JD、查面经、搜公司动态、算匹配矩阵 面试官问什么,不是你猜的,是面经里写的
第二幕:当堂陈词 5 个检查点逐条过——选经历、补缺口、追数字、升措辞 没有数字就写过程,绝不编"显著提升"
第三幕:案卷归档 Writer 写稿,Auditor 独立审计,两个隔离节点 自己写完自己审 = 零审查
第四幕:应对回话 面试准备包:每条改动对应 STAR 应答 + 面经追问 简历过了筛选只是开始,面试答不上来等于白投

三层安全机制

机制 触发条件 做什么
编造阻断门 用户要求编造经历/数字 立即拦截,解释风险,引导用正当方式提升
量化审计 每条 bullet 的数字 追问来源(最多 2 轮),无来源则改写为过程描述
反向审计 最终简历的每条声明 独立 Auditor 扮演面试官逐条追问,发现重大问题触发回滚

六种场景自动路由

包公会根据你提供的输入自动判断应该走哪条路径:

场景 你给什么 包公做什么
Mode A 简历 + 一份 JD 完整 4 阶段定制 + 审计 + 面试准备
Mode A2 简历 + 多份 JD 共用事实底稿,逐份定制 + 跨 JD 对比表
Mode B 只有简历,没有 JD 按目标方向做通用简历(故事库为唯一事实来源)
Scenario C 只有 JD,没有简历 先分析 JD 需求,引导你创建简历,再进入 Mode A
Scenario D 输入不足 引导你补充信息,再路由到正确模式
Scenario E 要求编造内容 阻断 + 解释风险 + 正向引导

首次使用时,包公会自动引导你创建 resume_master.md(结构化主简历)和项目故事库。所有后续定制都以这两个文件为基础,原始文件始终不被修改。


安全边界

  • 会做: 提炼和重组你的真实经历;升级措辞(在事实范围内);追问你忽略的量化数据;对齐 JD 关键词
  • 不会做: 编造你没有的经历、数字、技能或证书;修改你的原始简历文件(resume_master.md 只读)
  • 强制停手点: 用户要求造假 → 立即阻断;量化追问 2 轮无结果 → 改写为过程描述;Auditor 发现重大问题 → 回滚到用户确认

局限性

  • 不是自动驾驶 — 5 个强制检查点需要你逐一确认,每份简历大约需要 15-30 分钟的交互。这是设计如此:跳过确认的简历面试时答不上来
  • 依赖你的真实经历 — 包公只做提炼,不做扩展。如果你的经历确实不匹配 JD,包公会诚实告诉你"这条不值得凑",而不是帮你硬写
  • 面经搜索依赖网络 — Phase 1 的联网搜索在小公司/冷门岗位可能找不到面经,此时会降级到通用面试模板,并标注来源
  • PDF 自动产出 — 交付时 Agent 调用 scripts/gen_resume_pdf.py(Playwright 无头渲染 + PyMuPDF 字体子集化)生成 <500KB 的 A4 PDF;若环境无 playwright/pymupdf 则降级为手动 Ctrl+P 并提示字体膨胀风险

为什么叫包公

在开完面试复盘会时,我注意到一个模式:拿到 offer 的候选人和被拒的候选人,简历质量差距不大——差距在面试追问时。

被追穿的人,简历上写了"主导了 XX 系统",面试官问细节时却说不清自己具体做了什么。被追穿的人,简历上写了"提升 200%",被问来源时支支吾吾。

AI 润色工具让这个问题更严重了。它们太擅长让简历"看起来很厉害",但每一个凭空出现的数字、每一个夸大的动词,都是面试时的定时炸弹。

包公做的事情和它的名字一样:升堂审案,逐条过堂。不是帮你把简历写得更花,而是确保你写的每一条,面试时都能站住脚。


架构与开发文档

架构

Pseudo Multi-Agent + Blackboard Architecture:所有专家节点通过 context_snapshot.json 通信,Orchestrator 协调执行顺序和回滚。

节点 职责
Context Scout JD 解析、面经搜索、公司调研、能力聚类
Resume Architect 经历选取、缺口填补、量化追问、措辞升级、草稿生成
Sincerity Auditor 合规检查、反向审计、Mock 面试、面试准备包

状态协议

context_snapshot.json 分 4 层:

  • Layer 0 (_meta): Session 元数据
  • Layer 1 (jd_facts): 脚本提取,初始化后只读
  • Layer 2 (user_decisions): 用户确认的交互决策,持久化
  • Layer 3 (expert_outputs): 节点输出,可覆写

信息状态标记

标记 含义
[✓] 已确认 用户明确确认或来自原始文件
[?] 待确认 已提取但未经本轮确认
[~] 模型推断 LLM 推断,必须经 CP 确认后才能进入最终稿

标记仅存在于 snapshot 和审计日志中,不出现在最终交付的简历里。

文件结构

baogong-skill/
├── SKILL.md                          # Agent 指令
├── resume_master.md                  # Master 简历(只读)
├── project-story-library.md          # 故事库
├── schemas/snapshot_schema_v1.json   # 状态协议定义
├── templates/
│   ├── resume_swiss.html             # HTML 模板(瑞士国际主义风)
│   └── state_update_template.md
├── references/                       # 专家节点指南
│   ├── writer_guide.md
│   ├── auditor_guide.md
│   ├── interaction_checkpoints.md
│   └── formatting_rules.md
├── scripts/
│   ├── jd_parser.py                  # JD 结构化提取
│   ├── diff_audit.py                 # 变更差异审计
│   ├── ats_checker.py                # ATS 兼容性检查
│   └── gen_resume_pdf.py             # HTML→PDF(Playwright+PyMuPDF,字体子集化 <500KB)
├── sessions/                         # 运行时快照
└── history/                          # 归档(简历 + 审计 + 面试准备)

MIT License

About

铁面审计型求职教练。针对 JD 定制简历,编造一条打回一条。升堂→过堂→断案→定稿,全自动。

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages