Copyright 2015-2026 多趣味 版权所有
书接上回,我在之前的一篇文章中深入分析了 OpenClaw 及其背后的 Harness Engineering 实践,同时构想了一套 “Harness Framework” 来讲解如何将这套理念应用到企业级智能体开发中。
好消息是,AgentScope Java 1.1.0 版本正式发布了,在这个里程碑版本中,我们完整的实现了这套 “Harness Framework” 规划。开发者可以基于 1.1 版本快速实践 Harness,开发面向个人提效的 XxxClaw、Coding Agent 等本地应用,也可以开发面向分布式场景的 DataAgent、SRE Agent 等企业级应用。
AgentScope Java 1.1.0 在这个版本中交付了四项核心能力:
工作区驱动的 Agent 运行环境:书接上回,我在之前的一篇文章中深入分析了 OpenClaw 及其背后的 Harness Engineering 实践,同时构想了一套 “Harness Framework” 来讲解如何将这套理念应用到企业级智能体开发中。
好消息是,AgentScope Java 1.1.0 版本正式发布了,在这个里程碑版本中,我们完整的实现了这套 “Harness Framework” 规划。开发者可以基于 1.1 版本快速实践 Harness,开发面向个人提效的 XxxClaw、Coding Agent 等本地应用,也可以开发面向分布式场景的 DataAgent、SRE Agent 等企业级应用。
AgentScope Java 1.1.0 在这个版本中交付了四项核心能力:
工作区驱动的 Agent 运行环境:Agent 的人格、知识、技能、记忆、子 Agent 规格统一沉淀在一个结构化工作区里,每次运行自动从工作区加载上下文、结束后自动回写记忆,Agent 的能力随时间持续演化。
可插拔的抽象文件系统:工作区的物理存储可以自由切换——本机磁盘、远端共享存储、隔离沙箱均通过同一套接口操作,同一份 Agent 逻辑无需修改即可适配个人开发环境与企业分布式部署。
开箱即用的上下文管理:内置对话压缩、双层记忆沉淀与全文检索,解决长对话上下文膨胀和跨会话记忆丢失两个顽固问题,并通过后台维护机制保证记忆库不随时间失控增长。
子 Agent 编排与隔离执行:支持声明式定义子 Agent、同步或异步委派子任务;工具执行可配置在隔离沙箱内完成,并在多轮对话间保持沙箱状态可恢复,兼顾多租户场景的会话与用户维度隔离。
可插拔的抽象文件系统:工作区的物理存储可以自由切换——本机磁盘、远端共享存储、隔离沙箱均通过同一套接口操作,同一份 Agent 逻辑无需修改即可适配个人开发环境与企业分布式部署。
开箱即用的上下文管理:内置对话压缩、双层记忆沉淀与全文检索,解决长对话上下文膨胀和跨会话记忆丢失两个顽固问题,并通过后台维护机制保证记忆库不随时间失控增长。
子 Agent 编排与隔离执行:支持声明式定义子 Agent、同步或异步委派子任务;工具执行可配置在隔离沙箱内完成,并在多轮对话间保持沙箱状态可恢复,兼顾多租户场景的会话与用户维度隔离。
OpenClaw/Hermes 很好 但在企业级智能体场景却用不起来?
过去一年,OpenClaw、Hermes、Claude Code 等智能体产品掀起了一波热潮,也带火了这些产品背后的 Harness Engineering 理念——用结构化的工作区、上下文管理与工具约定,替代"每次对话各自为战"的原始使用方式。越来越多的团队开始把这套思路搬进自己的 Agent 开发中。
然而,真正动手落地的人往往会发现,这条路走到"企业级"就开始卡壳。我们梳理了来自一线开发者最常提到的五个障碍:
多用户、多副本,工作区怎么办?OpenClaw 用一个本地目录做工作区,单机单用户完全没问题。但服务要对外,多个用户的工作空间要隔离,Agent 水平扩容到多台机器后,同一用户的工作区又要在副本间共享——本地目录这套假设直接崩掉了。
Tool 和 Skill Script 不能在宿主机上跑,怎么隔离执行?Agent 调用 Shell 或运行用户提供的代码,放在本地可信开发机上无所谓,一旦上服务,把任意用户输入的命令直接在宿主机上执行就是安全漏洞。沙箱是必须的,但"有沙箱"只是第一步:沙箱里的 Tool 还需要看到完整的上下文,多轮对话中同一个沙箱实例要可恢复,而不是每次都从零开始。
"workspace + 文件系统"的组合如何搬到分布式环境?文件系统驱动的工作区是 Harness Engineering 里最直觉、也最有效的模式,但这套模式的前提是"文件系统"。分布式场景下没有统一的本地磁盘,远端存储、KV 服务、对象存储各有各的接口,重写一遍等于把 Agent 逻辑和基础设施耦合死了。
Multi-Agent 怎么做才对?子任务分发、上下文隔离、异步执行、结果回收、超时取消——每一项单独做都不难,但要拼成一个可管理的编排层,代码复杂度会快速上升,而且大多数框架只提供原语,工程上的"怎么声明子 Agent、什么时候 spawn、怎么管理状态"全靠自己摸索。
上下文压缩和分层记忆有没有开箱即用的实现?Harness Engineering 把这两件事讲得很清楚,但真正做起来要处理的细节非常多:压缩时机、压缩策略、压缩前的事实提取、历史的可检索性、跨进程重启后的恢复……大多数框架只给了 short/long memory 的抽象接口,具体实现还是要自己来。
这五个问题的根源是同一件事:个人助手型 Agent 和企业级 Agent 是两种不同的工程形态,用同一套假设去应对两种场景必然碰壁。
从部署形态看:个人助手是单用户单进程,所有状态都可以放在一台机器上;企业级 Agent 要水平扩容、要多租户、要服务不中断,状态必须能分布式存储和恢复。从安全边界看:本机工具执行没有风险,生产环境上任意 Shell 执行则是一个严重的攻击面,沙箱和权限边界不是"可选的优化"而是"上线的前提"。从运维可观测性看:个人工具出了问题自己看日志就行,企业服务要求记忆落盘、会话可审计、状态变更可追踪。从Token 经济看:个人用户对延迟和费用不敏感,企业场景每一次无效的上下文重推都是真实的成本开销。
那么,有没有一款框架能让你"写一套逻辑,按需切换形态"?AgentScope Java 1.1.0 的 Harness 模块(入口类HarnessAgent)就是围绕这个目标设计的:它不替换ReActAgent的推理循环,而是在循环的关键时机插入 Hook,补齐一组工具与工作区约定,把上面五个问题的工程答案打包进来,让你专注于 Agent 的业务逻辑,而不是基础设施。
AgentScope Harness 设计理念:凭什么它能解决以上问题?
AgentScope Java Harness 的设计哲学可以用一句话概括:把"下一轮怎么办、下一天怎么办、上下文爆了怎么办、状态丢了怎么办"的工程答案打包进来,而不是让每个 Agent 项目各自发明一遍。
具体到实现层面,有两个核心支柱支撑起整个框架。
核心支柱一:Workspace 作为唯一事实来源
Harness 为每个 Agent 引入了workspace 工作空间的概念——一个结构化目录,用于承载 Agent 运行所需的一切持久化内容:人格定义(AGENTS.md)、长期记忆(MEMORY.md)、领域知识(knowledge/)、可复用技能(skills/)、子 Agent 规格(subagents/)以及会话历史(agents/<agentId>/)。
这并不是一个新想法——OpenClaw、Hermes 在实践中都发现,让 Agent 有一个稳定的"工作台"比每次重新初始化有效得多。Harness 把这个直觉系统化了:工作区是 Agent 的唯一事实来源(Source of Truth),所有状态的读写都围绕工作区展开,而不是散落在代码、数据库和内存的各个角落。
实际运行中,每次推理开始前,WorkspaceContextHook会把AGENTS.md、MEMORY.md、knowledge/等关键文件自动注入到 system prompt 里,确保 Agent 的人格和知识在每一轮都完整呈现。Agent 运行结束后,MemoryFlushHook会提炼本次对话的新事实写入记忆文件,后台的MemoryConsolidator再周期性地把流水账合并成精炼的长期记忆。工作区在对话中持续演化,每一次运行都比上一次"更了解"用户和任务。
核心支柱二:AbstractFilesystem 让工作区可以运行在任何环境
工作区的理念很美好,但有一个现实约束:本地磁盘目录在分布式场景下行不通。多个 Pod 各有一块本地磁盘,MEMORY.md写到哪里?哪个副本的版本才是"真"的?
AgentScope Java Harness 用AbstractFilesystem抽象层来解决这个问题。对上层而言,Agent 只需要调用统一的read/write/ls/grep等接口,不关心"文件"实际落在哪;对下层而言,可以适配到本机磁盘、远端对象存储(OSS)、KV 数据库(Redis)、沙箱文件系统等任意介质,甚至通过CompositeFilesystem把不同路径路由到不同后端。
如上图所示,基于 AbstractFilesystem 接口,AgentScope Java 内置提供了三种拓展实现,对应三种使用模式。
待详细展开三种实现与模式。
在 AgentScope Java 1.1 版本中,workspace 是 agent 的核心抽象,我们 AbstractFilesystem 作为 workspace 的物理实现载体,所有文件操作、命令执行、记忆管理工具都以 AbstractFilesystem 为标准操作入口。
基于这一层文件系统抽象,AgentScope Java 框架直接为智能体开发带来了三大工程能力:
安全与隔离
Shell/Code/Skill 的执行通过沙箱后端隔离,用户输入驱动的命令不再直接在宿主机上运行;
工作区本身也可以运行在沙箱内,实现文件读写层面的隔离;
工具的注册与暴露由框架统一管理,execute工具仅在后端实现了沙箱接口时才出现;
分布式部署
Agent 可以多副本对等部署,MEMORY.md、会话日志等关键文件通过 Remote 后端路由到共享存储,天然实现跨节点同步;
通过IsolationScope(SESSION / USER / AGENT / GLOBAL)与RuntimeContext组合,在代码不变的前提下实现 session 级隔离、用户级共享等多种租户策略;
Subagent 与异步任务
子 Agent 的工作区、文件系统、会话状态都从父 Agent 继承或独立配置,编排策略由规格声明,不需要手工拼装;
异步任务的状态机(PENDING/RUNNING/COMPLETED/FAILED/CANCELLED)与结果回收机制开箱即用,支持替换为跨进程实现;
AgentScope Harness 典型使用场景:快速映射到你的应用场景
下面三个场景覆盖了从个人到企业的典型开发形态。它们并不是非此即彼的选项,而是代表了三条不同的复杂度路径——你可以从最简单的一条开始,随着需求演化逐步迁移。
个人代理 Agent — 典型如 OpenClaw 类应用
这类场景的特点:单用户、本机运行、需要操作本地文件或执行脚本,典型产品是个人助理、笔记机器人、本地 Coding Agent。
这类场景的核心诉求是"让 Agent 真正了解我、记住我",而不只是一个无状态的问答机器。Harness 在这里的价值是:工作区里的AGENTS.md定义了 Agent 的人格和行为偏好,对话结束后会自动提炼新的事实写入记忆,下次打开时 Agent 依然认识你、记得上次的进度。技能(skills)和领域知识也都住在工作区里,随时可以编辑调整,不需要动代码。
本机部署下还可以开放 Shell 执行能力,让 Agent 直接运行脚本、操作文件系统,这也是 OpenClaw 类产品最有吸引力的地方。而 Harness 在此之上补上了"持续演化"的那一层:工作区就像 Agent 的大脑,随着每次对话变得更有经验。
AgentScope Java Harness 在此场景提供的核心能力:
持续记忆:对话结束后自动将新事实提炼写入工作区,下次启动无需重新"告知"Agent 背景,长期记忆随使用积累。
本地 Shell 执行:在本机可信环境下,Agent 可直接运行脚本、操作文件,复现 OpenClaw 类产品的核心体验。
工作区即配置:修改AGENTS.md调整人格,在skills/目录里新增技能,改一个文件等于升级一次 Agent,不需要重新编译部署。
会话跨进程恢复:关闭再打开,只要 sessionId 不变,上次对话的状态全部还原,不是从零开始。
企业级数据服务 — 典型如 DataAgent
这类场景的特点:服务多个用户、需要执行 SQL / Python / Shell、任务耗时较长、输入来自不可信的外部用户,同时要求多轮对话状态可恢复、多副本部署时用户体验一致。
这类场景最大的风险是执行安全——用户驱动的代码不能在服务器上无限制地跑。Harness 的沙箱机制把 Agent 的文件操作和命令执行都限定在隔离环境里,服务器进程本身不受影响。更关键的是,沙箱不是"用完即毁"的,每轮对话结束后沙箱的状态会被持久化,下一轮拿回来继续,用户不会因为服务重启或切换节点就丢失工作进度。
多副本部署时,用户的长期记忆(Agent 对这个用户积累的了解)可以存放在共享存储里,无论请求落到哪个节点,Agent 看到的都是同一份记忆。长分析任务可以拆成多个子 Agent 并行执行,主 Agent 只负责协调和汇总,不必一直阻塞等待。
AgentScope Java Harness 在此场景提供的核心能力:
隔离沙箱执行:所有代码与命令在隔离环境内运行,宿主服务进程不受用户输入影响,安全边界清晰。
多轮沙箱状态恢复:每轮对话结束后自动保存沙箱状态,下轮或下次服务启动时原位恢复,用户的工作现场不丢失。
分布式记忆共享:用户的长期记忆存放在共享存储,多节点部署下所有副本读到同一份"对这个用户的了解",体验一致。
子 Agent 并行编排:长任务可拆解为多个子 Agent 并发执行,主 Agent 只做协调,整体效率更高,也更易管理超时与失败。
多租户隔离:按会话或用户维度隔离工作区与执行环境,多用户同时在线互不干扰。
企业在线服务 — 典型如淘天交易 Agent
这类场景的特点:主要通过调用业务 API 完成任务(下单、查询、审批等),不需要在服务器上执行 Shell,但需要多实例运行、会话状态可持久、跨用户的知识共享。
这类场景的核心诉求是稳定与安全——在线服务不能因为 Agent 调用了一个不该调用的 Shell 命令而出事。Harness 在这里的价值是:不配置沙箱执行能力时,框架默认就不会暴露 Shell 工具,Agent 只能通过明确定义的业务工具与外部交互,安全边界由配置决定,而不是靠开发者自律。
会话状态和记忆可以落到远端存储,多个服务实例共享同一套用户记忆,用户换一个入口重新对话,Agent 仍然能接续上次的上下文。需要并行处理多个子任务时(比如同时查库存、计算优惠、生成摘要),子 Agent 机制同样适用,可以对接外部任务队列实现跨进程的任务管理。
AgentScope Java Harness 在此场景提供的核心能力:
默认安全边界:不开启沙箱执行时框架不暴露 Shell 工具,Agent 只能通过你明确注册的业务工具与外部交互,安全策略由配置决定。
多实例共享记忆:会话状态与用户记忆落到远端存储,任意服务实例都能读到同一份上下文,用户无感知地在多实例间切换。
会话跨请求连续:每次请求携带相同的用户标识,Agent 自动恢复上次的对话状态,实现真正的多轮连续对话体验。
并行子任务支持:需要同时处理多个业务步骤时,可将子任务委派给子 Agent 并行执行,结果汇总后统一回复,不影响主流程响应速度。
AgentScope Harness 详解 花点时间了解更多框架详情吧
本节将从使用者视角讲清楚 AgentScope Java Harness 的核心能力:它是什么、怎么工作、配置时应该怎么想。