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

harness 具体原理

Harness 可以理解为包在模型外面的运行时控制层。模型本身只会“读上下文、生成下一段

文本或工具调用”;harness 负责把用户输入、系统指令、工具、文件系统、权限、hook、

技能等东西组织起来,然后再喂给模型。

具体链路大概是这样:

用户输入

Claude Code / Ducc CLI runtime

harness 预处理

- 读取 CLAUDE.md / project rules / memory

- 识别 slash command、skill、关键词

- 注入 system-reminder

- 准备可用工具列表

- 加载当前目录、git、环境信息

发送给模型

模型输出

- 普通文本

- 或工具调用,例如 Read / Bash / Edit / Skill / Agent

harness 执行工具调用

- 权限检查

- 调用真实 shell / 文件系统 / MCP / agent runtime

- 执行 PreToolUse / PostToolUse hook

工具结果再次注入上下文

模型继续下一步

核心原理

模型不直接访问你的机器。它只能“请求调用工具”。真正执行

Bash、Read、Edit、Skill、Agent 的是 harness。

所以 harness 的职责主要有 6 类:

1.上下文装配

它把这些东西拼进模型上下文:

- 系统提示词

- 用户消息

- ~/.claude/CLAUDE.md

- 项目内 CLAUDE.md

- 当前工作目录信息

- 可用工具列表

- 已加载 skill 指令

- hook 产生的 <system-reminder>

2.权限控制

当模型想执行 Bash、Write、Edit、Agent 等工具时,harness 判断:

- 当前权限模式是否允许

- 是否需要用户确认

- 是否命中 deny / allow 规则

- 是否是危险操作,例如删除、覆盖、外发

模型不能绕过这层。

3.工具执行

模型输出的是结构化工具调用,比如:

{

"tool": "Read",

"file_path": "/path/to/file"

}

3. harness 收到后,才真的去读文件,再把结果作为 tool_result 放回上下文。

4.Hook执行

在工具调用前后,harness 会跑 hook,例如:

- PreToolUse:Bash

- PostToolUse:Write

- PostToolUseFailure:Read

hook 可以注入提醒,例如:

- “长任务用 background”

- “编辑后要验证”

- “Read 多文件时并行”

- “工具失败后分析错误继续处理”

这些提醒不是用户说的,也不是模型自己想出来的,是运行时插入的控制信号。

5.Skill加载

当用户输入 /skill,或者模型调用 Skill 工具时,harness 会:

- 找到对应 skill 目录

- 读取 skill 的说明文件

- 把 skill 指令注入上下文

- 后续模型按 skill 流程执行

skill 本质上是“按需加载的专业提示词 + 工作流规则”。

6.Agent/Workflow编排

当模型调用 Agent 或 Workflow 时,harness 会启动子模型实例或工作流脚本:

- 子 agent 有自己的上下文和工具权限

- 可以并行跑

- 最后把结果返回主会话

- 主模型再综合结果

关键词识别的位置

这里有两种:

A.harness硬识别

比如你刚才的 ultrathink。运行时检测到关键词后,直接插入:

<system-reminder>

The user included the keyword "ultrathink", requesting deeper reasoning on this

turn.

</system-reminder>

这是 CLI/harness 层完成的,不靠模型主动发现。

B.模型软识别

比如 ralph、ulw、autopilot 这类,CLAUDE.md 告诉模型“看到这些词要调用对应

skill”。模型读到后自己决定是否调用。

所以区别是:

- harness 硬识别:确定性更强,命中就注入

- 模型软识别:灵活,能结合语境,但不如硬规则确定

本质总结

Harness 是一个“模型运行容器 + 工具代理 + 权限网关 + 上下文编排器”。

模型负责判断和生成下一步动作;harness 负责:

- 给模型什么上下文

- 允许模型调用什么工具

- 工具调用是否能执行

- 执行结果如何回填

- 哪些规则和 hook 要强制插入

- 如何启动 skill、agent、workflow

所以你看到的 Ducc / Claude Code 体验,不只是一个 LLM,而是:

LLM 推理能力

+ CLI harness

+ 工具系统

+ 权限系统

+ hook 系统

+ skill 系统

+ agent/workflow 编排

+ 本地文件和 shell 集成

这些组合在一起,才形成“能在本地开发环境里持续执行任务”的 Agent。

http://www.jsqmd.com/news/1196097/

相关文章:

  • 从零到一:Web3 后端工程师转行学习路径全指南
  • 软件公司老板说:赚够1000万收手!我说:这是穷人意淫。
  • 腾讯behaviac框架全平台部署实战:从Windows到Linux/Android/iOS
  • 达梦数据库踩坑:BLOB 数据类型 存中文文本读取变成十六进制乱码,CLOB 才是字符串大文本正确选择
  • [Uniapp]用户登录界面“记住密码”功能的安全存储与自动填充进阶实践
  • CMake 041:生成器表达式|骈文式拆解双路调试法门,逻辑运算符全解工程落地实战
  • 2026年 新疆/库尔勒新房现房置业分析:住宅/洋房观景毛坯房标杆项目解读 - 品牌发掘
  • 内网IM必须成为企业协同的安全底座
  • 参赛实测|以企业项目落地为例!聊聊AI赋能Java开发的真实体验
  • Tokio 中同步原语的实现解析:Mutex、RwLock 与 Notify 的底层 futex 机制
  • Cpp2IL故障排除实战:10个方法解决Unity逆向常见问题
  • MacBook Go版本升级:从版本检测到多版本管理的完整指南
  • 2026石家庄楼顶漏水、卫生间漏水、外墙、地下室渗漏怎么选?3家正规服务商(7月) - 防水企业百科
  • 遗传算法求解N皇后问题的Python实战与调试手记
  • 计算机毕业设计之基于SpringBoot的助老服务平台的设计
  • CHI协议保序之Order域实战解析:从Request到OWO
  • Agent 插件市场架构:动态加载工具与安全沙箱隔离
  • 异常订单兜底方案(延时队列之外全套兜底手段)
  • DS90UB935-Q1串行器时钟与I2C配置实战指南
  • 2026青岛地下室返潮、卫生间漏水、外墙、楼顶、阳台+阳光房渗漏不用愁!3家正规企业(7月) - 防水企业百科
  • 体育领域情感分析实战:基于预训练模型的球迷情绪追踪
  • 2026年最新北京市轨道交通图和 北京轨道交通规划图 附图
  • 2026香港高才通计划申请指南:世贸企业咨询助您高效获批香港身份 - 德益云企业服务
  • 基于STM32单片机车载CAN总线通信系统设计温度霍尔测速PWM设计DIY-T159
  • 教育警示短视频:从“催命符”比喻看家庭教育焦虑与平衡
  • 杭州GEO公司哪家好?2026企业选型避坑指南与推荐榜单 - 资讯纵览
  • 02 从CD4066到精密模拟开关:二选一电路设计的性能跃迁指南
  • 深入解析TI TPS65987D:USB PD 3.0、FRS、死电池供电与BC1.2实战设计
  • 《深入理解计算机系统》虚拟存储器
  • Prompt 效果漂移检测:模型偷偷更新了,Prompt 还在用旧的