Forward Deployed Engineering / 能力栈

FDE 能力栈:从业务现场,到一套在生产里跑的系统

找问题、拆流程、做方案、写系统、推上线、看结果——前向部署的六步闭环,以及这六步我分别在哪里真跑过。

前向部署工程(Forward Deployed Engineering)成为一个正式岗位,是因为 AI 不再比模型分数、开始比能不能落进真实经营。但它要的能力组合并不新:进得去业务现场、能把规则从合同和人的经验里读出来、写得出扛得住生产的软件、并且撑得住上线和采用率。这一页记录的正是这套组合——不是我担任过的头衔,而是我能拿出证据的能力栈。其中两步跑在多方渠道结算的现场,另外四步跑在我自己设计、建设并运营的企业级 ERP 上,运行期还有 Agent 在里面干活。这套方法刻意不绑定行业:它已经在不止一个业务场景里被使用,具体对象出于商业保密不展开。

六步闭环
找问题拆流程做方案写系统推上线看结果
能力闭环找问题 → 拆流程 → 做方案 → 写系统 → 推上线 → 看结果
跑通场景腾讯 ToB 多方渠道结算现场 · DHL 跨国系统上线与流程标准化 · 一套亲手建设并运营的企业级 ERP
运行期 AI录入与单据识别 Agent · Zod Schema 契约 · 服务端引用完整性校验 · 审批引擎与人工确认 · 全量写操作留痕 · 分析层跑在治理后的模型上
工程规模60+ 核心业务对象 · 120+ 数据表 · 200+ 路由处理器 · 多租户隔离与字段级权限
可迁移性方法不绑定单一行业;已在不同业务场景中复用,具体对象出于商业保密不展开
公开边界不公开合作方名、合同、分成比例、订单号与金额

闭环

从走进业务现场,到回到账上验证

01走进业务现场
02从合同里读出规则
03定义对象与护栏
04写到生产可用
05推动上线与采用
06回到账上验证
07沉淀为可复用方法

证据

这六步分别在哪里真跑过

找问题 / 拆流程:在结算现场,四类合作方各带一套合同口径,同一行发货记录落在不同类下意味着不同的应付。真正的工作是先分流再建模——而不是打开一张表就开始搭。

做方案 / 写系统:分成比例、支付通道扣费、退款抵扣这些只存在于合同里的规则,被 codify 成结算 pipeline,按合作方输出可直接付款的账单。同一套直觉后来被放大成 60+ 业务对象的企业级 ERP:多租户隔离、字段级权限,以及一套流程定义存在数据库里、而不是写死在代码里的可配置审批引擎。

推上线:跨国那一段最能说明上线不是一个技术事件——地区流程差异、责任边界、系统配置、流程培训和上线节奏,共同决定周一早上有没有人真的打开这套系统。

看结果:结果回到账上验证,而不是用上线截图——全年拦截 300+ 高风险操作、追回一笔百万级的结算少收、跨境侧把超期账款损失压下去。

运行期 AI:Agent 在运行中的系统里承担录入与单据识别,但它的输出必须先过 Zod 契约与引用存在性校验才允许落库,超过阈值一律进审批引擎,每一次写操作都留痕——这正是一个 Agent 要被信任放进生产所需要的同一套护栏纪律。

能力视角

为什么这个组合难招

01

岗位为什么出现

前向部署这股风,是 AI 从比模型分数转向比落地的结果。稀缺的从来不是会写代码的人,而是愿意走进一团乱麻的经营现场、并且待到东西真的上线的那个人。

02

能力组合

三件事必须长在同一个人身上:读得懂业务与合同、写得出扛得住生产的软件、扛得住上线与采用率。单独看每一件都不稀缺,合起来才是这个岗位难招的原因。

03

我的位置

我不认领头衔——我陈述能力栈并给出证据。我交付的是一段在跑的流程和一个能拿去和账核对的结果,不是 Demo。方法本身不依赖它被指向哪个行业。

脱敏代码

decomposition before code

// The request arrives as one sentence:
//   "let the system read the supplier invoice and fill it in."
// The work before any code is decomposing it until every unknown is
// a rule, an owner, or an explicit fallback.

const scope = {
  trigger: "supplier invoice uploaded",
  output: "draft allocation",                        // proposes; never posts by itself
  guardrails: {
    schema: "InvoiceDraft",                          // output must parse, or it is rejected
    referential: ["supplierId", "poId", "sku"],      // must already exist to be written
    threshold: "variance > TOL -> approval engine",  // TOL withheld per NDA
    fallback: "low confidence -> route to a person, never guess a number",
  },
  audit: ["actor", "source_document", "proposal", "decision"],
  success: ["entry_time", "correction_rate", "manual_hours"],
} as const;

// Only once this is agreed with the people who do the work today
// does anything get built.