惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
Engineering at Meta
Engineering at Meta
M
MIT News - Artificial intelligence
Google DeepMind News
Google DeepMind News
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
T
Tailwind CSS Blog
小众软件
小众软件
J
Java Code Geeks
人人都是产品经理
人人都是产品经理
博客园_首页
MyScale Blog
MyScale Blog
博客园 - 聂微东
V
Visual Studio Blog
The Cloudflare Blog
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42

博客园 - 张善友

.NET 11 性能全解读:从 JIT 到基础库,这一版到底快了多少 .NET 11 性能深度解读:这一次,真的「到 11」了 把 LLM 密钥从环境变量里解放出来:OpenClaw.NET 迎来 Vault/OpenBao 密钥后端 RedNb.Nacos 2.0.0 正式发布:.NET 接入 Nacos 3.2.4,AI Registry 全能力落地 Rust 成为微软一线语言之后:谈谈 C# 与 Rust 的互补性 .NET 异常处理的"暗门":代码里写满 catch,你依然能抓住它——从一个 AI Agent 运行时的源码说起 写给 C++ 工程师的 OpenClaw.NET 上手指南:用你熟悉的 C++ 思维,跑起一个生产级 AI Agent .NET 11 RC1 发布:拿到"准生证",生产环境可以上了! 写给 PHP 工程师的 OpenClaw.NET 上手指南:用你熟悉的 PHP 思维,跑起一个生产级 AI Agent 写给 Rust 工程师的 OpenClaw.NET 上手指南:用你熟悉的 Rust 思维,跑起一个生产级 AI Agent 从对标 Java 到对标 Go:Native AOT 的"无痛化"之路,走到哪一站了? NuGet 半年度总结:周下载量从 54 亿到 67 亿,.NET 生态的"新一轮增长期"实锤了 写给 Java 工程师的 OpenClaw.NET 上手指南:用你熟悉的 Spring 思维,跑起一个生产级 AI Agent 写给 TypeScript 工程师的 OpenClaw.NET 上手指南:用你熟悉的 TS 思维,跑起一个生产级 AI Agent 写给 Python 工程师的 OpenClaw.NET 上手指南:用你熟悉的 Python 思维,跑起一个生产级 AI Agent 写给 Golang 工程师的 OpenClaw.NET 上手指南:用你熟悉的 Go 思维,跑起一个生产级 AI Agent MetaSkill 落地 .NET:当 Agent 从「调用工具」进化到「组织工具」 都是 AI 写代码,为什么 C# 比 Java 快半拍 MHS 三部曲(下):谁允许 AI 行动?——权力、合规与中国厂商的答卷 弱模型不能裸奔:Agent Harness 凭什么真实有效 MHS 三部曲(中):8 小时集成、六种被拦截的故障,和一次教科书级的翻车 TensorSharp 3.3.0.0 发布,视频生成、DFlash2 投机解码、安全加固一起来了 MHS 三部曲(上):别急着叫它「物理 MCP」——Anthropic 到底发布了什么 编程语言的「第三条道路」上,走得最远的其实是 C# 纯 .NET 手写 CUDA kernel,GLM-5.3-Flash decode 跑出 llama.cpp 的 2 倍 3 张卡到底能不能跑大模型推理?从 vLLM、llama.cpp 到 TensorSharp 的多卡真相 Vibe Coding 月提交量 29 亿次之后:GitHub 的危机、Azure 迁移,以及 .NET 的机会 从 PostgreSQL 到 Kubernetes:开源的护城河,从来不写在代码里 人工智能最先替代的,是人工智能学院自己 企业架构的六种场景:从"四大流派"到数字原生与 AI 原生
AI 编程时代,.NET 的机会在哪里?
张善友 · 2026-08-25 · via 博客园 - 张善友

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 做战术。


如果你关注 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 开源项目。


相关资源: