Problem / Motivation
修改 handle_chat_completions(约 15 行改动),在 _on_stream 旁边加 _on_progress 回调,将 tool 事件以 event:
nanobot.tool.progress 格式写入 SSE 流。与 hermes-agent 的实现模式完全一致。
Proposed Solution
nanobot/api/server.py handle_chat_completions 中新增
async def _on_progress(
text: str, /, tool_hint: bool = False, tool_events=None
):
if tool_events:
for evt in tool_events:
data = json.dumps({
"tool": evt["name"],
"toolCallId": evt["call_id"],
"status": "running" if evt["phase"] == "start" else "completed",
"arguments": evt.get("arguments"),
"result": evt.get("result"),
})
await q.put(f"event: nanobot.tool.progress\ndata: {data}\n\n")
Alternatives Considered
No response
Related Component
Channel (WeChat, Feishu, Telegram, etc.)
Additional Context
No response
Problem / Motivation
修改 handle_chat_completions(约 15 行改动),在 _on_stream 旁边加 _on_progress 回调,将 tool 事件以 event:
nanobot.tool.progress 格式写入 SSE 流。与 hermes-agent 的实现模式完全一致。
Proposed Solution
nanobot/api/server.py handle_chat_completions 中新增
async def _on_progress(
text: str, /, tool_hint: bool = False, tool_events=None
):
if tool_events:
for evt in tool_events:
data = json.dumps({
"tool": evt["name"],
"toolCallId": evt["call_id"],
"status": "running" if evt["phase"] == "start" else "completed",
"arguments": evt.get("arguments"),
"result": evt.get("result"),
})
await q.put(f"event: nanobot.tool.progress\ndata: {data}\n\n")
Alternatives Considered
No response
Related Component
Channel (WeChat, Feishu, Telegram, etc.)
Additional Context
No response