Change 1: Model Upgrade (Primary Fix) - Changed default model from llama3.2 to llama3.1:8b-instruct - llama3.1:8b-instruct is fine-tuned for reliable tool/function calling - llama3.2 (3B) consistently hallucinated tool output in testing - Added fallback to qwen2.5:14b if primary unavailable Change 2: Structured Output Foundation - Enhanced session init to load real data on first message - Preparation for JSON schema enforcement Change 3: Git Tool Working Directory Fix - Rewrote git_tools.py to use subprocess with cwd=REPO_ROOT - REPO_ROOT auto-detected at module load time - All git commands now run from correct directory Change 4: Session Init with Git Log - _session_init() reads git log --oneline -15 on first message - Recent commits prepended to system prompt - Timmy can now answer 'what's new?' from actual commit data Change 5: Documentation - Updated README with new model requirement - Added CHANGELOG_2025-02-27.md User must run: ollama pull llama3.1:8b-instruct All 18 git tool tests pass.
2.3 KiB
2.3 KiB
Changelog — 2025-02-27
Model Upgrade & Hallucination Fix
Change 1: Model Upgrade (Primary Fix)
Problem: llama3.2 (3B parameters) consistently hallucinated tool output instead of waiting for real results.
Solution: Upgraded default model to llama3.1:8b-instruct which is specifically fine-tuned for reliable tool/function calling.
Changes:
src/config.py: Changedollama_modeldefault fromllama3.2tollama3.1:8b-instruct- Added fallback logic: if primary model unavailable, auto-fallback to
qwen2.5:14b README.md: Updated setup instructions with new model requirement
User Action Required:
ollama pull llama3.1:8b-instruct
Change 2: Structured Output Enforcement (Foundation)
Preparation: Added infrastructure for two-phase tool calling with JSON schema enforcement.
Implementation:
- Session context tracking in
TimmyOrchestrator _session_init()runs on first message to load real data
Change 3: Git Tool Working Directory Fix
Problem: Git tools failed with "fatal: Not a git repository" due to wrong working directory.
Solution:
- Rewrote
src/tools/git_tools.pyto use subprocess with explicitcwd=REPO_ROOT - Added
REPO_ROOTmodule-level constant auto-detected at import time - All git commands now run from the correct directory
Change 4: Session Init with Git Log
Problem: Timmy couldn't answer "what's new?" from real data.
Solution:
_session_init()now readsgit log --oneline -15from repo root on first message- Recent commits prepended to system prompt
- Timmy now grounds self-description in actual commit history
Change 5: Documentation Updates
README.md: Updated Quickstart with new model requirementREADME.md: Configuration table reflects new default model- Added notes explaining why llama3.1:8b-instruct is required
Files Modified
src/config.py— Model configuration with fallbacksrc/tools/git_tools.py— Complete rewrite with subprocess + cwdsrc/agents/timmy.py— Session init with git log readingREADME.md— Updated setup and configuration docs
Testing
- All git tool tests pass with new subprocess implementation
- Git log correctly returns commits from repo root
- Session init loads context on first message