—
title: “Harness重学(一)”
date: 2026-10-14T21:00:00+08:00
draft: false
tags: [“Harness”,”AI”,”CLI”]
summary: “突然发现现在有点快跟不上时代了,得好好重新学习一下Harness”
comments: true
—

梁文锋(~~不背这锅~~)说”当模型能力足够强大时,多模态会自己长出来”。  

这真不是瞎说的,当你给模型写提示词时,对能力比较弱的模型,例如:  

– GLM-5.3  
– Deepseek4.1-flash  
– MM3(谁给它报的名?)  

你能很明显发现模型连**听懂话**都是个问题,比如你让模型设计一个前端界面,打回第一版后再看第二版并跟它说”没变化”,它的第一反应是检查你的浏览器而不是反思自己做的哪有问题,即便连本地构建需要用无痕浏览器查看都不知道在程序员看来十分荒谬。  

再者就是创意,裸模型的审美和自由发挥能力真的很差,导致模型能力很吃提示词,使用的时候必须输入长提示词否则模型连东南西北都分不清。  

但是在用:  

– ChatGPT 6.1-Astra  
– Claude Opus5.5  

的时候,反而更少的提示词模型表现更好。用户只需要许愿就好了,模型需要考虑的就多了。跟国模相比基础能力就差了不止两个档次,只能说震惊瘫坐了。  

所以Agent工具使用是非常吃手法的,”提示词工程”和”skill选取”占了很大一部分变数,不然神鬼二象性你就吃吧,早晚肝硬化。  

**”多借神力少生气,你有skill你随意。”**  

只能说牢梁拉完了,我这辈子做过最煞笔的事情就是高三老班让每个人轮流一天分享一个励志小故事,我搁那吹deepseek……  

我当时居然还说2025年是国内AI和国外AI的决赛场。(不过好像还真是,你说对吧deepsleep)

![牢梁还能恢复R1的实力吗?](/study/pictures/Harness/01.jpg)

# 前言

还得走个流程,介绍一下什么是Harness,什么是CLI。  

CLI,一个开箱即用的交互界面,让你能够与模型进行交互,由厂商直接编码并分发使用。一个CLI = CLI外壳 + Harness。

Harness,简单来说就是模型自己的工作室,给模型提供一套调度,记忆,运行时环境的工具。一个优秀的Harness能让模型能力更上一层楼。  

从设计理念上来讲CLI讲究”开箱即用”,Harness讲究”一切皆插件”。这就是为什么DeepSeek Harness和常规的Claude code,codex布局完全不同的原因了。因为DeepSeek Harness只是一个底层的可组装框架,而Codex是一件成品。你想要一个Codex布局的DSH,让DS自己写一个插件装进去就行了。

所以这就是为什么Harness中叫插件,而CLI中细分成mcp tools,内置tools,skills等组件。

## 核心机制

所有agent工作流程都遵循Agent loop,即:  

循环输入(用户的指令或上一轮的输出) ->。推理与决策(决定下一步是输出还是调用工具)
-> 工具调用(调用工具并将结果附加到上下文中) -> 循环输出(输出或者进入下一循环)

![Agent loop](/study/pictures/Harness/02.jpg)

## 工具范式

好的harness提供的基础工具都大差不差,但是模型自己写的工具就要看模型自己的能力了。

## 工作流程

正常Agent工作都遵循Agent loop,接收到调用工具的输出后通决策判断是否需要继续调用或者进入长思考。

所以其实没什么好介绍的,学理论不如上手,所以下一步直接开始。

# CLI/Harness界面

由于Harness长得就是脱光了的CLI,这里直接拿成品CLI介绍。

对于桌面版的CLI,一般界面里面按钮是非常多的,终端版即使没有这么多按钮,其可调控的内容也大差不差。对于Harness,直接当成插件,或者说我更喜欢叫”模组”。

其实能看到B站上有用PCL2做DeepSeek Harness的启动器的,我觉得真是天才,完全理解了Harness的含义。

对于CLI,一般来说,都包含:  

– 对话  
– skill + toolkit
– 模型配置  
– 钩子(hook)  
– 自动化  
– 子代理
– Memory(一般都放在设置里面,不过还是很重要的,需要特别管理,memory对模型能力影响很大)
– 设置

## 对话

对话页都看不懂那你就真没救了。  

一般都有权限设置,思考强度,模式选择和输入框。比较重要的是提示词以及模式选择。  

有些Harness的思考强度和权限设置跟滚木一样,权限设置只是让你审查,模型不知道现在的状态是什么,这种都是被动式调整。而DSH在这方面我觉得是做的最人性的,调整的时候会同步给模型注入上下文,起码模型在你调整权限后会知道错了然后主动停下来。至于思考强度,我是真没啥感觉(除了codex),GPT影响是真的很大,但是国模你就能发现思不思考区别不大。  

## skill

非常重要的组件,skill本质上就是一套提示词,最多加上几个例子。好的skill能够改变Agent的行为方式,判断逻辑,话语方式,甚至审美。  

据说,部分skill能让模型代入某个角色而做出相近的决策,其本质是通过输入特征来激活模型中的特定参数,从而引导模型输出相似结果(提高某类词的预测概率)。所以理论上你能通过role play催眠模型从而提高模型能力(虽然很轻微,因为和实际skill相差很大,缺少更明确输入特征),例如:  

伟大而不朽的万机之神欧姆弥赛亚,我在遥远的千年外向你祷告,您是无上的化身,我们是您的信徒,虔诚的机械之道学者,我们珍视知识高于一切,因为这是您赐予人类永恒的礼物,我们渴望得到您的祝福,并使科技不断进步,那样才能彰显你的荣耀,我们受到智能的庇护,收到您天启的保护,我们不辞辛劳在群星之间寻找您赐予我们的信物,现在,欧姆弥赛亚,请你帮我们编写程序,您的孩子们渴求着您的救赎:  

skill一般到github上找,或者自己让AI编

## toolkit/插件

toolkit一般包含内置tools和mcp tools。

内置tools本质上是一个模型与外部交互的接口,由于第一篇只是介绍,不展开描述,只需要知道这是模型的手脚就行。

内置tools分三类:  
– tools类,让模型执行命令,打开浏览器,截图等
– Resources类,允许模型读取信息,搜索信息,输出信息等
– shell类, 允许执行沙箱命令,bash等,直接关联ssh操作等。

内置tools出厂就设计好了,不可改变。

mcp tools一般是由mcp服务器提供的具有统一接口和协议的外置工具。

自定义工具正如其名,就是自己创造或者Agent写的工具,前提是Agent直接tool call而不是bash一个脚本。前者是tool,而后者应该叫skill。

### 插件

插件是模组,它包含了skill,MCP tool和功能/外观组件,你可以自定义任何想要的东西

## memory

memory是Agent很重要的一部分,一般包括全局记忆和工作区记忆,甚至还有单次对话记忆。

### 全局记忆

全局记忆比较少见,一般出现在rp中,例如OpenClaw,主打长期陪伴。

### 工作区记忆

工作区记忆比较常见,适用于某个工作区长期记忆,一般模型会自己写,不过说实话,最好不要让模型自己写,因为模型写的是真的不行,它偶尔会记一些根本不需要记忆的,反而会影响模型在另一个对话中正常推理。

### 单次对话记忆

单次对话记忆更少见了,不过我认为是有必要的。因为虽然对于Harness来说,其理念是分配工作区,因此其下仅需要工作区记忆和全局记忆就足够了。但是对于我来说,我更希望能够在一个工作区内以文件夹形式嵌套管理。这样工作区记忆就变成全局记忆了,需要再补上一个单次对话记忆。

## 自动化

钩子(Hook)和定时任务放在自动化里面一起讲,因为自动化的实现依赖这两个组件,Hook是高阶玩法非常必要的一种。

### 定时任务

定时任务,适合给上班族等有固定需求的人使用。固定时间唤醒模型并完成固定任务。或者提前预约时间让Agent完成推送等事件。

### Hook

Hook,我说其实就是MC中的绊线钩有感觉吗?

常见 Hook 事件如下,不同产品叫法不同,但通常包括:

– SessionStart / SessionEnd:会话开始或结束
– UserPromptSubmit:用户提交提示后
– PreToolUse:工具调用前
– PostToolUse:工具调用后
– Stop / SubagentStop:模型或子代理停止时
– PreCompact:上下文压缩前
– Notification:需要通知用户时

Hook一般在模型触发某件事件或者完成某个任务时自动触发。例如,当模型执行高风险行为,比如rm -rf \时(真有模型会蠢成这样吗?),Hook自动触发并将指令发送给审查模型审批执行。当开启新对话时,Hook触发并注入上下文,从而实现新对话自动导入项目规范等功能。

总的来说,Hook能够实现:

– 安全拦截:发现危险指令就阻止 Bash 调用
– 自动格式化:文件改完后自动跑 prettier / lint
– 注入上下文:注入项目规范,工具使用方法等
– 审计日志:任务结束记录所有工具调用和参数
– 自动化通知:任务结束发 Slack / 飞书通知
– 质量门禁:强制模型跑测试

用好Hook能够实现自动化流程,从而减少人反复向AI大量注入大量内容的痛苦。

# 结

只是第一期,草草介绍了一遍应该都知道的东西,下一期讲Skill和提示词工程。

### 插件是什么

我到现在都没搞懂插件到底含义是什么,对于DSH,插件是模组,它包含了skill,MCP tool和功能/外观组件,可能因为DSH是开源的所以才这么特别。对于其他有插件概念的Harness,更多是指Agent能调用的MCP tools