SemaClaw:通过工具工程(Harness Engineering)迈向通用个人AI智能体的一步 SemaClaw: A Step Towards General-Purpose Personal AI Agents through Harness Engineering
提出harness engineering范式,系统性构建可靠的个人AI智能体框架
前置知识
ReAct 循环
ReAct(Reasoning+Acting)把推理与行动交织在同一个循环里,每轮执行 Thought→Action→Observation 三步:模型先产生显式思考,再调用外部工具产生动作,把工具返回结果作为观察注入下一轮思考。该循环赋予智能体在执行中自我纠错的能力——当 Observation 与预期矛盾时,下一轮 Thought 可以据此重新定向,无需外部干预。SemaClaw 的整个执行模型都建立在此循环之上。
理解 ReAct 才能理解 SemaClaw 把哪些工程难题挂在循环的哪个节点上——上下文生命周期挂在 Thought/Action/Observation 累积处,权限桥挂在 Action 边界,记忆检索挂在 Observation 之后——这些挂载点的设计都源自 ReAct 循环结构本身。
MCP(Model Context Protocol)协议
MCP(Model Context Protocol)是一种把外部工具声明、发现、调用统一化的开放协议,工具被描述为类型化 schema,调用结果以结构化形式返回,使不同框架、不同厂商提供的工具生态可互操作。MCP 工具在 ReAct 循环中位于 Action 步骤,精确扩展智能体在外部世界可执行的操作集合;代价是 schema 注入上下文会消耗窗口容量。
SemaClaw 的四层插件架构(第 2.3 节)中 MCP 工具是最底层,也是唯一一个直接面向 Action 步骤的扩展机制;理解 MCP 才能理解 SemaClaw 为何把工具、subagent、skill、hook 区分为四种不同的扩展原语。
DAG 任务图
DAG(有向无环图)用节点表示任务、用有向边表示依赖,边方向表明执行顺序,无环保证不出现循环死锁。节点可以是智能体调用、工具执行或人工检查点,条件边可以根据运行时状态路由到不同下游。DAG 核心价值是把执行结构显式化,使每个步骤的输入、输出、依赖都可观测、可测试、可在断点恢复。
SemaClaw 的 DAG Teams 编排机制是该论文最核心的工程创新,本质上就是把 LLM 动态推理生成的依赖图作为一次性的、有结构的数据声明提交给运行时,然后由确定性调度器执行;理解 DAG 才能理解它如何同时获得动态灵活性与确定性可调试性。
RAG(检索增强生成)
RAG(检索增强生成)把外部知识库作为可检索语料,在模型回答前按查询检索相关片段并注入上下文,使模型依据检索证据而非纯参数记忆来作答。检索策略可以是稀疏关键词(BM25)、稠密向量,或两者混合;检索时机可以是任务开始前的预注入,或执行中的按需调用。RAG 把模型认知负担从『记住』转移到『基于给定材料推理』。
SemaClaw 的外部记忆层在设计上直接借鉴 RAG 的检索-注入模式,但检索查询不是用户提出的问题,而是智能体推断出的任务状态,目标内容也不是事实知识,而是先前的决策、偏好与历史;理解 RAG 才能理解 SemaClaw 的 hybridSearch 三级降级策略与权重设计。
研究动机
2026 年初 OpenClaw 在几周内被数十万用户接入消息平台、邮件、日历与文件系统,把日常任务(从旅行规划到多步研究)委托给个人 AI 智能体执行。这种规模的真实部署暴露了一个尖锐问题:用户需要的远不止一个能力强的模型,他们需要能可靠处理复杂多步任务、在显式安全边界内运行、跨会话积累有用知识的系统,而这些属性属于模型周围的工具(harness)层,不属于模型本身。具体来说,现有方案存在三类系统级瓶颈。第一,真实任务往往需要动态但结构化的编排——既有层次化分解、子任务间的偏序关系、中间依赖管理,也需要局部失败恢复;现有方案要么走纯声明式工作流(可观察但运行时难以调整结构),要么走无约束智能体推理(灵活但缺乏执行追溯与失败隔离),中间常出现所谓『伪编排』——名义上的『编排器』智能体把推理留在自己脑子里,不产出可验证、可执行的任务分解。第二,行为安全必须在运行时强制执行,而不是停留在应用层配置或工具包装层,因为智能体在高风险执行路径(改文件、调外部 API、运行代码)上的行为后果远超文本生成,把权限当成可选项是危险的。第三,跨周跨月的长期使用要求结构化的长期记忆——用户期望智能体保留偏好、先前决策、领域惯例与演化的背景知识,但许多现有记忆机制本质上仍是日志导向,只能检索过往交互,无法把零散的事实逐步凝练成可复用的概念结构。
本文的目标是论文的根本目标是工程化地同时解决上述三大挑战——动态编排、运行时安全、长期记忆——把它们作为一个连贯的工具层架构来落实,而非各自独立修补。文章的具体目标是为开源多智能体框架提供一套可组合的工程机制:在编排上提供一种既能保留运行时适应性又有显式执行结构的混合机制;在安全上把权限检查点作为运行时一等公民,而非附加在应用层的可选项;在记忆上把工作上下文控制、检索式外部记忆、跨会话知识组织整合成统一的运行时抽象,实现『知识沉淀』——把任务派生的洞察外化为用户拥有的持久化、可检索的形态。
与已有工作不同的是,文章的独特切入角度是把 AI 工程的演化范式从 prompt engineering 与 context engineering 推到 harness engineering——即设计把无约束智能体转变为可控、可审计、生产可靠系统所需的完整基础设施层。这一视角的根据是经验证据:LangChain 在 Terminal Bench 2.0 上的对照实验表明,在模型不变的情况下仅靠改善 harness 配置,任务完成率从 52.8% 提升到 66.5%,13.7 个百分点的增益完全归功于 harness 设计。同时,虽然 Claude Code 等成熟系统在编码智能体领域验证了 harness 的价值,但面向个人多智能体应用的开源生态尚未在编排、安全、记忆三个维度上系统地应对这些挑战。SemaClaw 的切入点正是把这些在工业实践中分散成立的工程洞见,合并成一个针对通用个人 AI 智能体的开源分层架构,并以『知识沉淀』为长期记忆的终极落点——把 Wiki 式的 Markdown 文件作为用户拥有的知识载体,使智能体的学习成果同时回流到用户认知与后续会话的检索中。
核心方法
SemaClaw 的方法论建立在『harness engineering』这个核心命题上:模型能力趋同之后,系统的可靠性、安全性、长期可用性主要由模型周围的工程结构决定。基于这个判断,SemaClaw 把整个系统设计成两层架构:sema-code-core 作为可复用的智能体运行时,封装 ReAct 循环、工具编排、上下文生命周期管理与多租户隔离;semaclaw 作为应用层,构建在运行时之上,提供频道集成、消息路由、记忆基础设施、智能体团队协调与插件生态。在此之上,SemaClaw 围绕三大挑战分别提出对应机制:在编排上提出 DAG Teams,一种两阶段混合方法——LLM 先生成带显式依赖边的任务图作为结构化数据声明,确定性调度器再按图执行,既保留动态规划的灵活性又获得图执行的可观测性与故障定位;在安全上引入 PermissionBridge,把所有外部工具调用都视为高风险操作,运行时暂停在工具边界等待用户显式授权,并用两级权限分层(内部工具预授权、外部工具逐次授权)避免每次调用都打扰用户;在长期记忆上构建三层上下文架构——工作记忆配合 75% 阈值触发的语义压缩、外部记忆配合 FTS5 + sqlite-vec 混合检索的按需注入、SOUL.md 锚定的人格分区与 workspace 之间的结构化注入,再叠加一个 Wiki 式的用户自有 Markdown 知识库作为『知识沉淀』层,使任务衍生的洞察可被用户审阅、编辑、并回流到未来会话。技术路线上的整体直觉是:让原本黑箱的智能体推理,在每一次 Thought→Action 节点上都获得结构化的挂载点(压缩、检索、授权、调度),从而把一次性会话变成可累积、可治理、可信赖的长期协作关系。
SemaClaw 与已有方案的本质区别在于它把若干个通常分开设计的机制耦合为一个连贯的、分层的工具层,且每个机制都被赋予严格的设计纪律。最显著的几项区别是:第一,DAG Teams 把『动态推理生成任务结构』与『确定性调度器执行任务结构』显式拆为两个阶段,而不是像 OpenAI Swarm 那样完全依赖交接链式的隐式编排,也不像 LangGraph 那样要求设计时就把图写死——它让 LLM 推理收敛在一个明确定义的时刻(任务声明),其余执行过程完全由确定性调度器驱动;第二,PermissionBridge 把权限检查作为运行时一等原语,而不是应用层包装或工具级可选开关,采用『last active』超时模式让审批延迟不会中断会话;第三,上下文管理把『身份(soul)』、『记忆(memory)』、『任务环境(workspace)』作为三个独立治理的分区注入到上下文的不同标题下,避免它们在窗口中相互污染;第四,长期记忆增加了一个 Wiki 式的、由用户拥有的 Markdown 知识库,作为『知识沉淀』的物理形态,让用户的领域知识可以通过自然编辑回流到智能体检索中。综合起来,SemaClaw 的核心创新不是任何单一技术,而是这种把动态性、确定性、安全性、可治理性、用户主权统一在一个分层架构里的整体设计哲学。
方法步骤详情
SemaClaw 的方法步骤可以按层次分解为若干可独立部署的工程步骤。第一步是搭建双层架构基础:团队先发布 sema-code-core(基于事件门面模式暴露会话初始化、工具调用、压缩触发等类型化事件),再发布 semaclaw 应用层订阅这些事件并在其上实现频道、消息路由、智能体池管理。第二步是实现三层上下文管理:工作记忆由 sema-code-core 拥有并通过事件对外暴露,压缩阈值设在上下文长度的 75%、预留 8000 token 余量给下一条用户消息和提醒注入,压缩失败时回退到 50% 截断;外部记忆位于 agentDataDir 下的 MEMORY.md(人工或智能体维护的索引)和 memory/YYYY-MM-DD.md(自动日志,FIFO 50 天),检索采用 hybridSearch 三级降级策略(向量+FTS5→仅 FTS5→token 关键词扫描),向量与 FTS 双命中时使用 vec_score × 0.7 + fts_score × 0.3 的合并权重,而纯 FTS 或纯向量命中使用统一的基础因子 0.7,以保证跨语言场景下 FTS 不会被系统性地压低;人格分区由 SOUL.md(身份目录下的固定文档)与 workspace(动态可切换的当前工作目录)组成,两者通过不同的标题注入到上下文,并可在不重启会话的情况下切换 workspace。第三步是构建 PermissionBridge:在全局设立一个跨所有会话共享的桥实例,采用唯一请求标识符多路复用并发审批,内部工具(记忆检索、工作区管理、inter-agent 调度)预授权无需交互,外部工具默认每次调用都需用户通过频道内联按钮或 Web UI 显式同意,session 的 timeout 采用『last active』模式使得任何审批交互都能延长会话寿命。第四步是搭建 DAG Teams 编排:智能体团队在系统初始化时通过 ensureAgentDirs() 注册为持久化的人格(创建 SOUL.md 与目录树),协调器通过 create_parent 一次性提交 goal + tasks 数组(每项含 agentName、prompt、dependsOn),detectCycle() 在提交时校验无环,DispatchBridge 进程以 300ms 周期扫描 processPending() 并发派发可执行任务,worker 完成时通过 JSON 状态文件加锁文件回传,协调器用 500ms 间隔的 dispatch_task 轮询等待;失败的上游任务按 terminal 处理使下游不被永久阻塞,启动时把上次留下的活跃 parent 标记为 done 并把进行中任务记为 interrupted。第五步是四模式定时任务:pure notification(纯通知,零 token)、pure script(纯脚本,无模型调用)、pure agent(纯智能体,完整 ReAct)、hybrid script-plus-agent(脚本预处理后再交给智能体推理),按任务复杂度匹配模式以保持 token 消耗与推理工作量成正比。第六步是 Wiki 知识基础设施:用户在本地文件系统维护一棵 Markdown 文件树,YAML frontmatter 记录 tags 与 source 元数据,智能体通过 CLI(inspect/create category/save/organize)操作该树,save 时智能体判断内容是否归属已有分类、是否需要新建分类、或暂存到 inbox/;检索层面 knowledge 层维持独立的检索接口,与 memory_search 严格区分(『记忆』索引『说过什么』,知识层索引『学到什么』);Web UI 直接渲染同一棵文件树,用户的任何编辑立即对下一次智能体检索可见。
技术新颖性
SemaClaw 的技术新颖性不在于任何一个单独的算法突破,而在于把若干工程原则系统化地落到一个可发布的开源框架中。在编排层面,DAG Teams 的『LLM 声明 + 确定性调度』两阶段分离在原理上对应论文 2.4.4 节提出的开放问题——一种协调动态推理与显式 DAG 的复合方案,论文把它实现为生产级机制而非停留在提议阶段,并通过显式持久化人格的字符串精确匹配(无向量检索)使得路由既灵活又可审计。在安全层面,PermissionBridge 把权限检查视为运行时一等原语而非应用层附加件,这点与现有『应用级配置』或『工具级包装』的做法有质的区别;『last active』超时模式与渠道原生审批界面(把审批直接嵌入用户当前对话)都是面向真实部署的设计选择,而非教科书式的安全模型。在记忆层面,把知识沉淀为用户拥有的 Markdown 文件(而非数据库或专有索引)是一个有意识的设计取舍——它牺牲了部分检索效率换来版本可控、可迁移、用户可编辑的产权属性,使知识基础设施同时成为人类与智能体的共享界面,这是 RAG 文献中很少被强调但有深远影响的取向。在上下文生命周期层面,把 SOUL.md(身份)、MEMORY.md(记忆索引)、workspace(任务环境)作为三个独立治理的分区注入,而不是全部塞进一个未分化的窗口,是论文中被称为 『cognitive density』(认知密度)概念的具体体现——解决的不是存储问题,而是『在每一个推理步骤上,哪些信息以何种形态到达智能体』这个更深层的结构问题。在插件生态层面,把扩展机制按其操作所在的工程阶段(MCP 工具→Action、子代理→Prompt、skill→Context、hook→Harness)划分为四层并形成对照表,使整个扩展面获得一个有纪律的分类法,这是先前讨论 agent 扩展性的工作较少明确给出的。
实验结果
论文作为系统架构工作,其『结果』主要体现为机制设计与实现细节,而非传统的基准对比;但论文中确实嵌入了一些量化数据点来支撑其主张。最关键的实证证据来自 LangChain 在 Terminal Bench 2.0 上的对照实验:保持模型不变,仅通过改进 harness 配置,任务完成率从 52.8% 提升到 66.5%,13.7 个百分点的提升完全归功于 harness 设计——这个数据被用来证明论文『模型能力趋同时 harness 是主要的差异化位置』这一核心论断。在 SemaClaw 自身架构的运行参数中,论文给出了若干精细化的数字:上下文压缩触发阈值设在模型配置的上下文长度的 75%,并预留 8000 token 的开销缓冲以容纳下一条用户消息和提醒注入;当总结模型调用失败时,会回退到 50% 截断并在前面附加一条通知消息;混合检索的合并权重采用 vec_score × 0.7 + fts_score × 0.3,而纯 FTS 或纯向量命中统一使用 0.7 的基础因子,以避免跨语言场景下 FTS 匹配被系统性低排;每日日志保留 50 天的 FIFO 滚动;DispatchBridge 主循环以 300ms 周期扫描 processPending(),协调器以 500ms 间隔轮询 dispatch_task,每 2 分钟一次的心跳用于在长任务期间重置 30 分钟的非活动超时——这套时序参数说明作者对工程权衡有具体的、可复现的取值,而非含糊描述。在功能层面,SemaClaw 通过实际机制验证了若干核心承诺:PermissionBridge 在 Telegram 等频道以原生内联按钮呈现审批请求,通过唯一的 requestId 在多个并发会话间多路复用;Wiki 知识库通过 Markdown 文件作为唯一真理源,Web UI 与智能体 CLI 操作同一棵树,用户的任何编辑立即对下一次检索可见;DAG Teams 通过 detectCycle() 在提交时拒绝循环依赖,以及通过把失败的上游任务当作 terminal 处理保证下游不被永久阻塞,验证了『动态规划+确定性执行』的混合方案在工程上是可行的。在适用边界上,论文坦率承认 SemaClaw 当前的交互面集中在 CLI 与 Web UI,与更广泛的通信渠道(消息平台、邮件、语音)集成尚不完整;用户定义的 hooks 尚未集成,与 Claude Code 上游扩展模型存在分歧;Wiki 知识库目前作为独立检索面,与 memory_search 流水线的跨源检索深度集成还未实现。这些诚实的边界陈述本身就是结果的一部分,它们界定了哪些机制已被验证为可生产化、哪些仍属路线图。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| Terminal Bench 2.0 任务完成率 | 完成率(%) | 未直接评测 SemaClaw,但引用 LangChain 在 Terminal Bench 2.0 上 harness-only 改进数据 52.8% → 66.5% | 未改进 harness 时 52.8% | +13.7 个百分点(完全归功于 harness 设计) |
局限与改进
SemaClaw 当前的局限既包括作者明确承认的,也包括读者可以从机制中观察到的。作者在 5.3 节坦率指出三项:第一,交互面集中在 CLI 与 Web UI,与 Telegram 之外的消息平台、邮件、语音接口的集成尚不完整,限制了智能体在非开发场景下的可达性;第二,与 Claude Code 上游扩展模型尚未完全对齐,用户自定义 hooks 没有集成,权限语义与上下文惯例的分歧可能需要随上游能力扩展持续调和;第三,Wiki 知识库作为独立检索面,与 memory_search 之间的跨源检索还未实现,当前架构支持但未实施深度集成。作者在 3.2.1 节还承认 sema-code-core 的压缩提示主要针对代码工作流开发,对于通用对话智能体(负载内容是偏好、关系上下文、开放承诺而非代码决策与工具输出),压缩质量的一致性较差。从机制角度可以观察到的隐含局限包括:PermissionBridge 当前只区分内部/外部两类工具,缺乏更细粒度的操作级策略(如『允许读取 /data 但禁止写入』);DAG Teams 的串行化策略(『同一 admin 智能体一次只能有一个活跃 parent group』)虽然消除了状态争用但限制了并发吞吐量;Wiki 知识库的检索接口目前是独立工具,与外部记忆检索之间没有共享索引,导致跨源推理时智能体需要两次调用。SOUL.md 的『永久身份』承诺与人格随时间的实际漂移之间存在张力,论文在 4.1.3 节也承认这一『身份漂移』问题尚无检测或信号机制;而在第 4.4 节,论文进一步指出当前 PermissionBridge 模型尚未区分『会话范围内』与『持久基础设施上』的插件权限层级,这在第三方插件生态成长后将变得脆弱。
独立分析的弱点
从独立分析视角,SemaClaw 的弱点可以归纳为五个相互关联的工程面。第一是人格漂移缺乏检测机制:SOUL.md 作为路由的语义锚点,其修改历史与语义漂移目前完全无审计,一个名为 『code-reviewer』 的智能体可能逐渐偏离其原始角色而路由匹配仍然成功——改进方向是引入 SOUL.md 版本日志与『语义一致性体检』hook,在调度前对当前 SOUL.md 与路由理由做轻量相似度检查。第二是 PermissionBridge 的权限分层粒度过粗:目前只区分内部/外部两类,但真实部署中 『允许读 /data 但禁止写』 之类的细粒度策略常被需要——改进方向是引入基于声明式策略文件(类似 AWS IAM 的 deny-by-default 规则集),把工具 + 参数模式 + 工作目录作为授权决策的三元组。第三是 Wiki 检索与外部记忆检索分裂:目前 knowledge_search 与 memory_search 是两个独立工具,导致一次跨源推理至少需要两次调用且合并逻辑落在智能体推理里——改进方向是构建统一的混合索引与统一的 memory_search 工具,把两类语料作为同一种带 source 标签的对象参与同一向量空间与 FTS 索引。第四是 DAG Teams 的串行 parent 策略限制了多任务吞吐量:同一 admin 智能体一次只能有一个活跃 parent group,虽然消除了状态争用但与个人智能体『同时处理多条用户事务』的实际场景冲突——改进方向是引入 parent group 命名空间隔离,使不同 group 在 worker 池分配与上下文隔离上互不干扰,并允许并发执行。第五是压缩提示对通用对话场景的适配差:目前压缩质量在代码任务上验证较好,在对话场景下容易丢失早会话约束——改进方向是让压缩提示随任务类型自适应,把『代码任务』与『对话任务』分别配以不同的保留策略(如对话任务优先保留用户显式声明的偏好与承诺)。
未来方向
论文在第 4 节显式提出了五个开放方向,值得展开延伸。第一,持久人格 vs 临时虚拟智能体的架构选择:目前 SemaClaw 把这一选择硬绑定为架构承诺,但作者邀请社区探索两者结合的形态——例如『常驻专家核心 + 任务时临时实例化通才』的混合,需要路由层区分注册身份与临时实例,记忆系统规定临时智能体可写入的边界。第二,harness 工程与模型能力的互补关系:论文提出一个可检验假设——对大部分个人生产力场景(结构化研究、周期性工作流、领域特定辅助、知识积累),一个精心构建的 harness 可以让中端模型达到无 harness 的前沿模型相当的表现——这一假设值得系统化的对照基准验证,作者也明确邀请社区贡献基准、失败案例与反例。第三,记忆作为个人资本:长期使用产生的记忆本身是高保真度的用户画像,论文主张本地部署作为一种架构上的隐私原语,并提出『知识中枢』(knowledge hub)的设想——允许用户选择性地发布自己 Wiki 知识库的部分内容,形成从完全开放到商业化的谱系,但 provenance(来源归属)、containment(信息泄露)、trust(质量信号)等问题都没有现成答案。第四,有状态 harness 插件作为新的扩展形式:区别于无状态工具,有状态插件会修改智能体的持久基础设施(SOUL.md、记忆、共享知识),论文提出了四类尚未实现的具体形态——persona evolution plugin、cross-agent knowledge plugin、evaluation and self-correction plugin、shared template publishing——并指出其权限模型必须区分『会话范围』与『持久基础设施』两类写入,这是 PermissionBridge 未来需要扩展的方向。第五,超越个体的社区形态:从 ClawHub 的技能共享到 Moltbook 的智能体社交网络,论文认为最有价值的社区形态(跨运营商的智能体间通信、共享智能体模板、领域专业智能体社区、协作式知识共同体)在工程上最不可行,这是个人 AI 智能体领域最具长远意义的开放问题。基于成果可延伸的方向还包括:把 Wiki 知识库与 RAG 文献中的 late chunking、结构化检索融合;在 DAG 调度器之上引入预算感知的 token 限额路由;把 SOUL.md 的版本历史与 Git 式审计链结合,使人格漂移可回滚;以及把 LangChain 那类 harness-only 增益的对照实验范式推广到个人智能体任务集,系统验证论文的中端模型假设。
复现评估
SemaClaw 在复现性方面有相当强的可读性,但也存在若干需要谨慎评估的因素。开源方面:代码已在 GitHub 上发布(github.com/midea-ai/SemaClaw),并采用 sema-code-core + semaclaw 的双项目结构,语义边界清晰;插件系统采用行业标准的 MCP 协议,生态可组合。文档方面:论文对每个机制都给出了具体的代码路径(如 detectCycle()、create_parent、processPending()、MemoryManager.hybridSearch)与运行参数(75% 压缩阈值、8000 token buffer、300ms/500ms/2min 时序参数、50 天日志保留、0.7/0.3 权重),读者可以据此直接对照源码实现。数据方面:核心记忆语料来自用户本地 MEMORY.md 与每日日志,Wiki 知识库是用户本地的 Markdown 文件树,不存在外部数据集依赖问题。算力方面:论文明确主张用中端模型即可获得与前沿模型相当的表现,并设计了纯通知、纯脚本模式以彻底绕开模型调用,这与『可在消费级硬件上运行』的部署目标一致;但论文同时坦率承认尚未产出严格的实证验证,目前依赖 LangChain Terminal Bench 2.0 这一外部证据。复现难度方面:对于熟悉 Claude Code 与 MCP 协议的开发者,基础设施层的搭建应属中等难度;但要完整复现论文提出的『个人 AI 智能体』协作体验,需要为每个 worker 智能体编写有意义的 SOUL.md、设计一套 Wiki 分类法、并积累足够的对话与记忆语料——这些是无法仅靠代码获得的、需要真实部署才能显现效果的部分。论文在第 4 节明确标注了未验证的假设(中端模型可达前沿模型表现的等价性),这种诚实标注本身就是复现性资产。
论文图表