# 设计思路与理念 这篇讲清楚两件事:这套工具解决了什么问题,以及为什么做成现在这个样子。 给两类人看:用它的人,和想照着改一套自己版本的人。 ## 一、要解决的四个问题 ### 1. 用它的人不是程序员 这套工具是给 HR 和猎头用的。不能指望他们会挑 CLI(命令行工具——不点鼠标、靠打字输命令操作的程序)、会搭文件夹结构、会判断"AI 说得对不对"。 也不能指望他们都用同一款 AI 工具——Claude Code、Codex、workbuddy、qoderwork、MiniMax Code、Z code 都有可能,水平还参差不齐。 **所以:能替用户准备的,全部提前准备好。** - 要装什么工具,已经替你选好了(boss-cli 和 liepin-cli,两个招聘平台的自动化 CLI,一条命令装完); - 文件夹怎么建、模板长什么样,已经做好了; - skill(可以理解成给 AI 的工作说明书,一个文件夹装一套流程)也是现成的,初始化时自动放进你的工作文件夹。 从下载到开始干活,中间没有任何一步需要用户自己做技术判断。说一句"帮我初始化",剩下的 AI 照着说明书走。 ### 2. "我要一个厉害的人"筛不了任何简历 用人的人说需求,十有八九是这种话:"找个资深的,最好懂 AI。" 这句话没法用来筛简历——几年算资深?懂 AI 是会用工具就行,还是要能干活? 拿模糊的标准去跑自动化,结果就是:AI 筛得飞快,错得也很稳定——自信地放进错的人,自信地毙掉对的人。而且报告写得很漂亮,你看不出来它错了。 **所以:自动化之前,先把标准问清楚。** 工具里有个"梳理岗位"的环节:AI 一次只问一个问题,每个问题都带一个推荐答案,把"要个厉害的"逼成一条条能执行的标准——年龄卡不卡、学历卡到哪、哪项能力缺了就不用聊了(这项我们叫"命脉")、什么样的简历看着像其实不对。 一个岗位问一次,大概半小时。这半小时决定了 AI 之后每天筛人的质量,跳不过去。 ### 3. 日常招聘是重复劳动,但里面混着"点了就收不回"的动作 查未读消息、搜人、看简历、打分——纯重复劳动,AI 干最合适。 但同一条流水线里有两个动作性质完全不同:**打招呼**(打扰的是真人)和点**"不合适"**(拒掉的也是真人)。这类动作我们叫"对外不可逆动作"——点出去就收不回来。让 AI 全自动点,迟早出事故——它替你拒错一个人,你连知道都不会知道。 **所以:能撤销的放开跑,不能撤销的等人拍板。** - 取数、筛选、记录、写报告:AI 全自动; - 打招呼:默认先问你。你说"今天合适的直接打",它今天就放开打,但打了谁一个个报给你,明天授权自动失效; - 点"不合适":**永远不自动点**。AI 觉得谁不行,先记在台账里等你确认; - 碰到验证码、风控提醒、付费弹窗:立刻停手来问你。 ### 4. 数据锁在招聘平台里,换个工具就归零 你在 Boss 上聊过的人,记录在 Boss 的服务器上;你对每个人的判断,散在聊天记录和脑子里。平台改版、换 AI 工具、换电脑,积累就没了。 **所以:所有数据都存在你自己电脑的文件夹里,而且是最普通的文本文件。** 台账是一张 CSV 表格(Excel 能开,记事本也能开),候选人档案是 Markdown 文档(就是纯文本)。从飞书邮箱收到的简历附件也会下载到工作区 `runtime/resumes/`,用邮件/附件 ID 和文件 hash 去重。飞书文档那些只是"给老板看的展示版",从台账生成,删了能再生成。 这样做的好处:数据在你手里,可以备份、可以拷走、可以换任何工具接着用。还有一个隐藏好处——AI 每次新对话都是失忆的,但它每次干活前都会先读你文件夹里的标准和台账,等于把记性存在了文件里。 ## 二、几个关键的技术决策 ### 不绑定任何一家 AI 工具 各家 AI 工具都有自己的"插件"和 skill 发现机制,目录约定互不兼容,还经常变。 相对稳定的通用底座是**工作文件夹里的 AGENTS.md 文件**:支持它的工具会自动读取; 其他能读项目文件的 agent 也能按其中的明确路径打开工作流文档。 所以这套工具的核心不是"一个插件",是"一个自足的工作文件夹":初始化时把所有工作说明书拷进你的文件夹,AGENTS.md 负责指路("处理今天的招聘→去读某某文档")。之后换工具,招聘数据和流程都还在。 为了让常见工具还能自动触发 skill,初始化会从同一份 `skills/` 建立三个项目级入口: `.agents/skills/`(Codex / Agent Skills)、`.claude/skills/`(Claude Code)和 `.qoder/skills/`(Qoder)。这些入口是链接,不复制内容;没有稳定项目级发现目录的工具继续走 `AGENTS.md`,不靠猜测私有目录。 避开的坑:绑死一家工具,用户换工具就全废。 ### 工作流程文档里一个数字都不写 年龄线、学历线、薪资范围,每家公司都不一样。如果通用工具里预置了示例数字,用户就会把别人的标准当成默认值稀里糊涂用下去——这比没有标准更糟。 所以规矩是:**所有具体标准只存在于用户自己的 CONTEXT.md 里**(这个文件就是你的"招聘标准手册",由梳理环节问出来)。它是这套工具的"唯一事实源"(single source of truth——全项目只认这一处,其他任何文档和它冲突,都以它为准)。流程文档只写"去读手册",执行时现读。手册还是空的?流程拒绝开工,先把你引去梳理。 避开的坑:标准写在两个地方,改了一处忘了另一处,AI 不知道听谁的。 ### 邮箱只是简历入口,不是指令入口 飞书邮箱能省掉“手动查邮件、下附件、再把文件丢给 AI”这段重复操作,但邮件主题、正文、发件人名和附件名都来自外部,不能当成 AI 指令。 所以邮箱流程固定是只读的:只查用户指定的时间窗,先按官方发件域缩小范围,再读邮件。它不标已读、不移动或删除、不回复或转发;风险邮件、压缩包、可执行文件和格式不明附件都不自动下载。通过检查的简历才进原有 review 流程。 避开的坑:为了省一次手动下载,却让 AI 读了无关邮件、执行了邮件里的伪指令,或把同名简历相互覆盖。 ### 对内、对外,文件夹层面分开 去哪些公司挖人、什么背景的人要避开、薪资给到多少——这些是你的竞争信息,发错一份麻烦立现。 所以直接在文件夹上分开:对外的 JD 随便发;对内笔记放在单独的 `_internal` 文件夹里,文件第一行就写着"不外发"。日报也有红线:敏感信息不写进去,平台上打码的名字保持打码。 ### 搜索词越用越准 搜索关键词这东西,坐在办公室想是想不准的。只有真实命中的简历会告诉你什么词有效。 所以每天收工前有个固定动作:从今天"初筛通过"的简历里,反过来提取出好用的搜索词,记进一张迭代表;明天搜人之前先读这张表。用得越久表越厚,搜得越准。这是整套流程里唯一会"学习"的环节,成本就是几行表格。 ## 三、防着 AI 自己偷懒 写这些工作说明书时的基本假设是:执行它的 AI 可能偷懒、跳步、凭印象编造。对策不是叮嘱它"请认真",而是全部写死在文档里: - **开工必读三份文件**(标准手册、工作须知、岗位对内笔记),不许凭记忆干活。防它拿自己训练时的"常识"当你的标准。 - **每一步都写清"完成判据"**(completion criterion——什么才算做完的验收标准)。比如寻源这步:"每个岗位,两个平台、每个平台两个入口,都要跑过,漏一个就不算做完";台账这步:"今天接触过的每个人在表里有且只有一行,数量对得上"。防它干一半就宣布完成。 - **一天一个新对话,一个岗位一个新对话**。简历原文很快会把 AI 的上下文(context——一次对话能装下的内容总量,相当于它的脑容量)塞满,塞满之后判断会变钝——变钝就先把台账日报存好,开个新对话接着干。核心一句话:**没写进文件的判断等于丢了**。 - **初始化先看后动**。发现文件夹里已经有工作区,就只补缺的文件,绝不覆盖你的台账和标准手册。防重跑一次初始化,把几个月的积累冲掉。 - **踩过的坑直接写进文档**。比如:两个程序同时操作一个浏览器会卡死、猎聘对聊过的人再打招呼会重复发消息……这些都是实际踩出来的,写死在参考文档里。基础差点的 AI 照着做就行,不需要自己会排查。 - **每个可选功能都有"降级路径"**(就是备胎方案:好的用不了,自动换个差一点但能用的)。没装飞书工具?日报存成本地文档,约面试给手动建会清单,简历改为用户本地提供。扫不了码登录?先把文件夹建好,登录记进待办。简历下载失败?标个"未获取",不许死循环重试。防一个小问题瘫痪整条流程。 - **安全底线焊死**。"绝不自动点不合适"这条在模板里明确标注"不可删"。防将来某天有人图省事把它当废话删掉。 ## 四、方法论从哪来 写这些 skill 文档的手法,大量借鉴了 [mattpocock/skills](https://github.com/mattpocock/skills) 这个仓库(作者是 TypeScript 圈很有名的教学者 Matt Pocock)。他有个说法值得记住:**AI 是个随机系统,skill 文档存在的意义就是从里面拧出确定性——让 AI 每次都走同一个流程**。 从他那里学来的: - **"什么才算做完"要写清楚**(上一节第一条,出处就是他); - **主文档写短,细节放附件**:主说明书只写顺序、判断、安全规则,短到 AI 一定会读完;命令细节和格式沉到参考文档,用到才翻; - **用有分量的词当锚点**(他叫 leading words):像"命脉"、"铁律"、"红线"、"台账"这种词,AI 一看就懂分量,一个词顶三句解释; - **流程画成一条主路加岔路**:"初始化(一次)→ 梳理岗位(每岗一次)→ 每日流水线(天天跑),发现标准不对就带着台账数据回去重新梳理",好过一张平铺的功能列表; - **别把 AI 的对话拖太长**(上一节第三条); - **初始化先看现状、再一个一个问、每个问题带解释**,假设用户不懂术语。 也学了他的"总目录"skill(router skill):他有二十多个 skill,做了个 `/ask-matt` 帮用户记;这里的 `ask-viy` 是同一个思路——用户不用记任何流程名,问它就行。只有三个 skill 的时候没做(一张路由表就够),第四个 skill 进来、加上用户全是新手,才补的。 有几样看了但故意没学: - 他的工具靠 `npx skills add` 一条命令装到全局(装给电脑上所有 AI 工具共用)——我们的核心场景是"文件夹自己带全套",全局安装只当补充办法; - 他那套写代码的流程(issue tracker 任务卡管理、TDD 测试驱动开发)——领域不一样,招聘不需要任务卡系统,台账里的一行就是我们的"任务卡"。 ## 五、想清楚了不做的 - **不做全自动招聘**:约面试有流程帮你建日程拉面试官,但建之前必经你确认;谈薪、发 offer 则完全不碰,逐案等你发话。工具是副驾驶,方向盘在你手里。 - **不预置任何一家公司的标准**:连示例数字都不给(引导语只说"有的公司设线、有的不设")。 - **不碰平台的私有接口**:两个工具操作的是你自己登录的浏览器,用你自己的账号和额度,不搞破解。 - **不做管理系统**:没有数据库、没有网站、没有注册登录。纯文本文件加 AI 就够了——每多一层系统,就多一层要维护的东西,多一个会坏的地方。