Latent Space · FDE 现场手记 · 2026-09

FDE 在客户楼里做的事:
收集名词和动词,再把解法带回家

前 Palantir Project Frontline 负责人 Vinoo Ganesh 用三个亲历的故事讲这份工作:一个在银行里一出生就死掉的存储系统,一个一夜做出的 Parquet viewer,和一段本该活一周、却跑了一年的脚本。

一段临时脚本
活了 1 年
vinoo.groovy 一下午写成,本该活一周;一年后跑在近十万人的客户环境里,名字焊在上面
一个 viewer
17 小时 → 2 小时
近一年的 CSV 到 Parquet 拉锯,一名 FDE 看了一次现场,当晚做出 viewer,两天后放行
01 · 起点

同一个词,不是同一份工作

本站六月发过一篇 FDE 文章,题为《同一份活,六十年换了八身衣服》,从产业史讲这份“最后一公里”集成劳动怎样在厂商、渠道、产品和买方 IT 之间搬家。那篇是从外面看。本篇换到里面,看一个站在客户楼里的人怎么干这份活。

FDE,全称 Forward Deployed Engineer,即前沿部署工程师,是厂商派到客户现场、坐进客户业务里解决问题的工程师。Vinoo Ganesh 曾在 Palantir 负责计算平台方向,并创建了把软件工程师训练成 FDE 的轮岗项目 Project Frontline,后来在对冲基金 Citadel 负责业务工程,现在是 Kepler 的 CEO 兼联合创始人。十余年里,他在三家机构三次参与搭建 FDE 职能,每次搭的都只是其中一部分。这篇文章讲的是他在这个过程中看到的成与败。

在风投 a16z 办的 FDE 奖学金项目(Forward Deployed Engineer Fellowship)的一次晚餐上,来自 Snowflake、Anthropic 和一批创业公司的 FDE 坐在同一桌,却发现大家用同一个词描述的工作几乎没有共同点。有人说,FDE 是加入“第二通电话”的售前工程师;有人说,是能写 Python、背销售配额的销售;还有人说,是带着笔记本和工作说明书进场,替客户做产品本身做不到的事的顾问。几天后,群里又有人问:FDE 团队该怎样跟已经驻在客户现场的咨询公司分工?

Ganesh 不想垄断这个词的定义,词义本来就在变化。但在他看来,这些工作不仅内容不同,汇报线和激励也完全不同。相关 YouTube 视频下,一半评论都在问:“这不就是重新发明咨询吗?”

他在数据平台公司 Palantir 从产品开发转成 FDE,后来带领 Project Frontline,约 250 人经过这个项目,其中不少人现在在 OpenAI、Anthropic、xAI 和 Anduril 带 FDE 团队。之后他去了 Citadel,再创办 Kepler。要解释他心中的 FDE,故事得从 Project Frontline 之前的一次错误讲起。

Vinoo Ganesh 站在阿富汗 Bagram 空军基地一面画着「Welcome to Fabulous Bagram」的混凝土墙前
第三方作者在阿富汗 Bagram 空军基地驻场时的照片,原文图注「Me forward deployed in Bagram Airfield, Afghanistan.」 · 来源 Latent Space 原文
02 · 翻车

Phoenix 在银行里一出生就死了

Palantir 早期分成产品开发(Product Development,PD)和业务开发(Business Development,BD)两个职能。在绝大多数情况下,PD 建平台,不直接接触客户;BD 面向客户,不直接建设通用的核心平台。BD 里既有技术型的 FDE,也有嵌入式分析师(Embedded Analyst)、部署策略师(Deployment Strategist)这类非工程岗位。PD 了解客户往往靠二手渠道:找 BD 聊,或者把现场做成、用得好的功能吸收进核心产品。Ganesh 说,这并不是一套流程,全靠人际关系,比如哪个 FDE 恰好认识哪个 PD 工程师。于是现场的一条好洞察能不能进平台,取决于当时谁在场。

2013 年,Ganesh 参与开发一个叫 Phoenix 的交易数据存储系统,底层跑在分布式数据库 Cassandra 上。它的设计干净,目标用例也很清楚,但这些用例都来自转述。商业客户关心数据要留多久,Phoenix 因此把数据按十分钟一个桶切开存放,只保留一段滚动窗口。在他们能控制的所有环境里,它都完全符合规格。

问题出现在一家银行。真实金融数据里有测试数据没有的空洞,其中一个空时间戳被系统读成了 1970 年 1 月 1 日,也就是计算机计时的零点 epoch。保留逻辑于是开始为从 1970 年 1 月 1 日到当天的每个十分钟窗口申请一个桶。

结果是约 230 万个 keyspace,相当于 230 万个独立的库。Cassandra 每个文件句柄大约需要 5 MB,服务器内存耗尽,也就是 OOM。重启需要 14 TB 内存。Phoenix 在这家银行里等于一出生就死了。

一个空时间戳
1970-01-01
掉到 epoch,被当成 1970 年的数据
十分钟一个 bucket
约 230 万
从 1970 年到当天,每个窗口一个 keyspace
Cassandra 每个文件句柄
约 5 MB
服务器 OOM,内存耗尽
重启需要
14 TB 内存
Phoenix 在这家银行一出生就死了

Ganesh 复盘时说,团队有规格说明,理解用例,也读过许多同类机构保存数据的方式,用户调研并不缺。缺的是一个站在客户楼里、看系统如何跑真实生产数据的人。没有人负责设计与日常现实之间的那条缝。转述需求的人没有恶意,只是对他们而言,脏数据早已是无需特别说明的常态。

Phoenix 开始在 Palantir 的商业客户中陆续上线时,Ganesh 飞到现场修自己交付的东西。用他自己的话说,把这叫作“成为 FDE”,已经是往好里说了。那是他第一次直接面对真实用户,而用户恰好也是 Palantir 的 FDE,能够用工程师听得懂的语言告诉他系统坏在哪里。

故事没有停在“多听用户”。Phoenix 后来成了平台,FDE 在上面搭出网络安全、KYC、AML 等一长串最初无人规划的用例。KYC 是客户身份识别,AML 是反洗钱。到最后,PD 不得不考虑怎样扩展 Phoenix 平台去支撑所有这些用例。Ganesh 由此形成的判断是:FDE 解决客户问题,是为了换取“下一步该建什么”的洞察;这个角色是产品团队的延伸。

03 · 背景

“前沿部署”热潮背后的最后一公里

Ganesh 认为,今天多数 FDE 已经没有这种心态。这个词逐渐变成“跟客户有点关系的人”,招聘市场上甚至出现了“前沿部署股票研究员”和“前沿部署售前工程师”。

但在他看来,词语被挪用,背后的直觉并没有错。好做的事已经做完。那些可以做成一个精心设计的产品、原样卖给一千家公司的问题,大体已经解决。剩下的工作藏在机构内部,是混乱、没有文档、从外面几乎无法推断的流程。一通需求调研电话,问不出一家公司究竟怎样关账。可复制的销售动作,对卖 token、字节或实物的公司来说仍然是对的。对其他所有人,价值已经转移到定制工作、最后一公里,以及没有任何产品能预料到的那 20% 的工作流。这 20% 的工作流决定另 80% 用不用得上。

在 Ganesh 看来,解决最后一公里只是 FDE 的一半工作。在一家客户那里解决掉的问题,同时也是一个信号,告诉你平台哪一部分应该变得通用。只解决最后一公里、从不把这个信号带回产品团队的 FDE 团队,是换了个更好头衔的咨询团队。

04 · 方法

名词之下藏着一家公司的操作方式

Ganesh 把 FDE 的工作概括成收集名词和动词。在一家公司待一周,通常就会发现同一个概念至少有四个名字:销售说 customer,运营说 client,财务记录 billing entity,工程代码里写 org_id。每个团队的缝隙中都藏着一次翻译,其中一个定义变化,连接就会断掉。

各团队怎么叫 实际指的是什么 CRM fund 法务 vehicle 投资台 strategy 销售 customer 运营 client 财务 billing entity 工程 org_id 投资台 position 运营 book line 风控 exposure Fund fund_id 3 个名字 Account account_id 4 个名字 Position position_id 3 个名字 拥有持有 这些记录,以及它们之间的边,就是这家公司的操作模型。几乎没人把它写下来。
图 1 · 同一个东西在各团队里的不同叫法,以及它们实际指向的实体。按作者原图重画;原图注「The names are the surface and underneath them is the operating model.」

名词,是业务里的人当作真实存在的东西:一个头寸、一笔交易、一个对手方。每个团队通常围绕几个这样的对象运转,但没有一个是教科书式定义。两家公司可能在幻灯片上用相同方式描述 position,代码里的实现却完全不同。Ganesh 不把这当成缺陷:正是这些差异让一家公司成为这家公司。如果每家公司的名词都一模一样,那就只需要一家公司。

一笔交易怎样入账,关账前必须满足什么条件,晚上十一点由谁批准例外,那个人休假时又会发生什么。在 Ganesh 的框架里,这些就是动词,描述这些业务对象怎样被处理、按什么规则流转。

这些知识几乎没有写下来。它们在日常运转里活着,是组织文化的一部分。Ganesh 说,它们住在“六个人的脑子里”,这六个人待得够久,久到已经注意不到它们;也住在某人四年前搭的一张表格里,整支团队都在悄悄依赖它。这正是它们值钱的原因,也是它们问不出来的原因。持有它们的人通常甚至不知道自己拥有它们。

05 · 现场

一台 Windows 笔记本拦住了 Parquet

Ganesh 在此前一家创业公司工作时,团队曾用近一年推动一个客户从能直接双击打开的纯文本 CSV,迁到二进制列式存储的 Parquet。一位数据质量工程师每次都拦下迁移,理由不断变化,大意总是“Parquet 更差”“不行”或者“我看不懂”。团队拿出三套论证,分别说明它能节省存储、节省算力、优化管道,却没有一套打动她。Ganesh 事后的总结是,这些论证都没有碰到问题本身。

后来,一名 FDE 被派去观察这位数据质量工程师怎样工作。这名 FDE 看到,她从云对象存储 S3 下载 CSV 文件,放到 Windows 笔记本上,双击打开,再用眼睛逐行扫过去。这就是她的数据质量检查。Parquet 当时没有原生的查看器。迁移到 Parquet,等于拿走她唯一的质检工具,却没有提供替代品。在 Ganesh 看来,她只是在保护唯一一件让自己能完成工作的工具,谈不上难缠。

团队当晚做出一个 Parquet 查看器,两天后她批准迁移。管道执行时间从约 17 小时降到 2 小时。Ganesh 说,这些话她在访谈里永远不会说,因为在她看来,自己的工作方式显而易见,根本不值得特别说明。FDE 通过观察,摸清了她实际怎样工作,以及其中的名词和动词。最终形成的方案不只解决了一个人的问题,还能交付给一批面对相同障碍的客户。

近 1 年
CSV 到 Parquet 的拉锯
三套论证(存储、算力、管道)都没打动那位数据质量工程师
当晚
做出 Parquet viewer
一名 FDE 看了她怎么工作:S3 下 CSV,Windows 笔记本双击打开,肉眼扫行
17 → 2 小时
管道执行时间
两天后她批准迁移
06 · 分叉

vinoo.groovy 为什么活了一年

名词和动词告诉 FDE 问题是什么,却不直接告诉他们该怎样处理。Ganesh 观察到,多数 FDE 团队会在这里悄悄走偏。解决眼前的问题令人满足,结果马上可见,当周就会有人来表示感谢。

让客户满意是一份真实而正当的工作。他把这份工作归给解决方案架构师,他们理应按客户满意度接受考核。但 FDE 待在现场,是为了把现场学到的东西变成每个未来客户都能得到的产品能力。一个项目如果以“一个客户很高兴、上游什么都没变”结束,就在这个角色唯一该做的事上失败了。团队学到了东西,却只用在了这一个客户身上。

vinoo.groovy 就是这样留下来的。一个客户需要数据保留任务,Ganesh 用一下午拼出一段 groovy 脚本,文件名叫 vinoo.groovy,只想让它临时撑过那一周。一年后,这段脚本仍跑在一个近十万人的客户环境里,名字牢牢焊在上面,团队也开始叫他 vinoo.groovy。问题已经修好,解法却没有进入产品。团队随后花了好几年维护一个本应迅速消失的临时方案。

Ganesh 的说法很直接:每个交付出去的临时方案,后续都得由自己负责。哪些解法应纳入平台,哪些应在完成任务后及时弃用,需要有明确取舍。

按他的分法,如果底下没有平台,FDE 到一家客户那里学习它的模型,交付一个与它严丝合缝的东西,项目结束后把所得全部丢掉,下一个客户仍从零开始。这是咨询:报酬好,人也优秀,但不复利。底下有平台时,每摸清一家公司,下一次部署都会更快,产品也会更准,因为工程师带回来的知识有地方留下。

这是卖小时和造资产的区别。Ganesh 对这轮 FDE 淘金热的判断是,多数公司在卖小时,向董事会讲的却是造资产。他给 FDE 的结论只有一句:建平台。

咨询 每个项目,都从上一次开始的地方重新开始。 三个客户,同一层楼,每次如此。 前沿部署 每个项目,都从上一次结束的地方开始。 第一次部署 部署 学习 送回家 解决 下一次部署
图 2 · 咨询与前沿部署的两条轨迹。左:三个客户,每次从同一层起步;右:部署、学习、解决、送回家,下一次部署从更高处开始。按作者原图重画。
每个交付出去的临时方案,后续都得由自己负责。哪些解法应纳入平台,哪些应在完成任务后及时弃用,需要有明确取舍。
Vinoo Ganesh · 原句 Every shortcut you ship becomes something you own.
07 · 结构

汇报线决定现场知识回到哪里

Ganesh 在 Kepler 从第一天起就把 FDE 放在产品下面,而不是销售下面。按他的说法,另一种结局是到第十四个月才发现工程师一直在为错误的目标优化。Kepler 的客户包括对冲基金、投行和私募基金,它们共同的硬要求是数字必须正确,而且能够说明为什么正确。

在 Ganesh 看来,各家金融机构底层跑的都是同一套对象和关系模型的某个版本,他称之为 ontology(本体),只是各家描述它的方式不同。同一家银行里,信用交易台和股票交易台对 position 的理解可能不同;两家基金算收益时用的是同一个词,分母却可能不一样。许多差异来自某个人多年前(他举的例子是 2011 年)做出的合理决定。当年的决定一直沿用下来,却没有留下可查的记录。schema 只能说明存了什么,不能说明它意味着什么。一个听起来没问题的系统算出错误数字,错就出在这两者之间的距离里。三家客户要求同一个功能,很容易发现,价值却相对不大。Kepler 在意的信号,是三家客户都需要平台无法表达的东西。这种信号通常来得很不起眼:某个工程师第三次绕过同一个限制。

平台里每多一项能力,下一次部署的成本就更低,尝试的成本低,小公司才学得快。没有这层积累,每个客户都是一次昂贵的赌注,赌错了要搭上一个客户和一个季度才知道。Ganesh 的选择是“一个月错四次”,而且每次都比上一次便宜。

所以,汇报线不是行政细节。指向销售,激励就是拿下眼前这单。这是真工作,却不是 Ganesh 所说的 FDE 工作。指向产品,每次部署都必须留下下一次部署还能继续使用的东西。

护城河在哪里,他先排除了三个候选。模型按月贬值,而且是租来的。人才被每家 AI 实验室争抢,抢的始终是那几百个人,价钱大家都已经知道了。任何一家客户的组织地图也不是,摸一遍几乎不花钱,一下午就能画出一家公司怎样运转的草稿。资产是知道这份草稿哪里错了,而这份认知只能靠一次次被纠正得来。

在 Ganesh 看来,Kepler 的护城河是这样一份认知:某个垂直行业里各家机构实际怎样运作,这份认知是积累起来的、跟得上现状的、经过验证的,并且装在一个能让它保持更新、能证明它正确的平台里。

积累、更新、验证这三个词,在他的解释里各有分量。一次部署只是轶事,“第十次是模式”。机构的运营方式不断漂移,过期的模型垫在 AI 系统底下会悄无声息地出错,摆在分析师面前时从来不会这样。合理的编码与正确的编码,在出事之前看起来一模一样。

Ganesh 认为,竞争者可以雇走工程师、照搬界面、读完这篇文章,却无法跳过那个序列:在客户内部犯错,被纠正,把纠正过的认识写回平台,到下一家时已经知道哪些问题是要害。

三次参与搭建这个职能之后,Ganesh 记住的是那些回来改变了产品的人,而不是给客户交付最多的工程师。雇用 FDE,买到的只有一样东西:判断哪些问题值得解决的权利。那是入场费,不是奖品。

来源说明

单一来源,第一人称回忆

第三方The Rise of the Forward Deployed Engineer — and How To Do the Job Right

Latent Space · 2026-09-12 · 作者 Vinoo Ganesh(Kepler CEO 兼联合创始人,前 Palantir compute 负责人、Project Frontline 创建者,前 Citadel business engineering 负责人)。全文数字(约 250 人、约 230 万 keyspace、5 MB、14 TB、17 小时到 2 小时、近十万人)均为作者自述,本篇原样保留,未做独立核实。作者所在公司卖的正是他在文末主张的那一层,汇报线与护城河一节全部按作者观点归因,Kepler 的产品机制不进正文。原文只说 Project Frontline 的校友「现在在 OpenAI、Anthropic、xAI 和 Anduril 带 FDE 团队」,本篇不引申为这些公司在复制 Palantir 打法。两张概念图按原图重画为站点 SVG,照片为作者原图。