AI in Harness(四)
Harness 的本质是什么?
Harness 就是通过工程的手段,让 LLM 一轮一轮地挑选合适的 Tools,在受控的情况下完成工作。
如何理解 Harness 各个模块
- 为了能够告诉 LLM 有什么 tools,所以需要有 tools 管理模块。获取 tools 列表,把 tools 的名字和描述告诉模型。
- Tools 需要在受控的情况使用,为 tools 增加权限管理模块。高风险操作需要用户同意。
- 为了增强 tools 的能力,增加了 hook。类似 Java 的 AOP 切面,在工具调用前、调用后扩展 tools 能力。
- 为了让 Agent 更好地驱动 LLM 完成复杂任务,提供了 todo write 工具和 task system,让 LLM 先出计划再干活。
- 为了隔离子任务的上下文,避免污染主 Agent,设计了 subAgent,用干净的上下文执行子任务。
- 有些场景需要多 tools 组合执行、遵循特定流程,为了把这类领域知识封装成”说明书”,设计了 skill 系统。
- 多轮调用以后可能造成上下文膨胀,设计了上下文压缩能力,缓解 LLM 注意力问题。
- 为了让 LLM 能够记录关键信息并跨会话共享,增加了 Memory 模块。
- Tools 列表、Skill 说明、Memory 内容,这些能力都需要通过 System prompt “告诉” LLM,所以设计了 System prompt 系统。
- 大模型是远程调用,可能有各种各样的失败,需要处理 LLM 返回的各种异常,保证 Agent 能够从故障中恢复。
- 在某些场景中 tools 可能需要执行很长时间,可以生成一个 background task 在后台运行,不阻塞主 Agent。
- 结合后台任务和定时触发器,就能支持定时任务(Cron),让 Agent 按计划自主运行。
- 为了提升工作效率,引入了多 teammate 协作机制。
- 为了方便多 teammate 协作,规定了 teammate 之间的交流协议。
- Teammate 完成工作后也不用闲着,可以去任务板自主领取新任务。
- 多个 teammate 并行工作时为了不互相干扰,增加了 Worktree Isolation,让大家各干各的。