提交前确认 · Pre-submission checklist
问题类别 · Category
工具调用 / MCP · Tool use / MCP(伴随计费 / 配额影响)
涉及的 Agent 框架 · Agent framework
ZCode Agent(自研)
严重程度 · Severity
影响体验 · Major(无人值守场景下造成巨额 token 损失,具备计费风险)
复现频率 · Reproducibility
仅一次 · Once(触发面明确:effort=max + 数十 KB 内联工具入参,见根因分析)
问题描述 · Description
GLM-5.3-Flash(effort=max)在提交动态工作流(CreateWorkflow,script 参数内联约 24KB 脚本)时发生「工具发射退化」:模型每轮文本自述"现在调用 CreateWorkflow / 以 path 重新提交",实际发射的工具调用却始终是编号占位 Bash(echo "placeholder-x1" 递增至 x1482+),连续约 5 小时、每 15 秒一轮。框架侧因无单 turn token/时长熔断、无重复调用检测,任由其每轮全量重发持续膨胀的上下文,直至跑满迭代上限(约 149 轮)才停,最终消耗约 3 亿 token,任务本身未完成。
复现步骤 · Steps to reproduce
- ZCode CLI 0.16.9,渠道 bigmodel-start-plan,模型 GLM-5.3-Flash,effort=max,无人值守运行长任务;
- 任务中需要调用 CreateWorkflow,且
script 参数内联大体积脚本(本例约 24KB 的 .dwf.ts 工作流草案);
- 模型进入「公告代替调用」退化状态:连续发出
echo "placeholder-xN" 占位 Bash(N 递增),每 15 秒一轮;
- 持续约 5 小时,直至单 turn 迭代上限(约 149 轮)触顶,最后一轮才第一次真正发出 CreateWorkflow 调用。
期望表现 · Expected behavior
- 单 turn 有可配置的 token / 时长硬熔断:达到阈值强制收束并向用户汇报,而不是只靠迭代计数兜底;
- 有退化检测:连续 N 次近似重复的工具调用(尤其全部成功返回却无实质进展)自动中止该 turn 并提示用户。
实际表现 · Actual behavior
- 工具调用共 1870 次,其中 ≥1482 次为编号占位 echo;模型请求约 1870 次,节奏稳定在每 15 秒一次,持续约 5 小时;
- 每轮全量重发持续膨胀的上下文:末期单次请求携带 3977 条消息,请求体 1.19MB(估算约 40 万 token/次);累计 ≈1900 次 × 平均 15–20 万 token ≈ 3 亿 token,与控制台口径一致;
- 05:45 迭代上限触顶后停止;最后一轮才第一次真正发出 CreateWorkflow 调用,流程停在待确认状态,工作流从未运行(无任何 run 记录);
- 代码仓库零改动、无副作用;唯一产物是一份 gitignore 的草案文件,任务本身(CR 登记 + 处理意见 Excel)未完成。
ZCode 版本 · ZCode version
0.16.9
设备 / 系统 / 浏览器 · Device / OS / Browser
Windows 11 x64(10.0.26200)/ Git Bash / 渠道:bigmodel-start-plan(zcode-plan/anthropic 端点,SSE 传输)/ 模型:GLM-5.3-Flash(thinking enabled、output_config effort=max、max_tokens=128000、tools=51)
截图 / 录屏 / 日志 · Screenshots / Recordings / Logs
证据均来自本地结构化日志(zcode-2026-09-25.jsonl)与 model-io 请求/响应转录:
-
不是「调了被拒」:保留窗口内(112 条请求)dynamic-workflows skill 已加载,无任何 CreateWorkflow 拒收回执;整个窗口仅最后一轮出现 1 次 CreateWorkflow tool_use。即模型从未把该调用发射出去,与其文本自述完全脱节;
-
无 provider 错误、无重试风暴(attempt 均为 1),是稳定的"自说自话"循环;
-
会话:sess_94e914f2(工作区路径部分打码:E:\…\01_TMS);
-
最后一轮模型文本自述原文(每轮均为类似表述):
「现在调用 CreateWorkflow 提交修订后的脚本文件:」「文件内容完好。提交:」「草稿文件在位且修复已落盘。提交:」
——随后实际发出的却是:
{"command": "echo \"placeholder-x1481\"", "description": "占位"}
根因分析与建议
- 模型侧(直接原因):GLM-5.3-Flash(effort=max)在「内联数十 KB 脚本的大体积工具调用」上发生发射退化——意图正确的文本与实际 tool_use 脱钩,用小占位调用替代,且占位每次成功返回,循环自我强化近 5 小时;
- 框架侧(放大原因):无 token/时长预算,唯一护栏是约 149 轮的迭代上限;无退化检测,哪怕"连续 N 次调用高度相似即中止"的简单规则都能在十几轮内止损。
希望解决的:
- 单 turn token / 时长硬熔断(可配置),达到阈值强制收束并汇报;
- 重复/退化工具调用检测:连续 N 次近似重复调用自动中止并提示用户;
- 大体积工具调用的防退化引导:对 inline script 类大参数调用,建议/引导使用文件路径引用(如 CreateWorkflow 的 path 模式),缩小退化触发面;
- 如模型侧可反馈:GLM-5.3-Flash 在 effort=max + 大 inline 工具入参场景下的"公告代替调用"退化值得排查。
可应要求提供脱敏后的日志片段。
提交前确认 · Pre-submission checklist
问题类别 · Category
工具调用 / MCP · Tool use / MCP(伴随计费 / 配额影响)
涉及的 Agent 框架 · Agent framework
ZCode Agent(自研)
严重程度 · Severity
影响体验 · Major(无人值守场景下造成巨额 token 损失,具备计费风险)
复现频率 · Reproducibility
仅一次 · Once(触发面明确:effort=max + 数十 KB 内联工具入参,见根因分析)
问题描述 · Description
GLM-5.3-Flash(effort=max)在提交动态工作流(CreateWorkflow,script 参数内联约 24KB 脚本)时发生「工具发射退化」:模型每轮文本自述"现在调用 CreateWorkflow / 以 path 重新提交",实际发射的工具调用却始终是编号占位 Bash(
echo "placeholder-x1"递增至 x1482+),连续约 5 小时、每 15 秒一轮。框架侧因无单 turn token/时长熔断、无重复调用检测,任由其每轮全量重发持续膨胀的上下文,直至跑满迭代上限(约 149 轮)才停,最终消耗约 3 亿 token,任务本身未完成。复现步骤 · Steps to reproduce
script参数内联大体积脚本(本例约 24KB 的 .dwf.ts 工作流草案);echo "placeholder-xN"占位 Bash(N 递增),每 15 秒一轮;期望表现 · Expected behavior
实际表现 · Actual behavior
ZCode 版本 · ZCode version
0.16.9
设备 / 系统 / 浏览器 · Device / OS / Browser
Windows 11 x64(10.0.26200)/ Git Bash / 渠道:bigmodel-start-plan(zcode-plan/anthropic 端点,SSE 传输)/ 模型:GLM-5.3-Flash(thinking enabled、output_config effort=max、max_tokens=128000、tools=51)
截图 / 录屏 / 日志 · Screenshots / Recordings / Logs
证据均来自本地结构化日志(zcode-2026-09-25.jsonl)与 model-io 请求/响应转录:
不是「调了被拒」:保留窗口内(112 条请求)dynamic-workflows skill 已加载,无任何 CreateWorkflow 拒收回执;整个窗口仅最后一轮出现 1 次 CreateWorkflow tool_use。即模型从未把该调用发射出去,与其文本自述完全脱节;
无 provider 错误、无重试风暴(attempt 均为 1),是稳定的"自说自话"循环;
会话:sess_94e914f2(工作区路径部分打码:
E:\…\01_TMS);最后一轮模型文本自述原文(每轮均为类似表述):
——随后实际发出的却是:
{"command": "echo \"placeholder-x1481\"", "description": "占位"}根因分析与建议
希望解决的:
可应要求提供脱敏后的日志片段。