Environment: Windows 11, Droid CLI v0.104.0, Zhipu official plan (glm-4.7 / glm-5.1)
Symptom A (glm-4.7)
When the model needs to call a tool, it fails to generate a structured tool_use JSON object. Instead, the tool call is leaked as plain text into the thinking field. The Droid framework receives a content
array with no executable tool calls, causing the task to hang. The user must manually send "continue" to resume.
Symptom B (glm-5.1)
The model outputs a text message saying it will continue the task, but does not include a tool_use. The task stops. The user must send "continue" to resume.
──────────────────────────────────────────
Error 1: glm-4.7 — TodoWrite call leaked into thinking
After creating a Python script to scan HTML files, the model intended to call TodoWrite but the call was leaked into thinking:
json
{"type":"message","role":"assistant","content":[
{"type":"thinking",
"thinking":"...Now I should run this script to analyze the files.\nTodoWrite\ntodos: ...\n"}
]}
Only thinking in content array. No tool_use, no text. Task hung.
User sent "继续啊" to resume.
──────────────────────────────────────────
Error 2: glm-4.7 — Read call leaked into thinking
Model said "I will translate 842 texts directly" and intended to call Read but the call was leaked into thinking:
json
{"type":"message","role":"assistant","content":[
{"type":"thinking",
"thinking":"...Let me read the full CSV file.\nRead\n{"file_path":"C:\Users\18773\Desktop\translation_template.csv"}\n"}
]}
Only thinking in content array. No tool_use, no text. Task hung.
User sent "继续你来完成" to resume, then switched to glm-5.1.
──────────────────────────────────────────
Error 3: glm-5.1 — Text without tool_use (output likely truncated)
After 3 parallel subtasks completed, the model said it would continue but stopped:
json
{"type":"message","role":"assistant","content":[
{"type":"text","text":"太好了!三批并行处理完成。继续处理剩余文件:"}
]}
Only text, no tool_use. The colon at the end suggests the output was truncated.
User sent "继续" to resume.
──────────────────────────────────────────
Summary
Model │ Total assistant messages │ Tool call leaked into thinking │ Text without tool_use │ Error rate
--------+--------------------------+--------------------------------+-----------------------+-----------
glm-4.7 │ 24 │ 2 times │ 0 │ 8.3%
glm-5.1 │ 56 │ 0 │ 1 time │ 1.8%
glm-5.1 is significantly more stable than glm-4.7, but the issue is not fully eliminated.
Key question
Could you check the raw GLM API response in Droid's logs:
- Is the tool_use / function_call already missing in the original model response?
- Or does GLM return it but Droid's parsing layer drops it?
This will help determine whether the issue is on the model side or Droid's parsing compatibility.
Environment: Windows 11, Droid CLI v0.104.0, Zhipu official plan (glm-4.7 / glm-5.1)
Symptom A (glm-4.7)
When the model needs to call a tool, it fails to generate a structured tool_use JSON object. Instead, the tool call is leaked as plain text into the thinking field. The Droid framework receives a content
array with no executable tool calls, causing the task to hang. The user must manually send "continue" to resume.
Symptom B (glm-5.1)
The model outputs a text message saying it will continue the task, but does not include a tool_use. The task stops. The user must send "continue" to resume.
──────────────────────────────────────────
Error 1: glm-4.7 — TodoWrite call leaked into thinking
After creating a Python script to scan HTML files, the model intended to call TodoWrite but the call was leaked into thinking:
json
{"type":"message","role":"assistant","content":[
{"type":"thinking",
"thinking":"...Now I should run this script to analyze the files.\nTodoWrite\ntodos: ...\n"}
]}
Only thinking in content array. No tool_use, no text. Task hung.
User sent "继续啊" to resume.
──────────────────────────────────────────
Error 2: glm-4.7 — Read call leaked into thinking
Model said "I will translate 842 texts directly" and intended to call Read but the call was leaked into thinking:
json
{"type":"message","role":"assistant","content":[
{"type":"thinking",
"thinking":"...Let me read the full CSV file.\nRead\n{"file_path":"C:\Users\18773\Desktop\translation_template.csv"}\n"}
]}
Only thinking in content array. No tool_use, no text. Task hung.
User sent "继续你来完成" to resume, then switched to glm-5.1.
──────────────────────────────────────────
Error 3: glm-5.1 — Text without tool_use (output likely truncated)
After 3 parallel subtasks completed, the model said it would continue but stopped:
json
{"type":"message","role":"assistant","content":[
{"type":"text","text":"太好了!三批并行处理完成。继续处理剩余文件:"}
]}
Only text, no tool_use. The colon at the end suggests the output was truncated.
User sent "继续" to resume.
──────────────────────────────────────────
Summary
Model │ Total assistant messages │ Tool call leaked into thinking │ Text without tool_use │ Error rate
--------+--------------------------+--------------------------------+-----------------------+-----------
glm-4.7 │ 24 │ 2 times │ 0 │ 8.3%
glm-5.1 │ 56 │ 0 │ 1 time │ 1.8%
glm-5.1 is significantly more stable than glm-4.7, but the issue is not fully eliminated.
Key question
Could you check the raw GLM API response in Droid's logs:
This will help determine whether the issue is on the model side or Droid's parsing compatibility.