很多人在使用 AI 时会发现:让它写个短句它很行,但让它开发一个完整的系统,它就会顾头不顾尾,甚至陷入逻辑死循环。这是因为模型本质上是“逐词预测”的,它缺乏对复杂任务的长远构思。
为了解决这个问题,Agent 架构引入了 Harness(运行环境) 来充当“监工”,并赋予模型 Planning(规划) 的能力。
1. Plan:给 AI 的脑子装个“进度条”
在执行复杂任务前,模型不再直接动手,而是先生成一份 Plan。
-
思维链 (CoT): 这就是最简单的 Planning。通过在 Prompt 中加入“一步步思考”,迫使模型在给出最终答案前,先在上下文里加载逻辑路径。
-
动态修正: Plan 是可交互的。
- 第一步:模型制定计划(Step 1... Step 2...)。
- 第二步:Harness 检查计划,甚至请人类确认。
- 第三步:执行过程中如果 Step 1 失败了,模型会修改剩下的 Plan。
2. Harness:不仅仅是“马具”
Harness(动力外壳/运行环境) 是包裹在 LLM 外面的一层软件系统。模型虽然聪明,但它是不完整的,它不能自发地去调 API 或循环思考。
Harness 的三大核心功能
graph TD
User((用户指令)) --> Harness[Harness 调度器]
subgraph Engine [循环控制中心]
Harness --> LLM[LLM 决策]
LLM --> Action[工具调用请求]
Action --> Exec[执行器]
Exec --> Result[执行结果]
Result -->|回传/重试| Harness
end
subgraph Safety [安全与监控]
Harness --- Token[Token/成本监控]
Harness --- Guard[Guardrails 安全护栏]
Harness --- Human[Human-in-the-loop 人工干预]
end
Harness --> Final((任务完成))
style Harness fill:#f96,stroke:#333,stroke-width:2px
style Engine fill:#f1f1f1,stroke:#333
- Loop (循环管理): Harness 会盯着模型。如果模型说“我需要查天气”,Harness 查完后会主动把结果塞回模型嘴里,问:“结果拿到了,下一步你干啥?”
- State (状态保持): 现在的模型依然有上下文限制。Harness 负责管理哪些记忆该保留,哪些该丢弃(这涉及到我们之前提过的 Memory 模块)。
- Error Handling (容错): 工具调用报错了怎么办?Harness 会捕捉异常并告诉模型:“API 挂了,请尝试换一个方法。”
3. Skill 的本质
为什么说 Skill(技能) 是封装好的经验?
一个 Skill 其实就是一个 “Harness 配置包 + 特定的 Planning 模板” 。
- 例子: “代码重构 Skill”。
- 当你加载这个 Skill 时,Harness 会自动加载一套 Rules(代码规范),并强制模型使用一种特定的 Planning 模式(先写测试用例,再改逻辑,最后跑测试)。
4. 人机协作:Human-in-the-loop
在这一层,Harness 还承担了一个重要定位:断路器。 涉及到高风险操作(如:删除数据库、发送支付指令)时,Harness 会挂起进程,弹出窗口问人类:“AI 计划执行删除操作,你批准吗?”
AI 能够进入生产环境的关键:智能由模型出,责任由系统担。
5. 总结:第六课的心得记录
- Planning 解决了“鲁莽”: 让模型从“直觉反应”转向“逻辑规划”。
- Harness 解决了“落地”: 没有这个运行外壳,模型只是一个只会说话的孤岛。
- 系统化思维: 开发 AI 应用,本质上是写一个强大的 Harness,去管理那个聪明的 LLM。