System-Hint Agent Changelog¶
2026-07-18 - kimi-k3 (reasoning model) + offline status-bar preview¶
Changes Made¶
- Default model is now
kimi-k3(Moonshot's current flagship reasoning model), replacing the retiredkimi-k2-*-previewline.provider="kimi"/"moonshot"both resolve tokimi-k3unless--modeloverrides it. - Reasoning-model handling:
kimi-k3returns a separatereasoning_contentfield alongside the finalcontent. The agent reads the answer fromcontent(FINAL ANSWER detection unchanged), calls withmax_tokens=8192(well above the reasoning minimum of 2048), and forcestemperature=1for reasoning models via_reasoning_safe_temperature()(kimi-k3 / gpt-5). Assistant turns are replayed withmodel_dump()(which includesreasoning_content); the Moonshot API accepts this on follow-up calls, so multi-turn tool loops work unchanged. - Offline status-bar preview (
python main.py --mode preview): renders all five status-bar techniques as before/after comparisons with no API key and no LLM call. Honors--no-timestamps/--no-counter/--no-todo/--no-errors/--no-stateto isolate individual techniques.
2025-09-30 - Trajectory Logging Enhancement¶
Changes Made¶
1. Full LLM Messages in Trajectory¶
Added tracking of the complete messages list sent to the LLM, including system hints:
- Added field:
last_llm_messagestoSystemHintAgentclass - Stores the full messages array sent to the LLM, including the system hint appended as a user message
-
This differs from
conversation_historywhich only stores the base conversation without the dynamic system hints -
Modified methods:
__init__: Initializelast_llm_messages = Noneexecute_task: Capturemessages_to_sendbefore LLM call and store asself.last_llm_messages_save_trajectory: Includelast_llm_messagesin the trajectory JSON outputreset: Resetlast_llm_messagestoNone
2. Real System Time (No Mock Time)¶
Verified and ensured real system time is used throughout:
- Default configuration:
simulate_time_delay = False(line 68 in agent.py) - When
False, usesdatetime.now()for all timestamps -
When
True(only for demos), uses simulated time -
Timestamp sources:
_get_timestamp(): Usesdatetime.now()whensimulate_time_delay=Falsetrajectory_data['timestamp']: Always usesdatetime.now().isoformat()- Tool call timestamps: Always use
datetime.now().isoformat() - TODO item timestamps: Always use
datetime.now().isoformat()
Benefits¶
-
Complete LLM Context: The
last_llm_messagesfield in trajectory.json now shows exactly what was sent to the LLM, including dynamic system hints about current state, TODO list, timestamps, etc. -
Debugging: Easier to debug agent behavior by seeing the complete context the LLM received, not just the conversation history
-
Accurate Timestamps: All timestamps reflect real system time for accurate trajectory analysis and debugging
Example Trajectory Structure¶
{
"timestamp": "2025-09-30T20:26:32.057323",
"iteration": 1,
"provider": "kimi",
"model": "kimi-k3",
"conversation_history": [
{"role": "system", "content": "..."},
{"role": "user", "content": "[2025-09-30 20:26:00] Task..."},
{"role": "assistant", "content": "..."}
],
"last_llm_messages": [
{"role": "system", "content": "..."},
{"role": "user", "content": "[2025-09-30 20:26:00] Task..."},
{"role": "assistant", "content": "..."},
{"role": "user", "content": "=== SYSTEM STATE ===\nCurrent Time: 2025-09-30 20:26:32\n..."}
],
"tool_calls": [...],
"todo_list": [...],
"current_directory": "/path/to/dir",
"final_answer": null,
"config": {
"enable_timestamps": true,
"enable_tool_counter": true,
"enable_todo_list": true,
"enable_detailed_errors": true,
"enable_system_state": true,
"timestamp_format": "%Y-%m-%d %H:%M:%S",
"simulate_time_delay": false
}
}
Differences: conversation_history vs last_llm_messages¶
- conversation_history: Permanent record of the conversation between user and assistant
- System prompt
- User messages (with timestamps if enabled)
- Assistant responses
-
Tool call messages and results
-
last_llm_messages: Complete snapshot of what was sent to LLM in the last call
- Everything from conversation_history
- PLUS: Dynamic system hint appended as final user message
- Shows current system state, TODO list, directory, time
- This is what the LLM actually sees when making decisions
Testing¶
All changes have been tested and verified:
- ✅ last_llm_messages correctly captured and saved
- ✅ Real system timestamps used (not simulated time)
- ✅ Trajectory JSON format validated
- ✅ No linter errors
- ✅ Backward compatible with existing code