7 篇文章带有标签 “agent-loop”

DeepSeek Harness 架构科普:一座“插件城市”如何驱动一个 AI 智能体

本文用通俗类比拆解 deepseek-harness(简称 dsh)的整体架构与核心模块的工作原理。 所有结论均来自仓库 docs/ 下的架构与子系统文档(architecture.mdcordis-primer.mdsubsystems/*capability-seams.md)。 代码路径以 packages/...docs/... 标注,便于深究。

一、一句话总览

dsh 是一个插件化的 AI 智能体运行底座。它有一条铁律:

产品的一切都是插件(everything is a plugin)。

模型适配器、工具注册表、会话日志、甚至驱动循环(agent loop)本身,统统是插件。 没有需要打补丁的"特权核心"——你想改任何一块行为,只要在别处再挂一个插件、或换掉某个实现即可, 因为所有注册都是可逆的副作用(reversible effects),插件卸载时自动回滚。

这就像一座城市:市政府(Cordis 框架)只提供"水电管网"(一套统一的服务注册 + 事件总线), 各个部门(插件)自己接入管网、各司其职,谁搬走都不影响大楼立着。

二、地基:Cordis 插件框架(用"城市公用事业"来比喻)

docs/cordis-primer.md 把 Cordis 浓缩成五个想法:

DeepSeek Harness 架构:Agent-Loop 工作原理

一、整体定位:一个"日志驱动"的反应式状态机

ReactLoopAgentpackages/core/agent-loop/src/agent.ts)不是传统意义上的 while-loop 脚本,它是一个三态相机 + 事件日志回放器的复合体:

Phase = idle | maintenance | running
  • idle:驱动器不存在,lastTurn 记住上次进度
  • maintenance:独占的维护窗口(如 compaction),持有独立 AbortController
  • running:驱动器存活,turn/step 计数 + wakeRequested 闩锁

关键设计:同一时刻只有一个驱动器 promiseactivityDone),wakeDriver() 在驱动器存活时只设置闩锁而不重入,在 maintenance 或被 abort 的活动期间则把唤醒"挂账",等收敛时重放(agent.ts:172-193)。这解决了 agent 系统最难的问题之一——唤醒信号的丢失与重入——用一个 latch 而不是消息队列。

二、输入侧:双通道 Inbox 的持久化设计

所有输入通过四个动词进来(agent.ts:113-132):

DeepSeek Harness 架构分析

1. 一句话定位

DeepSeek Harness 是一个**"一切皆插件"的 Agent 运行时**:以 vendored Cordis 为插件内核,把模型、工具、会话、执行环境、子代理全部抽象成可替换的能力接缝(capability seam),再用分层配置(profile / bundle / patch)组合成产品。它的本质不是"一个 agent",而是一条生产 agent 的装配线

2. 分层架构总览

OpenClaw - 智能体

网关架构 (Gateway Architecture)

概述

  • 一个长期的网关 (Gateway) 进程拥有所有消息传输表面(WhatsApp 通过 Baileys,Telegram 通过 grammY,Slack,Discord,Signal,iMessage,WebChat)。
  • 控制平面客户端(macOS 应用、CLI、Web UI、自动化脚本)通过 WebSocket 连接到网关,绑定在配置的主机上(默认 127.0.0.1:18789)。
  • 节点 (Nodes)(macOS/iOS/Android/无头设备)也通过 WebSocket 连接,但需声明 role: node 并包含明确的能力/命令。
  • 每台主机对应一个网关;它是唯一开启 WhatsApp 会话的地方。
  • 画布主机 (Canvas host)(默认 18793)用于提供代理可编辑的 HTML 和 A2UI。

组件与流程

网关 (Gateway) (守护进程)

  • 维护提供商连接。
  • 公开类型化的 WS API(请求、响应、服务器推送事件)。
  • 根据 JSON Schema 验证入站数据帧。
  • 触发事件,如 agentchatpresencehealthheartbeatcron

客户端 (Client) (Mac 应用 / CLI / Web 管理)

  • 每个客户端一条 WS 连接。
  • 发送请求 (healthstatussendagentsystem-presence)。
  • 订阅事件 (tickagentpresenceshutdown)。

使用 Claude Agent SDK 构建智能体

Claude Agent SDK 是 Anthropic 发布的、用于在 Claude Code 基础上构建强大智能体(agents)的工具集合。该 SDK 最初是作为 Claude Code SDK(一个智能编码解决方案)发布的,旨在支持 Anthropic 内部的开发者效率。由于 Claude Code 已经超越了编码工具的范畴,被用于深度研究、视频制作和笔记记录等无数非编码应用,因此该工具被更名为 Claude Agent SDK,以反映其更广泛的愿景。

一、核心设计原则:赋予 Claude 计算机能力

Claude Agent SDK 的关键设计原则是让 Claude 拥有程序员日常使用的相同工具。这意味着 Claude 必须能够:在代码库中查找文件、编写和编辑文件、运行代码、调试、以及迭代执行这些操作直到成功。

通过允许 Claude 访问用户计算机(经由终端),并赋予其运行 bash 命令、编辑文件、创建文件和搜索文件的能力,它能够有效执行非编码任务,如:阅读 CSV 文件、搜索网络、构建可视化、解释指标等数字工作,从而创建出具有通用目的的智能体。

二、构建的新型智能体

赋予 Claude 计算机能力解锁了许多以前效率不高的智能体类型。SDK 提供了用于自动化任何工作流程的原语,开发者可以构建: