Harness 与 Skill

如果把 LLM 比作一匹力大无穷但未经训练的野马,那么 Harness(发音 /ˈhɑːrnɪs/,本义是”马具、挽具”)就是套在它身上、控制它何时跑、往哪跑的缰绳与鞍具;而 Skill(本义”技能、本领”)则是这匹马被训练好后,随时可以调用的一项项拿手本事。Harness 和 Skill 是构建可靠 AI Agent 系统的两个核心设计概念——前者负责”框住”模型的不确定性,后者负责”封装”可复用能力。理解它们对于设计生产级 AI 应用至关重要。

什么是 Agent Harness?

定义: Harness 是包裹在 LLM 外层的”控制框架”,包含 System Prompt、工具定义、约束规则和安全护栏。


graph TD

    subgraph HARNESS["Agent Harness"]

        subgraph SP["System Prompt 系统提示"]

            SP1[角色定义]

            SP2[行为准则]

            SP3[输出格式要求]

        end

        subgraph TL["Tools 工具定义"]

            T1[可用工具列表]

            T2[工具参数 schema]

            T3[工具使用规则]

        end

        subgraph CT["Constraints 约束规则"]

            C1[安全边界]

            C2[权限控制]

            C3[输出过滤]

        end

        subgraph MEM["Memory 记忆管理"]

            M1[上下文窗口管理]

            M2[长期记忆策略]

        end

        SP --> LLM

        TL --> LLM

        CT --> LLM

        MEM --> LLM

    end

    LLM[LLM]

Harness 的四大组件

1. System Prompt 系统提示

System Prompt 是 Harness 的核心,决定了 Agent 的”人格”和行为模式。

组成要素:

要素说明示例
角色定义Agent 是谁”你是一位资深后端工程师”
任务范围能做什么、不能做什么”只回答技术问题,拒绝政治话题”
行为准则如何做”先分析问题,再给出方案”
输出格式回答格式”用 Markdown 格式,包含代码示例”
安全规则红线”不执行危险的系统命令”

好的 System Prompt 示例:

 
你是一位专业的 Python 技术顾问,拥有 10 年后端开发经验。
 
核心原则:
 
1. 代码质量优先:始终推荐最佳实践,包括类型注解、错误处理、测试
 
2. 实用主义:给出可直接运行的代码,而非伪代码
 
3. 诚实:不确定时明确说明,不编造答案
 
4. 简洁:回答直接切入重点,避免冗余解释
 
输出格式:
 
- 先用 1-2 句话概括方案
 
- 给出完整可运行的代码
 
- 解释关键设计决策
 
- 列出可能的注意事项
 
禁止事项:
 
- 不执行 rm -rf 等危险命令
 
- 不修改用户的 .env 配置文件
 
- 不访问用户的敏感数据
 

2. Tools 工具定义

工具是 Agent 与外部世界交互的接口。

设计原则:

原则说明
最小权限只暴露必要的工具
清晰描述工具的 description 必须准确
参数验证严格的参数 schema 定义
错误处理优雅处理工具调用失败

3. Constraints 约束规则

约束类型说明实现方式
安全约束防止有害行为Prompt 红线 + 输出过滤
权限约束限制可执行操作工具白名单
格式约束输出格式要求Prompt 指令 + 后处理验证
资源约束限制 token/时间运行时限制器

4. Memory 记忆管理

层级说明管理策略
系统记忆System Prompt + 工具定义固定不变
会话记忆当前对话历史滑动窗口 / 摘要压缩
长期记忆跨会话持久化向量数据库
工作记忆任务中间状态变量管理

什么是 Skill?

定义: Skill 是对 Agent 可执行能力的抽象封装,包含输入/输出定义、实现逻辑和评估标准。

Skill vs Tool 的区别

维度ToolSkill
复杂度简单函数调用可能包含多步骤流程
组合性原子操作可组合多个 Tool
抽象层级低级接口高级能力封装
示例search(query)”技术文档检索 Skill”(包含查询改写→检索→重排序→格式化)

Skill 的结构


graph TD

    SK[Skill 定义] --> NAME[name: code_review]

    SK --> DESC[description: 对代码进行全面审查]

    SK --> INPUT[input_schema]

    SK --> OUTPUT[output_schema]

    SK --> STEPS[steps]

    STEPS --> S1["① 静态分析 语法检查"]

    STEPS --> S2["② 安全审查 漏洞检测"]

    STEPS --> S3["③ 性能分析 复杂度评估"]

    STEPS --> S4["④ 可维护性评估 代码规范"]

    SK --> EVAL[evaluation]

    EVAL --> ACC[accuracy: 与人工审查的一致性]

    EVAL --> COV[coverage: 问题检出的覆盖率]

    SK --> CONS[constraints]

    CONS --> MAX[最大代码长度: 5000 行]

    CONS --> LANG[支持语言: python, javascript, java]

Skill 的设计模式

模式说明示例
单步 Skill一个 Tool 完成翻译、格式转换
流水线 Skill多个 Tool 顺序执行RAG 问答(检索→重排→生成)
条件 Skill根据输入选择不同路径意图识别→路由→执行
迭代 Skill循环执行直到满足条件代码生成→测试→修复

Prompt Engineering vs Harness 设计

维度Prompt EngineeringHarness 设计
关注点单次输入输出优化整体系统架构
复杂度
涉及组件仅 PromptPrompt + Tools + Memory + Constraints
调试方式观察输出端到端测试
可复用性高(Skill 可复用)
适用场景简单任务生产级 Agent 系统

类比:

  • Prompt Engineering 像写一封好的邮件

  • Harness 设计像设计一个完整的产品

安全护栏 (Safety Guardrails)

输入过滤

策略说明
关键词过滤检测敏感词和注入模式
分类器检测用专门的模型检测恶意输入
规则引擎基于规则的输入验证
双 LLM 架构一个小模型专门检测 prompt injection

输出过滤

策略说明
格式验证检查输出是否符合预期格式
内容审核检测有害/不当内容
引用验证验证引用的工具结果是否准确
PII 检测检测是否泄露个人隐私信息

运行时保护

策略说明
超时控制限制单次执行时间
重试限制防止无限循环
资源限制限制 token 消耗和 API 调用次数
沙箱执行代码在隔离环境中执行

评估循环 (Evaluation Loop)


graph TD

    DESIGN[设计 Harness/Skill] --> UT[单元测试 单个 Skill 效果]

    UT --> IT[集成测试 端到端流程]

    IT --> AB[A/B 测试 对比不同版本]

    AB --> MON[线上监控 持续观察效果]

    MON --> FB[反馈收集 用户满意度]

    FB --> OPT[迭代优化]

    OPT -.->|回到| DESIGN

评估维度

维度指标
效果任务完成率、准确率
效率延迟、token 消耗
安全注入成功率、越权操作次数
用户体验满意度评分、投诉率

快速问答

问题参考答案
Harness 是什么?Agent 的控制框架,包含 System Prompt、工具定义、约束规则和安全护栏。是 LLM 外层的”控制系统”
Harness 和 System Prompt 的区别?System Prompt 只是 Harness 的一部分。Harness 还包括工具管理、约束规则、记忆管理和安全机制
Skill 和 Tool 的区别?Tool 是原子操作(如搜索、计算),Skill 是更高层的能力封装(如”代码审查”可能包含多个 Tool 的协作)
为什么需要 Skill 抽象?① 提高复用性 ② 降低 Agent 的决策复杂度 ③ 便于独立测试和优化 ④ 支持组合和编排
安全护栏有哪些层次?输入过滤(防注入)、输出过滤(防有害内容)、运行时保护(超时/重试限制)、权限控制(最小权限)
Harness 设计的核心原则?① 最小权限 ② 清晰的职责边界 ③ 可观测性 ④ 安全第一 ⑤ 可测试性

速记卡(面试闪卡)

Q1:一句话讲清「Harness 与 Skill」到底是什么?

A:Harness 是框住 LLM 不确定性的控制外层,Skill 是封装可复用能力的高层组件。

Q2:Harness 的四大组件 —— 怎么理解?

A:像给野马配”马具四件套”:System Prompt(定人格的系统提示)、Tools(工具接口)、Constraints(安全约束)、Memory(记忆管理)。其中 System Prompt 是核心,决定 Agent 的行为模式与输出风格。

Q3:什么是 Skill? —— 怎么理解?

A:像马被训练好的一项”拿手本事”——把多步流程打包成可调用技能。Skill 是对 Agent 可执行能力的抽象封装(含输入/输出/逻辑/评估),区别于原子 Tool(如 search),可组合多个 Tool 完成复杂任务。

Q4:Prompt Engineering vs Harness 设计 —— 怎么理解?

A:像写一封好邮件(Prompt Engineering,只优化单次输入输出)vs 设计一个完整产品(Harness 设计,整体系统架构:Prompt+Tools+Memory+Constraints)。前者复用低、看输出调试,后者复用高、需端到端测试。

Q5:安全护栏 (Safety Guardrails) —— 怎么理解?

A:像给马厩装三层保险:输入过滤(防 prompt 注入)、输出过滤(防有害内容)、运行时保护(超时/重试/沙箱),外加权限控制(最小权限)。四层守住 AI 不犯规、不泄露。

Q6:核心速记主线有哪些?

  • Harness 是 LLM 外层的控制框架:System Prompt + Tools + Constraints + Memory

  • Skill 是高层能力封装,可组合多个原子 Tool,区别于简单函数调用

  • Prompt Engineering 只优化单次 Prompt,Harness 设计是整体系统架构

  • 安全护栏分输入过滤、输出过滤、运行时保护、权限控制四层

口诀

A:Harness 套马控方向,Skill 封装本事强

四件套配人格定,工具约束记忆藏

提示工程写邮件,整体架构产品想

四层护栏守安全,输入输出运行防

相关链接

相关链接