AI 编程时代,.NET 的机会在哪里?

AI 编程时代,.NET 的机会在哪里?

从 Uncle Bob 的 Agent 协作实战,到 Microsoft Agent Framework,再到 OpenClaw.NET 的治理层运行时------一条清晰的 .NET AI 技术路线正在浮现。


最近,Clean Code 作者 Robert C. Martin(Uncle Bob)与 Matt Pocock 的一次对谈在技术圈刷屏。核心观点很尖锐:Agent 擅长战术、糟糕于战略。基本功在 AI 时代依然不可弃。

这句话像一盆冷水,浇醒了那些认为"AI 会取代程序员"的人,也恰好指明了 .NET 在 AI 编程时代的独特位置。


一、Uncle Bob 发现了什么?

Bob 从去年底开始用 Grok 等 Agent 写代码,最初的体验很糟糕------Agent "很快但让我变慢",到处留下"混乱的代码、未清理的依赖、破碎的测试"。

他很快发现一个关键事实:智能体和人类一样,会被脏代码拖垮。 代码足够混乱后,Agent 会陷入"改一处坏另一处"的循环,甚至直接放弃。

从 Prompt 驯化到确定性工具链

Bob 最初尝试用冗长的 prompt(TDD、Clean Code 规则等)"驯化"Agent,但发现模型把这些规则当成"加勒比海盗式的指南"------可遵守可不遵守。技术原因是 "lost in the middle" 现象:上下文窗口中段的内容会被忽略。

于是他做了一个关键转向:放弃冗长 prompt,转向确定性工具链。

他搭建了多 Agent "流水线":

  • Specifier:把需求转为 Gherkin 验收测试
  • Coder:写单元测试与实现代码
  • Cleaner:跑 CRAP 分析,清理烂摊子
  • Hardener:跑变异测试,追求 100% 覆盖
  • QA Agent:端到端验证

单 Agent 5 分钟的任务,这条链约 1 小时;人类则需约半天。质量远高于人类通常会投入的水平。

Bob 的核心论断是:

可以把人类价值观强加给智能体,但不要把人类的行为纪律强加给智能体。

换句话说:Agent 需要约束(价值观),但不需要手把手教(行为纪律)。


二、.NET 的强类型,恰好是 Agent 的"深模块"

Bob 特别推崇 John Ousterhout 的 "深模块" 理念:小接口、深实现。模型可以只读接口而不用读实现,只要代码一致即可。

这对 .NET 来说是天然优势

  • 接口即契约 :C# 的 interfacerecord、依赖注入,让 Agent 通过类型签名就能理解模块边界
  • 编译器即门禁:代码不通过编译就无法运行,这是比任何 prompt 都更确定性的约束
  • 架构可测试:NetArchTest 可以把模块依赖规则变成可执行测试,Agent 违反就自动修复

Bob 将 CRAP 阈值从人类的 4 上调到 6,甚至考虑推到 8------因为 Agent 的短期记忆更大。但阈值可以调,规则不能丢。.NET 的强类型生态,正是"规则不丢"的最佳土壤。


三、Microsoft Agent Framework:编排层的统一

这里需要更新一个关键信息:Semantic Kernel 已进入维护模式 ,其团队开发的 Microsoft Agent Framework 1.0 已正式发布,作为 Semantic Kernel 和 AutoGen 的直接后继者。

特性 对多 Agent 流水线的价值
Graph-based Workflows 显式定义 Agent 流转,避免"迷失"
Session-based State 长周期任务的状态持久化
Native MCP + A2A Agent 间工具调用标准化
Type Safety (.NET 原生) 强类型契约,Agent 读接口即可
OpenTelemetry + DevUI 可观测性,确定性工具链必备

MAF 解决了"多 Agent 如何编排"的问题,但它不负责执行治理------Agent 调用了工具,工具做了什么?是否符合规则?谁审批?如何审计?这些 MAF 不管。

这就留下了一个空白。


四、OpenClaw.NET:填补"治理层"的空白

OpenClaw.NET 是一个 NativeAOT-friendly 的自托管 AI Agent 运行时和网关。它的定位非常精准:

不是"又一个 Agent 框架",而是 .NET AI 的"治理层运行时"。

它主动拥抱 MAF(Runtime.Orchestrator=maf),在 MAF 之下、.NET Runtime 之上,构建了一套完整的战术执行治理基础设施

Bob 的方法论,在 OpenClaw 中的工程化映射

Bob 的实践原则 OpenClaw 的工程实现
放弃冗长 prompt,转向确定性工具链 Passive Harness Contracts + Evidence Bundles------规则在 harness 里,不在 prompt 里
多 Agent 流水线 Plan-Execute-Verify Mode + Shared Harness State------跨 Agent 的读写集、冲突检测
不要把人类行为纪律强加给 Agent Passive Governance Ledger------被动审计,不实时打断 Agent 工作流
上下文压缩避免污染 TokenJuice------确定性规则压缩工具输出,减少"lost in the middle"

几个值得深挖的设计

1. Harness Contracts(执行前契约)

Agent 工作计划在执行前就被静态检查。不通过则不进入 runtime。这比"让 Agent 自己记住 Clean Code 规则"可靠得多------规则在 harness 里,不在 prompt 里

2. Evidence Bundles(证据包)

每次工具调用的证据、风险、校验结果都被结构化记录。Bob 说的"确定性质量门禁"直接内置------Agent 做了什么,留下了什么痕迹,一目了然。

3. TokenJuice(上下文压缩)

工具输出(日志、文件、数据库查询结果)往往极度冗长,直接塞进 LLM 上下文会触发 "lost in the middle"。TokenJuice 用确定性规则做压缩,保证关键信息不丢失的同时减少噪声。

这是典型的 ".NET 式工程思维"------用类型安全、确定性规则解决问题,而不是再加一层 AI。

4. /goal + /loop:战略与战术的分层

  • /goal:人类设定战略目标,session-scoped auto-continuation,Agent 在边界内持续战术执行
  • /loop:周期性战术执行,TickerQ 定时注入,适合构建健康检查、日志轮询等自动化任务

这完美回应了 Bob 的警告:人类做战略,Agent 做战术。


五、MetaSkill DAG + DDD + JSON-LD:你的技术栈正站在风口

如果你关注 DDD 限界上下文JSON-LD OntologyMetaSkill DAGOpenClaw.NET 提供了一个现成的 .NET 宿主来落地:

层级 技术映射
战略层 MetaSkill DAG + DDD 限界上下文------人类定义"做什么"
规格层 JSON-LD Ontology ------领域知识的结构化语义
战术层 OpenClaw SkillKit + Harness Contracts------Agent 编排"怎么做"
执行层 .NET Runtime + ONNX Runtime------类型安全、高性能、可观测

openclaw harness map 可以生成仓库的静态映射(projects、modules、endpoints、tools),相当于把 DDD 的限界上下文和依赖方向显式化,然后作为 harness contract 约束 Agent 的行为------Agent 不会"越界"修改不属于自己的聚合。


六、.NET AI 生态架构全景

上图展示了从战略到执行的完整四层架构:

  1. 战略层:人类操作员通过 DDD 限界上下文和 MetaSkill DAG 定义目标边界
  2. 编排层:Microsoft Agent Framework 负责多 Agent 流水线的图编排
  3. 治理层OpenClaw.NET 提供 Harness Contracts、Evidence Bundles、Governance Ledger 等治理基础设施
  4. 执行层:.NET Runtime 提供 NativeAOT、强类型约束、本地推理和确定性工具链

七、对 .NET 开发者的启示

.NET 在 AI 编程时代的机会,不是"让 Agent 替代 .NET 开发者写代码",而是:

.NET 凭借强类型、成熟的确定性工具链、Microsoft Agent Framework 的编排能力、以及 OpenClaw.NET 的治理基础设施,成为"人类做战略、Agent 做战术"这一模式的最佳技术栈之一。

几个具体建议:

  1. 不要把 TDD 的行为纪律强加给 Agent------让它们自由实现,然后用 Stryker.NET 变异测试倒逼质量
  2. 不要用冗长 prompt "驯化" Agent 写 Clean Code------直接给 NetArchTest 规则文件,让编译器和架构测试做确定性约束
  3. 不要过度前期规划------用垂直切片交付,让 Agent 边做边重构,配合 harness 的 checkpointing 和 human-in-the-loop
  4. 关注 OpenClaw.NET 的治理层设计------它是目前 .NET 生态中把"Agent 治理"作为第一性原理设计的运行时

结语

Bob 在访谈中引用 Dijkstra:软件是人类尝试过最复杂的事物。 基本功是把复杂性组织成可被构想的形式------不仅人能构想,模仿人类的模型也能。

那些认为基本功不再重要的人,"会以痛苦的方式学到,且不会太久"。Bob 亲眼见过智能体撞上那堵墙。

.NET 开发者有一个独特的优势:我们的语言、运行时、工具链,从一开始就是为"管理复杂性"设计的。在 AI 时代,这个优势不仅没有消失,反而因为 Agent 对确定性、可观测性、治理能力的渴求而变得更加重要。

AI 不会取代程序员,但会取代那些不理解"为什么需要基本功"的程序员。 .NET 社区,正好站在一个绝佳的位置上。


本文部分观点参考 Uncle Bob 与 Matt Pocock 的对谈、Microsoft Agent Framework 官方文档、以及 OpenClaw.NET 开源项目。


相关资源: