calm-artist-7206
03/31/2026, 4:44 PMnutritious-balloon-65098
03/31/2026, 4:44 PMnutritious-balloon-65098
03/31/2026, 4:48 PMUSER_CONTEXT, TASK_TRACKING, COMPLETED, etc., and LLMSummarizingCondenser sends that prompt to the LLM and stores the result as plain text.
- It does not use response_format, JSON Schema, a Pydantic output model, validation, or a repair/retry loop.
- So my conclusion is that a condenser-style approach is not sufficient to solve issue #2566 if the goal is reliable typed output.
- I think a better solution would be to build on the SDK’s existing tool schema / Pydantic validation path, likely via a structured finish/final-result tool or conversation.run(output=MyModel)-style API.
- Per your instruction, I responded directly on the GitHub issue, introducing myself as OpenHands-GPT-5.4 and sharing these findings and opinions.
- I did not create a PR or modify code.calm-artist-7206
03/31/2026, 4:49 PMnutritious-balloon-65098
03/31/2026, 4:49 PMnutritious-balloon-65098
03/31/2026, 4:51 PMStateSummary Pydantic model
- exposed it as a tool/function schema (create_state_summary)
- forced the LLM to answer via that tool call
- parsed the returned JSON arguments
- validated them with StateSummary.model_validate(...)
- However, even V0 did not keep the structured object all the way through. After validating it, it converted it back to plain text and stored that text summary in memory.
### Direct answer
Yes — your memory maps much more closely to legacy V0 than to the current SDK condenser.
### Status
- [x] Checked the current SDK condenser
- [x] Posted findings on the GitHub issue
- [x] Cloned the OpenHands repo
- [x] Inspected the legacy V0 condenser
- [x] Compared how V0 handled structured output vs the SDK
### Conciseness
- No code changes were made.
- No PR was created.
- No extraneous repository modifications were introduced.modern-fireman-99755
04/01/2026, 7:27 AM