← 返回专题 B01 机制演示库 view_15 框架深度 · 25A

Harness / Payload 分离

控制反转:为什么「改规则 = 改文件热更新」而不是「改代码发版」

场景 —
场景 A:传统耦合模式 —— 业务规则焊死在代码里
在一个类里同时装着框架管道 + 业务规则 + 审查逻辑。想改规则,就要改代码。

一个类 = 全部(伪代码)

class K8sAgent {
  String PROMPT = "你是K8s专家..."; // 业务知识写死
  List<Tool> tools = [kubectl_describe...];
  String reviewRule = "代码风格用空格"; // 审查规则写死
  String loopCode = "..."; // 管道逻辑写死
}

想改一条审查规则:

  • 改 Java 代码 → 编译 → 测试
  • 代码评审 → 审批 → 发版
  • 周期:2 周
  • 业务团队完全被卡在研发排期里
三个致命问题:① 智能与框架耦合——改规则=改代码发版;② 无法「换脑」——想换行为只能重写类;③ 无法 A/B——不能同一套代码跑两套规则。
场景 B:Harness / Payload 分离 —— 控制反转
公共管道(Harness)写一次;业务知识(Payload = Prompt/Skill 文件)由业务团队维护,改文件即热更新。
Harness 骨架
输入/工具/循环/权限
注入 Skill 包
系统提示 + 规则 + 工具清单
→ 热加载
改文件即生效

Harness(工程管道,写一次)

  • 输入接收 / 输出格式化
  • 工具调用调度
  • 权限检查(Hook 拦截)
  • 上下文管理

Payload(业务知识,业务团队维护)

  • System Prompt(身份/风格)
  • Skill 文件(规则/流程)
  • 审查规则 / 代码风格
  • 改文件 = 热更新 = 5 分钟
核心收益对比
维度传统耦合Harness/Payload 分离
改规则周期2 周(改代码+发版,特定团队经验值)5 分钟(改文件+热加载,经验值;仍需评测/灰度)
换行为重写类,牵一发动全身换一个 Skill 文件 ≈ 换行为;工具/权限/运行时不变
A/B 测试不行,同一代码只能一套逻辑同代码,A 组 Prompt-A / B 组 Prompt-B
谁维护业务研发团队业务团队自助(改 Prompt 不碰代码)
五个关键决策:① 提示词放文件 vs 常量(→ 文件,可热更新);② Harness 客户端 vs 云端(多租户企业偏云端;单机/IDE 用客户端);③ 上下文分层压缩;④ 权限 Hook 拦截(Allow/Ask/Deny 三级);⑤ Eval 四层测试(组件/轨迹/端到端/生产)。
代码对比:规则硬编码 vs Prompt 热更新

✗ 硬编码(改=发版)

public String getReviewPrompt() {
  return "代码风格: 用空格缩进, 行宽80,
      禁止魔法数字, 禁止 System.out...";
}
改风格 → 改 Java → 编译 → 测试 → 发版 → 审批 → 上线 = 2 周

✓ Prompt 文件(改=热更新)

# code-review-skill.md
你是资深代码评审专家。
风格规范:
- 使用空格缩进
- 行宽 80 字符
- 禁止魔法数字
- 禁止 System.out
运营改文件 → Harness 检测到变更 → 热加载 = 5 分钟
AI 工程小册 · view_15 框架深度 / 演示 25A Harness/Payload 分离
← 返回专题 B01 · 动画作战地图