接到客户现场的电话时我正盯着Codex CLI的报错日志发愁。作为一个常年跑企业AI项目交付的FDEForward Deployed Engineer这种技术很好、交付很难的撕裂感我太熟了Codex这类编码Agent写代码确实快但放到真实客户环境里它只是整条交付链路的一环前面连着混乱的需求后面拖着没人维护的知识库。这也是我做FDE实训工作坊的原因——把Codex、WorkBuddy、Harness、RAG、Skills、MCP这六件事当成一套组合拳来练而不是孤立地学某个工具。这篇内容就是工作坊实战交付部分的完整复盘适合正在做企业AI落地、或者准备从独立开发转向交付型工程师的读者。1. FDE实战交付的真实困境编码只是最后一公里1.1 企业项目和个人项目的边界差异先说一个很反直觉的观察企业AI项目的难点从来不在AI会不会写代码而在AI能不能在客户的环境里稳定地产出可用结果。个人项目里你是需求方、开发方、验收方需求全在脑子里代码改错了马上就能发现企业项目完全不是这样——需求分散在业务部门、IT部门、外部顾问和一堆历史文档里每个人的口径还不一致。客户说帮我做一个合同审核助手你追问合同模板在哪、审核规则谁定、不合规怎么处理得到的答案往往是你先看看我们之前的项目资料。这种信息割裂让大多数AI工具当场失效。另一个差距是验收标准和责任边界。个人项目跑通了就算成功企业项目还要求可维护、可审计、可交接。客户会问AI改过的代码逻辑是什么如果出错了怎么回退这个答案的依据是哪份文档这些问题在实训工作坊里被反复抛出来最后得出的结论是一致的编码只是交付的最后一公里前面还有需求澄清、知识导入、过程管理、测试验证好几个环节任何一个环节脱节编码Agent再强也白搭。1.2 六层工具链分别补上哪个缺口这也是为什么FDE实训不教单个工具而是教一套组合拳。Codex、WorkBuddy、Harness、RAG、Skills、MCP这六个东西在交付链路里各管一段互相之间有清晰的接口。我在工作坊第一天会画一张分工表让学员先记住谁解决什么问题工具/机制在交付链路中的角色补上的主要缺口Codex编码执行Agent把任务变成代码和补丁写代码慢、改代码不彻底HarnessAgent编排与运行控制含插件、检查点、回退Agent行为不可控、操作不可审计WorkBuddy交付工作台聚合任务、上下文、工程配置过程协同断裂、上下文散落RAG企业私域知识检索与问答底座模型不懂企业内部文档和业务规则Skills可复用技能包指令脚本资源一体项目经验无法沉淀和复用MCP统一工具接入协议AI连不上浏览器、内部系统和专业工具这个表格是理解整套方法论的钥匙。很多团队只上了Codex就冲到客户现场结果Agent一头雾水没有知识库给它喂上下文没有MCP接内部系统没有WorkBuddy管理任务没有Skills承载团队规范最后生成一堆看起来能用、实际上不符合客户流程的代码。工具链不是炫技是给每个环节都留好后路。2. 执行、编排、协同Codex、Harness与WorkBuddy的分工与配置2.1 Codex把自然语言任务转成可运行的代码Codex CLI的核心价值是它把编码从补全式变成了任务式。你给它一个目标它自己去读仓库、定位相关文件、修改代码、执行命令然后向你汇报结果。这种整包交付的模式在企业项目里非常契合因为FDE永远缺人手。但实训中我发现很多人忽略了一个关键点Codex不代表模型绑定它完全可以接企业内部或国内大模型的OpenAI兼容端点。Codex的配置文件通常是~/.codex/config.toml注册一个兼容provider的写法是这样的model deepseek-chat model_provider deepseek [model_providers.deepseek] name DeepSeek base_url https://api.deepseek.com/v1 env_key DEEPSEEK_API_KEY配置完成后Codex的任务执行逻辑不变底层大脑可以换成不同模型。这对企业落地很重要模型是外购的、会更新和替换但工作流必须稳定。实训中我会让学员做两次配置练习一次用默认模型跑通全流程一次切换到兼容端点跑同样的任务目的是让大家习惯模型可替换、流程不重建的架构思想。还有一个实操细节是模式选择。Codex有略读、思考等不同上下文策略小任务不要开大上下文浪费token大任务如果只在局部文件上略读又会丢关键信息。我在客户现场的习惯是涉及跨模块改动时先全库扫一遍结构再用include/exclude限定改动范围每一步都让Codex给出diff摘要。2.2 Harness给Agent装上刹车和仪表盘Harness这个词本义是马的缰绳用在Agent体系里非常贴切裸奔的Agent拿到任务可能一顿乱跑Harness的价值在于给它套上可控的执行框架。DeepSeek Harness这类工具在实训中被大量使用核心能力有三个任务状态机、插件化行为扩展、操作日志与回退点。任务状态机解决的是Agent现在该干什么、干完了没有的问题。一个复杂交付被拆成多个子任务Harness按依赖顺序调度避免Agent东一榔头西一棒子。插件生态是它最有意思的部分圈子里已经有不少实用插件提示词优化插件会在任务发给模型之前自动重构指令把模糊需求变成结构化prompt代码回退插件会在每次变更前自动存档失败时可以退到上一个验证点还有用于协议自检的插件后面我会细说。对企业客户来说Harness带来的最大价值不是效率而是可审计。Agent每一步操作都被记录成日志客户问你AI到底改了什么你可以把执行轨迹摊开给他看。我在实训里反复强调一句话企业环境不需要一个全能的Agent需要一个行为可控、出错可退、过程可审计的Agent。这也是Harness和裸用Codex最大的区别。2.3 WorkBuddy交付工作台如何把上下文聚合起来WorkBuddy这类交付工作台解决的是AI工具的上下文散落问题。实训中一个常见场景是学员手上有Codex配置、RAG知识库地址、MCP服务清单、Prompt模板、API Key这些东西散在五个地方换个环境就全乱了。WorkBuddy把项目作为一个工作区统一管理把需求任务、代码库关联、知识库连接信息、模型配置、验收标准都收拢到一个界面。实训里用WorkBuddy做三件事第一任务和需求管理把客户需求拆成任务卡片每张卡片关联代码库、相关文档和验收标准第二项目上下文聚合每个项目一个工作区团队成员接手时不用到处问人第三工程生命周期管理从导入已有工程到迭代发布。有意思的是学员问得最多的往往不是它的AI功能而是缓存目录怎么更改和项目怎么搬迁这类工程化问题——这恰恰说明企业环境里工具能不能被稳定管理比功能多不多更重要。2.4 一次任务在三者之间的流转套用工作坊里的一个案例来说明协作方式。假设客户要求优化订单查询接口的响应时间执行路径是这样的先在WorkBuddy里创建任务卡片把客户反馈、接口文档、历史性能数据都附上去Harness加载团队维护的编码规范Skill作为编排规则Codex接到任务后先读目标模块代码定位瓶颈修改实现并补充测试Harness在任务执行过程中记录日志、设置检查点验证通过后再把PR链接回传WorkBuddy由验收人在卡片上填结论。这套流程不需要任何一个人去盯着Agent写代码人的精力放在任务拆解和结果验收上。很多学员第一次跑完这个流程时很感慨原来AI项目交付的确定性不是靠某个超级工具而是靠流程把每个环节的责任边界划清楚。3. RAG不是银弹向量知识库、KG知识库与结构化知识库怎么选3.1 RAG瓶颈看起来能用一上生产就露馅RAG检索增强生成的基本思路是把企业文档切块、向量化查询时先检索最相关的文本块再连同问题一起丢给大模型生成答案。思路很顺但实训中几乎每个项目都会在生产环境碰到瓶颈集中在四个地方。第一是召回不准。embedding模型对专业术语、表格、代码的理解通常偏弱该召回的内容排不到前面。第二是上下文噪声TopK结果里混入不相关文本大模型被误导后给出错误答案。第三是不可解释你不知道答案来自哪一段客户要求追根溯源时非常尴尬。第四是更新滞后文档更新了索引没同步旧答案反复出现客户会直接质疑系统可靠性。举个真实案例客户有个设备运维知识库提问变频器报F0021故障怎么处理向量检索召回了一堆F0021相关维修工单但正确排查流程在操作规程某章附注里召回到第9位。大模型看不到关键段落就根据工单内容编了一个处理步骤。这种看起来能用、一上生产就露馅的问题是RAG项目最常见的翻车方式。3.2 三类知识库的对比与选型判断实训中我会把知识库方案拆成三条路线而不是只讲向量RAG类型底层结构适合场景主要弱点典型工具向量RAG文本向量非结构化语义搜索、FAQ问答精确性差、不可解释Chroma、FAISS、MilvusKG知识库实体—关系图多跳关系查询、审计追溯构建成本高、三元组抽取难Neo4j、Ontology/RDF结构化知识库数据库表/API精确事实、规则引擎、报表模式僵化、语义理解弱SQL、业务系统API选型判断三板斧很直接如果问题是怎么处理、怎么办优先向量RAG如果问题是谁和谁什么关系、A影响哪些B得用KG如果问题是具体值是多少、哪个设备在哪个时间告警必须落到结构化库配合Text-to-SQL来做。实际项目经常是混用的。比如一个设备全生命周期问答系统先用向量RAG把非结构化维修手册召回出来再用KG做设备、故障码、备件之间的关系校验最终从结构化数据库里取精确参数。热词里出现ontology rag本质上就是用本体给知识库加一层规则骨架约束检索边界。这个方向适合知识边界很硬的企业比如制药、航空、电力不能容忍模型自由发挥。3.3 在Mac上快速搭一个最小RAG知识库实训里有一个小时的手把手环节就是在Mac本地搭一个最小RAG系统目标不是生产级而是让学员把原理摸透。步骤很短但每一步背后都有原因。第一步装依赖pip install chromadb sentence-transformersembedding选BAAI/bge-small-zh-v1.5本地运行、对中文友好不需要额外起服务。第二步建索引from sentence_transformers import SentenceTransformer import chromadb model SentenceTransformer(BAAI/bge-small-zh-v1.5) client chromadb.PersistentClient(path./rag_db) collection client.get_or_create_collection(enterprise_docs) docs [...] # 切好块的文本每块200-500字 embeddings model.encode(docs).tolist() ids [fdoc_{i} for i in range(len(docs))] collection.add(idsids, embeddingsembeddings, documentsdocs)第三步查一下query 变频器F0021故障排查流程 q_emb model.encode([query]).tolist() results collection.query(query_embeddingsq_emb, n_results5) for i, (doc, dist) in enumerate(zip(results[documents][0], results[distances][0])): print(f{i1}: {doc} (距离 {dist:.3f}))光跑通还不够我要求学员做一件事拿项目里的真实文档试检索再看TopK的结果到底准不准。大多数人在这一步就会意识到RAG工程的问题往往不在代码而在块切多大用什么embedding需不需要rerank。这些细节在Mac本地就能验证不用先上GPU。4. Skills机制把项目经验打包成可复用的能力资产4.1 Skills和Prompt、Plugin到底有什么区别很多学员一开始分不清Skills、Prompt和Plugin我在实训里用一个比喻来解释Prompt是一张纸条写完用完就扔适合临时任务Plugin是一把螺丝刀给Agent扩展外部工具能力Skill则是一整套活路包——当你遇到某类任务时Agent自动带上图纸、工具、SOP和验收清单按固定套路把活干完。举个例子。临时让AI审一下这份合同这是Prompt。给AI装一个能解析PDF的插件这是Plugin。而合同审核Skill包含合同条款知识库的检索入口、审核清单、风险标记规则、输出报告模板、逐项复核脚本。Agent识别到任务属于合同审核时会整套加载这些内容而不是靠临场发挥。这就是企业最需要的东西把资深经验固化下来让每个项目都按高标准执行。4.2 设计一个企业级Skill的完整结构实训中的一个作业是让学员从零设计一个Skill我推荐的目录结构是这样的skills/contract-review/ SKILL.md # 触发条件、核心流程、注意事项 scripts/ # 辅助脚本 redact.py # 敏感信息脱敏脚本 resources/ # 模板、样例、checklist checklist.md # 逐条审核清单 report_template.mdSKILL.md里写清楚元信息和流程--- name: contract-review description: 合同审核助手当任务涉及合同条款分析时触发 --- 1. 先通过RAG检索企业合同条款知识库 2. 按checklist逐条比对风险点 3. 输出风险标记与修改建议 4. 用scripts/redact.py对敏感信息脱敏 5. 按report_template生成报告这个看似简单的结构藏着两个关键设计原则第一Skill必须包含验证或校验环节不能只给指令要能检查结果对不对第二Skill的输入输出要尽量标准化这样才能在不同项目间迁移。学员交上来的Skill我都会让他们用真实任务跑一遍看Agent是否严格按流程执行有没有跳步。4.3 让Codex和Harness真正用上Skills有了Skill还得让Agent会用。Codex支持从本地skills目录读取技能包把写好的Skill放到~/.codex/skills/下任务描述命中Skill的触发条件时Codex会自动加载。Harness这边更灵活Skills可以作为插件挂载再配置触发规则。实训里我要求每个学员在项目结束时做一次交付复盘把这次踩过的坑和形成的好做法沉淀成一个Skill。有人做出了数据库索引优化Skill有人做了遗留系统接口兼容性检查Skill这些资产会在后续项目里反复产生价值。这也是为什么我说实训和普通培训有本质区别普通培训留下的是笔记实训留下的是可以直接复用、不断迭代的能力资产。5. MCP统一AI连接外部世界的接口标准5.1 MCP的定位为什么各家都在往这个协议上靠MCP全称Model Context Protocol模型上下文协议。它的作用一句话就能说清为大模型如何连接外部工具和数据源定了一套统一接口。我用USB-C来类比——以前每个外设一个接口手机、鼠标、键盘各用各的现在一个USB-C口所有设备插上就能用。MCP就是AI界的USB-C后面的逻辑是MCP Server把某个系统浏览器、Wiki、工单系统、数据库的能力封装成标准接口Codex、Claude Desktop、Harness这类MCP客户端统一调用不需要为每个AI工具单独开发插件。这个标准的出现对企业交付的影响是结构性的。以前AI要接企业内网系统得给每个平台写定制集成现在只要系统提供MCP Server所有支持MCP的客户端都能直接调用。交付边界一下子变大了。5.2 三类高价值MCP server浏览器、内部系统、专业工具实训中我按价值高低给学员列了三类MCP server建议他们优先掌握。第一类是Playwright MCP浏览器自动化。Agent可以自己打开网页、点击按钮、填写表单、检查页面状态这解决了一个大问题AI改完前端代码后谁能快速验证页面真的能用让Agent自己用浏览器跑一遍效率比人工点检高太多。热词里出现playwright mcp自动化0到1说明越来越多团队在往这个方向走。第二类是企业内部系统MCP把Wiki、工单系统、监控平台、数据库包成标准接口。Agent可以查知识、建工单、看指标真正融入客户的日常工作流而不是孤立地生成一段代码。第三类是专业工具MCP这个最让我兴奋。IDA MCP逆向分析、Unreal 5.8 MCP游戏引擎操作、Altium Designer AI接口MCPPCB设计说明MCP已经跨出了互联网行业开始向安全、游戏、硬件设计领域蔓延。做交付的时候如果客户业务域正好有对应的MCP server那就是最短路径不用从零造轮子。5.3 在Harness和Codex里配置MCP的实操示例配置MCP在实训中属于基础技能但很多人卡在第一步。Codex CLI里添加一个MCP server是这样做的codex mcp add playwright -- npx playwright/mcplatestHarness里配置MCP server的结构通常是JSON{ mcpServers: { enterprise-doc: { command: npx, args: [-y, enterprise-doc-mcp], env: { DOC_API_TOKEN: ... } } } }配置本身不难真正需要反复强调的是安全MCP server必须做鉴权尤其是企业内部server不能裸奔在网络上权限遵循最小化原则只暴露必要接口防止Agent拿到超出任务范围的内部能力。6. 端到端流水线从客户需求到验收交付的四个阶段6.1 需求消化阶段让RAG先读完全部历史资料实训的模拟项目从一开始就模拟真实状态客户给一堆历史材料——旧代码、Wiki页面、会议纪要、历史工单要求交一个合同审核智能助手。按照老办法团队会先开会、写方案方案往往建立在猜测上。现在我们的做法是先把所有历史资料索引进RAG知识库然后让Agent基于索引做一次需求差距分析。具体动作是让Agent逐条读取客户提的需求对照RAG能够检索到的历史文档输出一份差距清单哪些需求点已经有明确答案哪些是空白哪些说法互相矛盾。这份差距清单本身就是交付物它的价值甚至超过Demo——因为它让客户看到你真的读懂了我们现在的状况。实训里这份清单要经过客户角色扮演者的确认才能进入下一阶段。这一步的核心思路是不要急着写代码先让AI把已知世界和未知世界的边界画出来。6.2 任务拆解与开发阶段三工具协作的节奏差距清单确认后把它转成WorkBuddy的任务卡片。每张卡片写清楚四件事背景、涉及代码库、验收标准、相关知识点条目标识。最后一条容易被忽视但非常关键——它告诉Agent去RAG库里检索哪些知识避免模型凭空发挥。开发阶段由Harness按依赖关系调度后端任务先做前端任务等API契约确定后再做。Codex负责具体编码Harness在每次任务提交前强制跑lint和测试。实训里我们定了一条硬规矩每天必须出一个可演示增量每周五下午统一演示。这个节奏逼着团队把大项目切小也让客户在整个过程中始终看得到进展而不是最后打包交付一个吓人的大改动。6.3 验证与回归阶段用自动化测试拴住AIAI写代码的最大风险是看着对了其实错了。实训的模拟项目要求在三个层面做验证静态检查、单元测试、端到端冒烟。静态检查和单测用常规的CI流程就能做端到端冒烟这里强烈推荐Playwright MCP——让Agent自己打开浏览器走一遍上传合同→解析条款→生成风险报告的完整流程截图留证。Harness的检查点机制在这个阶段特别有用。每个检查点自动保存环境状态验证失败就直接回退到上一个通过的检查点重新触发修复不用手工处理一堆被改得乱七八糟的文件。这一阶段我给学员的训练目标是任何一个Agent产出的改动必须能说清楚改了什么、为什么改、用什么验证过。说不清楚就不算完成。6.4 交付沉淀阶段项目结束不等于知识结束项目验收不是终点而是资产沉淀的起点。实训最后一天专门留给收尾工程把本次交付中更新的RAG知识库、新沉淀的Skills包、Harness插件配置、MCP server清单、WorkBuddy项目模板一起归档成可复用的交付基线。这一步听着不性感但价值极大。下个项目如果还是同类业务直接复制基线起步省掉至少一周的前期摸索。而且这些资产会随着项目越来越多而不断变厚慢慢形成团队自己的交付方法论。热词里的workbuddy从入门到精通说的其实就是这个积累过程——从会用到用出体系。7. 实训中最常见的四个坑端点报错、回退失控、项目迁移与RAG失灵7.1 Codex端点切换报错的完整排查链路实训里有个高频报错原文大致是切换Codex端点时本地转发层在处理/responses请求时报错提示类似local proxy failed while handling codex endpoint /responses。实际用codex switch切换模型端点时经常遇到我把它做成了一次完整的排查演练。我让学生按这个链路排查先跑codex switch确认当前provider列表目标provider到底注册成功没有。打开config.toml检查base_url重点看是否以/v1结尾同时确认目标端点是否支持Responses API。很多兼容端点只实现了旧版Chat Completions接口/chat/completions而Codex默认走Responses API/responses返回结构完全不一样本地转发层自然解析失败。检查环境变量有没有覆盖配置。有时候全局环境里残留了旧的API地址优先级比配置文件高请求就打到了错误的地方。清理Codex本地的端点缓存位置一般在~/.codex/cache下清掉后重新switch一次。用curl直接请求目标端点确认返回JSON结构这一步能快速区分问题到底在目标服务还是本地配置。实训结束后我把这个验证流程打成了一个Harness插件每次切换端点先跑协议自检确认兼容性再放行后面的任务。这给学员的启发是接入任何模型网关前都要先做协议兼容性验证不能只看到文档写着OpenAI兼容就默认万事大吉。7.2 Harness代码回退让AI的返工有据可依代码回退不是简单跑个git revert了事。Agent在一次任务里可能改了十几个文件、调整了依赖、改了配置这时候手动挑文件恢复根本不现实。Harness的代码回退机制是任务前后打快照配合操作日志做精确回退可以退到任务前状态也可以退到某个中间检查点。实训里的实操建议有三条第一每个任务开始前打快照任务验证通过后打tag建立清晰的时间轴第二回退时用harness rollback --checkpoint id进入指定检查点不要手动改文件第三回退完成后重建验证环境确认没有遗留进程或临时文件。这条经验在客户现场救过我太多次了AI改代码可以大胆冲Harness在后面兜底团队才敢真正放开手让它干活。7.3 WorkBuddy项目搬迁与缓存路径修改实训里大家用的是Windows环境项目搬迁踩坑率特别高。最常见的三个坑是缓存目录残留、绝对路径依赖、数据库文件被占用搬不动。标准操作流程应当是这样先在原机器上彻底关闭工作台不然数据库和缓存文件被锁住拷不走导出项目配置复制项目目录但千万不要复制缓存目录到新机器上先设置缓存目录的环境变量再启动工作台让它重新生成缓存和索引最后打开任务卡片确认代码库关联、RAG知识库连接、MCP服务全部重新生效。缓存目录修改更简单设置WORKBUDDY_CACHE环境变量或者在设置面板里修改storageDir改完重启验证。这个细节看着小但企业机器存储空间普遍紧张C盘动不动就满能管理好缓存路径是Windows上长期稳定使用的关键。7.4 RAG上线后效果变差时的排查顺序最后一个踩坑点也是虚拟项目里一定会出现的RAG系统上线后客户反馈效果变差答非所问。实训中每个小组拿到故障的第一反应都是换embedding模型我拦住他们给了一张故障诊断卡要求按顺序排查。先查召回把原始问题直接丢进知识库检索看TopK结果里到底有没有正确答案。不在TopK里说明问题在分块太粗或embedding不贴可能需要KG或结构化库补位。再查排序答案在TopK里但排位靠后就调整分块大小引入rerank。第三查上下文TopK里有正确答案但模型答错那是prompt指令不够明确、被噪声干扰了。第四查索引同步看知识库更新频率和索引是否一致。最后上兜底机制模型面对不确定内容时必须能说不知道加明确的拒绝规则。这套排查顺序在实训中帮所有小组定位了问题80%的情况都卡在前三步。定期做RAG体检要成为项目标配否则系统会越用越不可靠。最后再分享一句我在工作坊里反复对学员说的话这套工具链最大的价值不是让AI多写代码而是把交付过程中最不可控的变量变成可管理、可回退、可复用的流程。Codex负责冲Harness负责拉缰绳WorkBuddy负责记路线RAG喂地图Skills积累老司机的经验MCP把客户已有的系统接进来。先不用急着一次上全套从Codex加Harness的组合开始跑通一个最小交付再把RAG和MCP逐步加进来。等到你的Skills库里攒够了十几个自己沉淀的技能包你会发现下个项目的起步速度完全不一样。
阅读完成 · 觉得有帮助?