DESIGN TRADE-OFFS · SIDE BY SIDE

30 行 Agent Loop 没有错,只是没有回答生产问题

最小循环最适合学习“模型如何调用工具”;Harness 解决的是失败、恢复、治理、替换和多人长期维护。复杂度没有消失,它被分配到了有契约的边界。

教学型最小循环
while (true) {
  const reply = await model(messages, tools)
  messages.push(reply)
  if (!reply.toolCalls) break
  for (const call of reply.toolCalls) {
    messages.push(await tools[call.name](call.args))
  }
}

局部因果非常清楚;随着持久化、审批、取消、恢复和多表面加入,所有责任开始争夺这个循环。

DeepSeek Harness
profile / bundle / patch
        ↓ compose
Context + scoped effects
        ↓ drive
Inbox → Turn → Step
        ↓ publish
SessionEvent + agent/*
        ↓ project
Web · CLI · ACP · SDK

核心价值不是代码更少,而是每类变化都有自己的责任人、生命周期和测试边界。

关注点最小 AgentDeepSeek Harness
状态真源内存 messages 数组append-only SessionEvent + projection
一次执行一次循环迭代Inbox → Turn → 1..n Step → settlement
工具结果直接 push 文本守卫管线 + 配对债务 + 统一结算
权限工具内部 ifPreset → approval → monotonic guard
长上下文截断旧消息Compaction + surface + spill + pair balance
替换实现改调用处Service definition → provider → consumer
后台协作另写一套队列Subagent / Job / Workflow / Schedule contracts
产品组合复制配置或分支Profile + Bundle + Patch + scoped disposal
USE THE SMALLEST SYSTEM THAT ANSWERS YOUR QUESTION

什么时候应该升级为 Harness?

当你需要跨进程恢复、多个客户端、可审计审批、可替换能力或多人并行维护时,明确边界开始比局部代码量更重要。

从第一原则开始
Learn DeepSeek Harness

独立教学项目。解释力来自源码,判断边界以官方仓库为准。