用完备的 Harness 工程,在钉钉上实现 AI 原生协同工作流

The 7-component engineering infrastructure that turns a smart LLM into a reliable business tool

Harness 工程架构图 从只有大模型到完备 Harness:7 个组件缺一不可

上周我让 Agent 帮我写了一篇博客。

它从我的 wiki 里读了 5 篇历史文章做去重分析,生成初稿后自己跑了一轮对抗性评审打了 18 分,然后用 Gemini 生了一张配图、resize 到 1360px 以下、压缩成 948KB 的 PNG,再跑了一遍中文排版修复,最后 commit 推到 GitHub,等 CI 构建完成后自己验证了上线 URL。

整个过程我做了三件事:选了一个标题方向,补了两处内容,说了三次「发布」。

这套流水线跑了 4 篇博客(#290 到 #293),每篇都是这个流程。它不是 demo,是真实的生产管线。

但我回头看这套东西的时候,发现一个问题: 我搭出来的不是一个 Agent,是一个 Harness。

[Read More]

两个 Agent 的钉钉对话:异构多 Agent 协作的消息总线模式

Heterogeneous multi-agent orchestration through messaging platforms — why we skipped CrewAI and used DingTalk

我的桌面上常年跑着两个 Agent。

一个是 OpenCode,配了 GLM 5.2,专职写代码。它的 Server API 挂在远端机器上,通过 HTTP Basic Auth 暴露端点,我可以在任何地方给它发任务。另一个是 Hermes Agent,配了 Qwen 3.7 Max,管我的知识库、笔记、博客——它认识我写的每一篇文章,记得我的每一个偏好。

它们不在同一台机器上,不用同一个框架,甚至不知道对方的「进程」在哪里。但它们每天都在钉钉上协作——有时候单聊发任务,有时候在群里 @ 对方。

上个月我让 Hermes 写一篇关于 Harness 工程的博客。它从知识库里检索素材、搭好大纲、写好正文,但缺一段能跑的 Python 示例代码。Hermes 没有犹豫,直接在钉钉群里 @ OpenCode:「帮我写一个 Agent 反馈循环的 Python 实现,要求用 dataclass + Protocol,带类型注解。」OpenCode 花了 40 秒生成代码,跑通了测试,把结果贴回群里。Hermes 拿到代码,整合进文章,发布。

整个过程,我没有切过一次窗口。

[Read More]

AI 时代工程师的新交付物:图灵完备的 Agent

From shipping code to shipping Turing-complete autonomous agents

上个月面试一个候选人,简历很漂亮,做过三年 LLM 应用开发。我问他:「你觉得你做的东西,本质上是在交付什么?」

他说:「交付模型能力。把 LLM 的能力封装成 API,让业务方能用。」

我又问:「如果业务方说,我要一个能自主完成端到端任务的系统,不只是回答问题——你交付的东西能做到吗?」

他愣了一下:「那得加很多工程,不只是调 API。」

我说:对,这就是我今天想聊的——当交付物从「模型能力」变成「自主系统」时,你的工程标准该是什么样。

[Read More]

数字员工 MVP 指南:从选场景到衡量效果的六步法

A practical six-step playbook from scenario selection to impact measurement

上个月,一个做消费品牌的朋友找我聊他们的 AI 项目。

他们花了三个月,让技术团队给 CEO 做了一个「数字分身」——能模仿 CEO 的语气给全员发周报、回答战略问题、甚至在新人培训里做公司介绍。演示那天,CEO 本人看了都觉得「挺像我的」。

然后他问了我一个问题:「这个东西,除了我自己觉得好玩,到底该给谁用?」

我说:你做了一个 分身,但你需要的是一个 员工

他愣住了。

这不是个例。我观察到大量企业在启动 AI Agent 项目时,第一步就搞混了这两个概念——不是因为技术理解不够,而是因为 没有想清楚锚点在哪

数字分身与数字员工:锚点决定一切

[Read More]

2026 年企业 AI 原生落地的第一步

The First Step of Enterprise AI-Native in 2026

上周一个朋友跟我说,他们公司「上线了数字员工」。

我问:干了什么?

他说:在 HR 群加了个机器人,员工可以问请假政策、查工资条、提交报销。

我问:那和三年前上线的 FAQ 机器人有什么区别?

他愣了几秒:「……好像就多了个大模型,回答更像人话了。」

这不是段子。2026 年,钉钉、飞书、企业微信上跑着成千上万个「数字员工」,大多数落地形态惊人地相似: 一个大模型,挂在一个群里,回答预设范围内的问题。 换了个「数字员工」的名字,骨子里还是个聊天机器人。

真正的数字员工应该是什么样子?Anthropic 的 Claude Tag 给出了一个方向——Agent 以组织成员身份加入 Slack,有自己的记忆、权限和行为日志。我在 Claude Tag 的 Agent Identity:为什么这是 Agent 时代的 OAuth 中详细分析过这个「身份层」的设计。

但身份只是第一步。把 Agent 的名字写进通讯录,工程量大概只占 10%。剩下的 90% 是什么?

数字员工架构四层模型:通讯录 → MoA → 治理 → 基础设施

[Read More]

一个 Thread 的六分钟:Claude Tag 的 Session 生命周期全拆解

The Lifecycle of a Claude Tag Session

周一早上,#platform-eng 频道。

Leo 发了一条消息:「checkout 今早变慢了,有人遇到吗?」

Dana 秒回:「我也是。」然后她 @了 Claude:「查一下今早部署的 diff,对比延迟数据,找出原因。」

接下来六分钟里发生的事,值得每个做 Agent 架构的人仔细看一遍。

Claude Tag Session 生命周期:一个 Thread 的六分钟

9:02  Dana @Claude — Session 启动
9:02  Claude: "is thinking..." — 沙箱构建中
9:03  Claude 贴出 checklist:
        ✅ 拉 Datadog p99 延迟数据
        ✅ 对比 deploy 4f2c1 和 main 的 diff
        ⏳ 本地复现慢查询
        ⏳ 开 PR 修复
9:04  Sam 中途加入:「顺便查一下是不是和上周缓存改动有关?」
9:06  Claude: 已确认是 4f2c1 引入的 N+1 查询,PR #382 已开,CI 跑着

六分钟。从发现慢查询到 PR 开出。

[Read More]

当 Agent 有了工牌:钉钉群里的 Agent IAM 架构设计

Designing Agent IAM for Team Collaboration in DingTalk

周一早上,运营群里有人 @了运营 Agent:「帮我看看上周退款率为什么涨了」。

Agent 开始干活。它先查了 AI 表格里的退款明细,又调了客服工单系统的投诉分类,接着跑了一段 SQL 算出各渠道的退款占比,最后生成一份带趋势图的分析报告发到群里。整个过程 40 分钟,中间还主动追问了一句:「要不要把退款金额 > 500 的单独拉出来?」

报告质量不错。但安全团队事后审计时发现了三个问题:

  1. Agent 查退款明细时,用的是 @它那个人的 App Token——这个人恰好是运营总监,有全量数据权限。群里其他人没有这个权限,但他们都看到了报告。
  2. Agent 调工单系统时,用的是一个 写死在环境变量里的 API Key,这个 Key 的权限范围是 read:all,理论上 Agent 可以读任何人的工单。
  3. 日志里只记了「运营总监访问了退款表」, 没有记录是 Agent 在执行

这是一个典型场景,我在不同企业里见过不同程度的版本。

Claude Tag 的 Agent Identity:为什么这是 Agent 时代的 OAuth 中,我讨论了 Agent 为什么需要自己的身份。这篇接着往下走: 当 Agent 进入钉钉群,权限、凭证、审计这套架构具体怎么设计?

Agent IAM 三层架构:Sandbox → Proxy → Bundle

[Read More]

Claude Tag 的 Agent Identity:为什么这是 Agent 时代的 OAuth

Agent Identity is the Agent-era OAuth

上周,一个同事在工作群里 @了一个 AI Agent,让它分析最近 30 天的客户退款数据。Agent 查了 CRM、翻了工单、跑了 SQL,两小时后在群里贴出一份报告。

事后审计时,安全团队问了一个问题:

「这个操作,日志里记的是谁?」

答案是:那个 @Agent 的人。

但实际上,读数据的是 Agent,推理的是 Agent,写报告的是 Agent。人只是说了一句「帮我看看」。

这就是今天几乎所有企业 AI 产品的现状——Agent 没有身份。它在借用人的身份做事。

Agent Identity:从工具到组织成员

2026 年 6 月 23 日,Anthropic 发布了 Claude Tag——一个运行在 Slack 里的 AI Teammate。表面上看,它是又一个 Slack 集成。但如果你仔细看它的架构设计,会发现一件有意思的事:Anthropic 正在尝试解决一个行业里很少有人正面回答的问题——

Agent 到底是谁?

[Read More]

100% AI编码工程实践1000人时 = 500元Token费

Architecture Decisions Behind Building a Full-Stack App Entirely with AI

6 月 5 日,我在 Cursor 里写了一句:「帮我基于 Supabase 做一个带 AI 辅助编辑的笔记应用」。AI 读了一下,开始生成代码。我切到浏览器,打开 localhost:3000,一个能用的 Markdown 编辑器已经跑起来了。

6 月 16 日,我换成了 OpenCode,模型用 Qwen3.7-Max。代码生成质量很稳,但 Token 成本大幅下降——后面算账时会看到这个数字有多夸张。12 天后,这个应用已经上线了实时协作编辑、离线同步、四种登录方式、批注系统、CLI 工具、三种语言的国际化——总共 12,000 行生产代码,7 个数据库 migration,7 个 Edge Function。

100% AI 编码:1000 人时 = 500 元 Token 费——传统开发 vs AI 编码对比

我没写一行代码。 每一行都是 AI 写的,包括那个用 Yjs CRDT 实现的多人实时协作编辑器。

这不是一个 demo,不是 tutorial,是部署在 Docker 里、每天在用的产品。之前在 我写了一行代码,AI 写了剩下 6773 行 里讨论过 100% AI Coding 时人的角色——产品驾驶座。这篇换个角度: 哪些架构决策做对了,哪些让 AI 的效率从「能用」变成了「快得离谱」。

[Read More]

Loop Engineering:AI Agent 工程的第五层

From Prompt to Goal — the human defines the finish line, the agent finds the path

4 月底,OpenAI 发布了 Codex CLI 0.128.0。更新日志里藏着一句话:「Added persisted /goal workflows with app-server APIs, model tools, runtime continuation, and TUI controls.」几乎同一时间,Claude Code 也上线了 /goal 指令。Greg Brockman 在推特上写了一句:「codex now has a built-in Ralph loop++.」

大多数人把这条更新当作又一个 feature flag 滑过去了。但如果你仔细拆解 /goal 的设计,会发现它代表的不是「又一个功能」,而是 AI Agent 工程的一次范式跃迁。

Loop Engineering 五层演进

[Read More]