modern-fireman-99755
08/03/2026, 10:11 AMcalm-artist-7206
08/03/2026, 11:54 AMcalm-artist-7206
08/03/2026, 11:54 AMcalm-artist-7206
08/03/2026, 11:55 AMcalm-artist-7206
08/03/2026, 11:58 AMmodern-fireman-99755
08/03/2026, 12:01 PMmodern-fireman-99755
08/03/2026, 12:01 PMmodern-fireman-99755
08/03/2026, 12:10 PMSTUCK is still a hard-terminal execution_status, same tier as `FINISHED`/`PAUSED`/`ERROR`
the run loop breaks out of while True the moment it's set, before calling agent.step() again, and control returns to the caller. This PR doesn't touch that mechanism at all. All it does is move the judgment one repeat later and add an explicit message in between:
To be even more precise:
- Before: 3 identical action+error pairs, is_stuck() fires immediately, STUCK.
- Now: 3 identical, one corrective nudge is injected ("You've called X the same way 3 times and gotten the same error..."), loop continues. If the model repeats the exact same call a 4th time, STUCK, same as before, no extra iterations burned beyond that one nudge.
So it is not keep retrying but give one last chanche before stopping it. If it ignores the nudge, it's stuck exactly as terminally as it was before this PR.
Or what do you think about that?calm-artist-7206
08/03/2026, 12:11 PM{
"id": "df416fe5-d5eb-4b96-93c5-72be37e920cb",
"timestamp": "2026-08-01T18:34:00.366134",
"source": "environment",
"parent_id": "11da6fc7-560a-43fd-9df0-421ce3dced6b",
"tool_name": "terminal",
"tool_call_id": "b5ab3b22-cea8-4b00-b5e8-668f0f20ba78",
"observation": {
"content": [
{
"cache_prompt": false,
"type": "text",
"text": ""
}
],
"is_error": true,
"command": "C-c",
"exit_code": -1,
"timeout": false,
"metadata": {
"exit_code": -1,
"pid": -1,
"prefix": "[Below is the output of the previous command.]\n",
"suffix": "\n[Your command \"C-c\" is NOT executed. The previous command is still running - You CANNOT send new commands until the previous command is completed. By setting `is_input` to `true`, you can interact with the current process: You may wait longer to see additional output by sending empty command '', send other commands to interact with the current process, send keys (\"C-c\", \"C-z\", \"C-d\") to interrupt/kill the previous command before sending your new command, or use the timeout parameter in terminal for future commands.]"
},
"kind": "TerminalObservation"
},
"action_id": "11da6fc7-560a-43fd-9df0-421ce3dced6b",
"extended_content": [],
"kind": "ObservationEvent"
}
It sounds like the poor thing was trying to Ctrl+C, but that doesnāt workcalm-artist-7206
08/03/2026, 12:12 PM{
"id": "62761869-340c-4f18-996f-27a244124b70",
"timestamp": "2026-08-01T18:33:59.564123",
"source": "environment",
"parent_id": "8a4531a2-6a13-438d-85a4-7fa4b9790474",
"tool_name": "terminal",
"tool_call_id": "2ec949ee-f416-4105-8c40-ecb0eae433f0",
"observation": {
"content": [
{
"cache_prompt": false,
"type": "text",
"text": ""
}
],
"is_error": true,
"command": "C-c",
"exit_code": -1,
"timeout": false,
"metadata": {
"exit_code": -1,
"pid": -1,
"prefix": "[Below is the output of the previous command.]\n",
"suffix": "\n[Your command \"C-c\" is NOT executed. The previous command is still running - You CANNOT send new commands until the previous command is completed. By setting `is_input` to `true`, you can interact with the current process: You may wait longer to see additional output by sending empty command '', send other commands to interact with the current process, send keys (\"C-c\", \"C-z\", \"C-d\") to interrupt/kill the previous command before sending your new command, or use the timeout parameter in terminal for future commands.]"
},
"kind": "TerminalObservation"
},
"action_id": "8a4531a2-6a13-438d-85a4-7fa4b9790474",
"extended_content": [],
"kind": "ObservationEvent"
}calm-artist-7206
08/03/2026, 12:12 PMmodern-fireman-99755
08/03/2026, 12:13 PMmodern-fireman-99755
08/03/2026, 12:13 PMcalm-artist-7206
08/03/2026, 12:15 PMis_input parameter? It didnāt set it
input":falsecalm-artist-7206
08/03/2026, 12:20 PMcreate and it gives a path, but not file_textcalm-artist-7206
08/03/2026, 12:21 PMmodern-fireman-99755
08/03/2026, 12:21 PMcalm-artist-7206
08/03/2026, 12:22 PMcalm-artist-7206
08/03/2026, 12:25 PMmodern-fireman-99755
08/03/2026, 12:35 PMDoes GLM have some harness from its providerNo
what harness was used for its own evals?The GLM-4.5 technical report: arxiv.org/abs/2508.06471 From Section 4.2.3: SWE-bench Verified was evaluated using OpenHands v0.34.0 (100 iteration cap, history truncation, temperature=0.6, top_p=1.0), and Terminal-Bench was evaluated using the Terminus framework with standard function calling.
calm-artist-7206
08/03/2026, 12:39 PMmodern-fireman-99755
08/03/2026, 12:40 PMcalm-artist-7206
08/03/2026, 12:40 PMmodern-fireman-99755
08/03/2026, 12:44 PMcalm-artist-7206
08/03/2026, 12:44 PMfile_editor tool. Those Iāve seen evaluated on OpenHands are particularly likely to, since it was the file tool for a long time. In fact, weāve even seen a Nemotron (I think) which was stubbornly calling str_replace because that was the old name of this tool. š
calm-artist-7206
08/03/2026, 12:45 PMmodern-fireman-99755
08/03/2026, 1:14 PMfile_editor)calm-artist-7206
08/03/2026, 1:17 PMbenchmarks too (I think?):
https://openhands-ai.slack.com/archives/C06R25BT5B2/p1785759700460139?thread_ts=1785751907.222289&channel=C06R25BT5B2&message_ts=1785759700.460139
It's not even for the eval per se, it would be so that we see how it behaves with those tools and what kind of errors, if any, show up in a mini-evalcalm-artist-7206
08/03/2026, 1:18 PMmodern-fireman-99755
08/04/2026, 7:00 AMcalm-artist-7206
08/04/2026, 12:51 PMmillions-crayon-32880
08/04/2026, 3:29 PMmillions-crayon-32880
08/04/2026, 3:29 PMmodern-fireman-99755
08/04/2026, 3:31 PMmodern-fireman-99755
08/04/2026, 3:31 PM