当前位置: 首页 > news >正文

Solon AI Harness v3.10.4 发布

Solon AI Harness 是一个高性能的智能体“马具(Harness)”框架。作为底层核心,它已在 SolonCode CLI 项目中经过了多月的深度打磨与实战验证。

1、为什么需要 Harness

业界目前有两个极具启发性的定义:

  • 公式定义:Agent = Model + Harness。模型提供推理,而 Harness 提供落地执行的实体。
  • 硬件类比:Model 是 CPU(计算核心),Context 是 内存(瞬时寻址),而 Harness 则是 操作系统(资源调度与环境隔离)。

没有 Harness 的 Agent 就像一个漂浮在大脑中的灵魂,虽然能思考,但无法稳定地感知物理世界、无法受控地操作工具,更无法在复杂的长程任务中保持状态。

Solon AI Harness 让你更高效开发 Agent 应用。

2、Solon AI Harness 的主要工作

组织工具使用 (Tool Steering)
  • 动态挂载与发现(支持 MCP 协议、Web RestApi)。
  • 输入/输出的标准化协议转换。
  • 安全拦截:在危险指令执行前进行权限校验或人工确认(HITL)。
组织记忆与会话 (Memory & Session Management)
  • 管理 Session 的持久化与恢复。
  • 区分“短期工作记忆”与“长期向量记忆”。
  • 快照机制:在任务中断时自动保存状态,支持断点续传。
操控上下文及摘要压缩 (Context Engineering)
  • 窗口滑窗:当 Token 接近上限时,自动识别并保留关键信息。
  • 语义压缩:将冗长的工具回显(如数千行代码输出)自动总结为模型可理解的摘要。
  • 意图聚焦:通过 RAG 技术动态注入当前任务最相关的片段。
环境隔离与沙盒驱动 (Sandbox & Environment)
  • 影子空间:在 .harness 目录下构建隔离的工作区,确保 Agent 的修改不直接污染生产环境。
  • 自愈循环:捕获执行过程中的 stderr,将其作为 Observation 反馈给模型,驱动 ReAct 循环自动修正错误。

3、最近更新

  • 添加 solon-ai-agent 动态切换 llm 支持(支持不同会话,在各自请求时切换)
  • 添加 solon-ai-harness 重试次数配置支持
  • 添加 solon-ai-harness lsp 功能
  • 添加 solon-ai-harness HarnessProperties.disallowedTools 配置支持(全局禁用工具配置)
  • 添加 solon-ai-harness HarnessProperties.agentPools(子代理池) 配置支持
  • 添加 solon-ai-harness HarnessProperties.systemPrompt 配置支持(替代之前的 AGENT.md 预设处理,由外部定制)
  • 优化 solon-ai-core ChatRequestDesc.internalStream 添加流接收超时处理(避免因 llm 服务原因一直卡着)
  • 优化 solon-ai-dialect-anthropic anthropic 方言的异常兼容处理
  • 优化 solon-ai-dialect-openai openai-response 方言的异常兼容处理
  • 优化 solon-ai-agent 中断传递处理
  • 优化 solon-ai-agent ActionTask onAction 日志
  • 优化 solon-ai-agent retrying 中断处理(这前的 task 内部的 stream 可能会中断传递)
  • 优化 solon-ai-agent AgentSession.updateSnapshot 添加锁机制
  • 优化 solon-ai-skill-lsp 重构 LspSkill 实现(之前名为 LspTool)
  • 优化 solon-ai-skill-cli ExpertSkill 引导词
  • 优化 solon-ai-skill-cli TerminalSkill 安全引导词
  • 优化 solon-ai-skill-sys 从 cli 同步 ProcessExecutor
  • 优化 solon-ai-harness HarnessEngine 扩展机制(支持为子代理扩展,通过名字识别)
  • 调整 solon-ai-harness ReActAgentExtension 更名为 ReActAgentExtension
  • 调整 solon-ai-harness 切换 llm 的机制,并取消 switchMainModel 方法(有自由的机制了)
  • 调整 solon-ai-harness TerminalSkillProxy 转到 solon-ai-skill-cli
  • 修复 solon-ai-skill-toolgateway ToolGatewaySkill call_tool 不能传递 toolContext 的问题
  • 修复 solon-ai-core AbstractChatDialect reasoning_field_name 可能传递中断的问题

4、应用示例

引用依赖

<dependency><groupId>org.noear</groupId><artifactId>solon-ai-harness</artifactId></dependency>

构建实例

publicclassDemoApp{publicstaticvoidmain(String[]arg)throwsThrowable{//--- 1. 初始化HarnessPropertiesharnessProps=newHarnessProperties(".tmp/");harnessProps.addTools(ToolPermission.TOOL_WEBSEARCH);//设定工具权限harnessProps.addModel(newChatConfig());//添加大模型本配置(可多个,用时可切换)harnessProps.setSystemPrompt("xxx");//添加主代理系统提示词AgentSessionProvidersessionProvider=newAgentSessionProvider(){privateMap<String,AgentSession>sessionMap=newConcurrentHashMap<>();@OverridepublicAgentSessiongetSession(StringinstanceId){returnsessionMap.computeIfAbsent(instanceId,k->InMemoryAgentSession.of(k));}};HarnessEngineengine=HarnessEngine.of(harnessProps).sessionProvider(sessionProvider).build();}}

应用示例

public class DemoApp { public static void main(String[] arg) throws Throwable { //--- 1. 初始化 // ... //--- 用主代理执行 csae1(engine, "hello"); //--- 动态创建子代理执行(好处理可以动态创建不同的工具权限) case2(engine, "hello"); } private static void csae1(HarnessEngine engine, String prompt) throws Throwable { AgentSession session = engine.getSession("default"); //--- 用主代理模式 engine.prompt(prompt) .session(session) //没有,则为临时会话 .options(o -> { //按需,动态指定工作区(没有,则为默认工作区) o.toolContextPut(HarnessEngine.ATTR_CWD, "xxx"); }) .call(); } private static void case2(HarnessEngine engine, String prompt) throws Throwable { AgentSession session = engine.getSession(HarnessEngine.SESSION_DEFAULT); //--- 动态定义智能体 AgentDefinition definition = new AgentDefinition(); definition.setSystemPrompt("xxx"); //系统提示词 definition.getMetadata().addTools(ToolPermission.TOOL_BASH); //工具权限 ReActAgent subagent = engine.createSubagent(definition).build(); subagent.prompt(prompt) .session(session) //没有,则为临时会话 .options(o -> { //按需,动态指定工作区(没有,则为默认工作区) o.toolContextPut(HarnessEngine.ATTR_CWD, "xxx"); }) .call(); } }
http://www.jsqmd.com/news/722469/

相关文章:

  • 魔法原子发布多款机器人产品及自研模型,计划2036年营收达140亿美元
  • Python 多线程和多进程高级应用指南
  • AI数据中心建设的经济影响与技术架构解析
  • 简单设置解决cursor连接远程服务器失败问题
  • 告别手动搜索!用Python脚本自动获取Grammarly高级版Cookie(附完整源码)
  • 有效的括号
  • 【独家首发】Laravel 12.2未公开特性预览:AI感知路由与自动Prompt编排器——现在配置即享Beta权限
  • 告别SSH断连焦虑:用tmux守护你的Ubuntu远程训练任务(附常用快捷键速查表)
  • ESWIN EBC7702 Mini-DTX主板:RISC-V边缘计算新选择
  • windows 安装labelimg 标注工具
  • 纳米无人机自主导航:计算优化与传感器融合实践
  • Visual Syslog Server:Windows平台企业级日志集中管理的架构革新与性能基准
  • Skill Graph:skills时代如何搭建技能图谱
  • 2026年机载电源十大品牌推荐指南:国产化怎么选?看这篇就够了
  • ARMv8/v9架构调试与性能监控:MDCR_EL3寄存器详解
  • 2026年探访西安:这家眼科医院设备为何如此齐全?
  • 2026年音乐喷泉生产厂家怎么选:嘉豪音乐喷泉,四川喷泉公司,四川音乐喷泉厂,国内大型喷泉制作厂,实力盘点! - 优质品牌商家
  • LLM如何革新GPU内核开发:原理与实践
  • 如何用LinkSwift实现网盘直链解析:八大平台高效下载终极方案
  • 私教服务 | “别一上来就撸测试平台,先想清楚这3个问题”
  • 医疗电子技术革新:TI解决方案与未来趋势
  • AI短剧“表情僵硬”的技术诊断与解决方案——微表情权重、音画同步与情绪TTS实践
  • 从数组求和到Promise串行:用reduce重构你的JavaScript工具箱(附性能对比)
  • 三格电子 Profinet→Modbus 网关两款核心对比
  • 数学公理体系·费曼10大物理学难题统一破解方案【乖乖数学】
  • 布尔函数的三元多项式阈值表示与硬件优化
  • TEMU多SPU传视频太费时间?凌风工具箱10分钟搞定
  • 【Laravel 12+ AI架构设计权威指南】:20年架构师亲授生产级集成路径与避坑清单
  • 2026年Q2喷泉设备厂家专业度判断技术推荐 - 优质品牌商家
  • 2026年宁夏太阳能草坪灯厂家选型核心技术维度解析:宁夏红绿灯,宁夏草坪灯,内蒙中高杆灯,实力盘点! - 优质品牌商家