模块七 · 动手实战工坊

实战工坊:手写最小 Agent Loop 模拟

拒绝第三方重型黑盒依赖!使用 JavaScript 从零理解教学版轻量 Harness,并在线体验预设流程模拟。

1
为什么要亲手写一次 Harness?

许多初学者一上来就使用 LangChain 或 AutoGen 等三方库,往往面临以下痛点:

2
可运行的 JavaScript 模拟 Harness

以下示例使用 Node.js 18+,通过确定性的模拟模型演示循环;不是实际模型调用,也不是生产实现:

javascript - minimal-harness.mjs(Node.js 18+)
// 保存为 minimal-harness.mjs,运行:node minimal-harness.mjs
// 教学模拟:无网络、无真实模型调用、无生产鉴权或持久化。
const messages = [{ role: 'user', content: '计算 12 + 30' }];
const tools = {
  add(args) {
    if (!args || typeof args.a !== 'number' || typeof args.b !== 'number' ||
        !Number.isFinite(args.a) || !Number.isFinite(args.b)) {
      return { error: 'a 和 b 必须是有限数字' };
    }
    return { value: args.a + args.b };
  }
};
function mockModel(history) {
  const last = history.at(-1);
  if (last.role === 'tool') return { role: 'assistant', content: `结果:${last.result.value}` };
  return { role: 'assistant', toolCall: { id: 'call-1', name: 'add', args: { a: 12, b: 30 } } };
}
async function run(maxSteps = 4) {
  for (let step = 0; step < maxSteps; step++) {
    const reply = mockModel(messages);
    messages.push(reply);
    if (!reply.toolCall) return reply.content;
    const { id, name, args } = reply.toolCall;
    const result = Object.hasOwn(tools, name) ? tools[name](args) : { error: '未知工具' };
    messages.push({ role: 'tool', toolCallId: id, result });
  }
  throw new Error('超出循环预算');
}
console.log(await run()); // 结果:42
// 真实模型需要适配对应 API 的消息协议,并增加权限、超时、幂等、审计等控制。
3
交互式控制台:浏览器中的预设流程模拟

选择预设任务,点击“启动 Harness 运行”,观察浏览器内置轻量仿真内核如何逐轮执行思考、派发工具并生成最终回复:

💻 Minimal Harness 在线交互式终端
harness-session ~ node minimal-harness.ts
[Harness Runtime] 准备就绪。工具库已挂载: calculate, query_database.
[Tip] 请在上方选择预设并点击 "启动 Harness 运行"...
4
通关毕业考核:Agent Harness 架构师自测清单

恭喜你完成了全部七个模块的学习!对照以下清单,检验你是否已经完全掌握了简历上所体现的专家能力:

🏆 专家能力打卡表
  • ✅ Harness 认知:深刻理解“智能在模型,控制在 Harness”的系统分工与心智模型。
  • ✅ Agent Loop & 工具:熟练掌握 ReAct 循环、防御性参数校验、MCP 协议与 Skills 渐进加载。
  • ✅ 上下文与 KV Cache:掌握前缀缓存稳定性原则,根据命中率与定价评估成本。
  • ✅ 状态机与多智能体:能用 FSM 状态机约束长流程,熟练使用 Subagent 进行任务拆解与上下文隔离。
  • ✅ 评测与可靠性:能搭建三层评测体系、LLM-as-a-Judge 与 CI/CD 门禁,用 Grounding 和自校验降低部分事实错误。
  • ✅ 全栈与 DX:掌握 React/Next.js/TypeScript,能构建带流式打字、时间线和人工介入的高水准产品界面。
上一章 ← 6. 全栈工程落地与 4 大真实项目 下一章 8. MCP 协议与动态 Skills 实战 →