fix: regulatory 对话模式改用 event_stream_handler 修复工具调用截断,优化节点 prompt 和日志展示
- regulatory_node: stream_working 从 run_stream 改为 agent.run + event_stream_handler, 解决工具调用后文本被截断的问题;添加 PartStartEvent 处理修复首字丢失 - consciousness_node: prompt 重写为三模式(生成/执行/报告),强调禁止编造 agent_id - workflow API: _merge_runtime_status 暴露步骤输出内容(workflow_log 第三元素) - 前端日志: 系统日志改为终端滚动样式,工作流步骤可展开查看输出 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -177,8 +177,8 @@ def _merge_runtime_status(work_link: list, workflow_log: list) -> list:
|
||||
前端 ``WorkflowDiagram`` 依赖每个 step 的 ``status`` 字段着色,这个拼装让
|
||||
后端真正把运行期状态喂过去。
|
||||
"""
|
||||
# step_index -> 最新 status
|
||||
latest_status: dict[int, str] = {}
|
||||
latest_output: dict[int, str] = {}
|
||||
for entry in workflow_log or []:
|
||||
if not isinstance(entry, dict):
|
||||
continue
|
||||
@@ -189,14 +189,16 @@ def _merge_runtime_status(work_link: list, workflow_log: list) -> list:
|
||||
continue
|
||||
if isinstance(payload, (list, tuple)) and len(payload) >= 2:
|
||||
latest_status[idx] = payload[1]
|
||||
if isinstance(payload, (list, tuple)) and len(payload) >= 3:
|
||||
latest_output[idx] = payload[2]
|
||||
|
||||
merged = []
|
||||
for i, step in enumerate(work_link or []):
|
||||
step_copy = dict(step) if isinstance(step, dict) else {}
|
||||
# step 自带的 step 字段优先,否则用位置索引
|
||||
step_idx = step_copy.get("step")
|
||||
lookup_idx = (step_idx - 1) if isinstance(step_idx, int) else i
|
||||
step_copy["status"] = latest_status.get(lookup_idx, "pending")
|
||||
step_copy["output"] = latest_output.get(lookup_idx, "")
|
||||
merged.append(step_copy)
|
||||
return merged
|
||||
|
||||
|
||||
Reference in New Issue
Block a user