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 DAG,OpenClaw.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 生态架构全景

.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 开源项目。


相关资源:

posted @ 2026-08-25 09:40  张善友  阅读(112)  评论(1)    收藏  举报