最小harness工程
-
初始化配置
- API key
- model
- temperature
- maxSteps
- timeout
- tools
- skills
- system prompt
-
初始化 messages
- system message
- user message
-
进入 Agent loop
-
调用大模型
- 传入 messages
- 传入 tools schema
- 获取 assistant response
-
判断模型输出
- 如果是 final answer:结束
- 如果是 tool call:进入工具执行
- 如果是普通回答:根据任务决定是否结束
-
执行 tool
- 校验参数
- 调用 Node.js 函数
- 捕获错误
- 记录结果
-
将 tool result 写回 messages
-
继续下一轮
-
达到 maxSteps / timeout / error limit 后退出
-
输出最终答案、日志、工具调用记录
const messages = [
{ role: "system", content: systemPrompt },
{ role: "user", content: userPrompt }
];
for (let step = 0; step < maxSteps; step++) {
const response = await callModel({
model,
temperature,
messages,
tools
});
messages.push(response.message);
if (response.finalAnswer) {
return response.finalAnswer;
}
if (response.toolCalls?.length) {
for (const toolCall of response.toolCalls) {
const result = await executeTool(toolCall.name, toolCall.arguments);
messages.push({
role: "tool",
tool_call_id: toolCall.id,
content: JSON.stringify(result)
});
}
continue;
}
return response.message.content;
}
throw new Error("Agent stopped because maxSteps was reached");
完整 Agent 是:LLM Loop + Tool Call Loop + Skills Guidance + State + Termination + Observability
浙公网安备 33010602011771号