跳到主要内容

fde-skills:让 FDE 交付物会记住经验的开源技能包

干了第三个客户,交付的还是同一批文档:风险登记表、集成规格、干系人地图。每份都从空白页开始——尽管前两单已经教会了你其中大部分该写什么。mk668a/fde-skills(MIT 许可)就是针对这个痛点:让交付物 schema 跨客户累积证据,第三次出现自动"铺路"成模板。


一、FDE 的隐性重复劳动​

Forward Deployed Engineer(FDE)的日常工作,一半是写代码,一半是写交付物:业务诊断、风险登记、集成规格、干系人地图、上线计划……

问题在于:这些文档每次都是从零开始。客户的行业不同、系统不同,但文档的"骨架"高度相似——你要判断的维度、要避开的坑、要问的问题,前一单早就教过你一遍。

这个仓库的切入点是:重复不是要避免的坏事,而是要利用的资产。 只要把"经验如何沉淀"做成机制,第 N 个客户就会比第 N-1 个客户更轻松。

二、它是什么​

项目分两半:

  1. 精选工具箱:按 engagement 生命周期(发现→共建→交付→交接)排列的第三方仓库清单,例如 github/spec-kit(模糊需求转可执行规格)、anthropics/skills(官方文档技能)、microsoft/presidio(客户数据 PII 脱敏)、makeplane/plane(自托管项目管理)等。
  2. 四个自有技能:解决清单里没有任何仓库解决的问题——"交付物会记住"。安装只需一条命令,无市场、无 API Key、无托管后端。

四个技能的分工:

技能触发场景做什么
/fde-init"新接一个 Acme 客户"一次性搭好 .fde/ 骨架 + 每个客户一个目录
/fde-draft"起草 Acme 的风险登记表"用当前客户笔记填表,并自动预填前几单沉淀的经验,报告覆盖率
/fde-promote"把这些经验变成可复用的"去标识化、统计出现次数,第 3 次出现时把 schema 本身升级
/fde-recall"过去类似 pilot 我们学到什么?"按出现频次加权,调出匿名化的历史先验

三、核心机制:Rule of Three 被机械化​

Fowler 在《Refactoring》里说"不要从单个例子做泛化,第三次再提取"。在这里,这条建议变成了 shell 脚本里的一个计数器:

出现次数层级/fde-draft 的行为
×1candidate以 [候选 ×1:请确认] 形式提供(只代表一个客户的看法)
×2recurring以 [候选 ×2:请确认] 形式提供
×3paved(铺路)默认预填;如果是新维度,schema 本身新增该槽位并升级版本号

铺路时刻是真实的、git diff 可见的 schema 变更——不是玄学,是版本化的经验:

PAVED: risk-register v1 -> v2: + rollback_plan (3 sightings)
-version: 1
+version: 2
-evolved_slots: []
+evolved_slots:
+ - id: rollback_plan
+ label: Rollback plan
+ prompt: "How do we return to the pre-pilot state if go-live fails?"
+ paved_from: "3 sightings, 2026-07-04"

三个客户跑下来,第三个客户的风险登记表第一天就有 5/6 的槽位是继承来的,不用重敲。

四、两层架构:判断归 LLM,统计归脚本​

这个设计值得所有做"经验复用"的人抄:

  • LLM 层(skills/*):负责读杂乱笔记、填槽、把客户特有信息改写掉、判断什么值得沉淀。
  • 确定性 spine(.fde/bin/*.sh):负责计数、去标识、闸门、铺路、渲染 dashboard。纯 shell,无 LLM 调用,可复现、可审计。

覆盖率的数字、sighting 计数器、去标识闸门、dashboard 全是普通 shell;判断的活儿留给 Claude Code。运行时没有任何 LLM 调用,也没有托管后端。

五、去标识化:闸门,不是承诺​

客户数据不上 GitHub——这是硬纪律:

  • 强制层(确定性):fde-validate.sh 检查任何客户 slug、客户名 token 是否泄漏到共享层;fde-promote.sh 在临时文件里构建合并语料,结果若泄漏标识符则拒绝写入。金额和百分比一律剥离。
  • 判断层(LLM + 你):人名、内部系统名、一读就知道是谁的措辞,由 /fde-promote 改写掉。

/fde-init 还会把 engagements/ 和 dashboard 加进 .gitignore。仓库的立场很明确:push 到远程等于不可逆(clone、fork、缓存、代码搜索索引都会留痕),私有仓库也不是安全港——只有匿名化的语料和 schema 可以提交。

六、对我们的启示​

  1. 交付物 = 版本化的 schema,不是一次性文档:这一条直接适用于 FDE 客户的诊断-交付流程。每次客户访谈、诊断、交付都应该喂给一个可进化的模板体系。
  2. 经验沉淀要有计数器:"三次才固化"是防止过度泛化的好规则,也给了团队一个可讨论的机制,而不是靠某个人记得。
  3. 判断与统计分层:AI 负责"判断什么值得留",脚本负责"保证不留错"——审计与效率不冲突。
  4. 隐私是机制不是承诺:把"客户名字不能出现在远程"做成脚本检查,比写进团队规范可靠得多。这与我们案例库"来源方披露不代表独立审计"的严谨是一路的。

项目地址:github.com/mk668a/fde-skills(MIT,含 15 秒可跑的 demo:examples/demo.sh,无需 LLM,所有数字由 spine 脚本打印)。