Investigation: can python-vibe be everyday laptop work?
Answer: no — not this 0.5B LoRA. Comfortable daily explore / edit / run needs a larger model, tool-use training, and a local editor connected to Ollama. Keep python-vibe-0.5b as a cheap draft + harness.
Related: research-vibe-review · local loop vs hosted agents · what to improve · issues #8, #9.
What everyday laptop work means
You open a repo and talk. The model explores, edits files, runs tests, and keeps a short plan. That is comfortable daily work. The weights need to be large enough to emit tool calls.
python-vibe today is a 400 MB style prior plus scripts:
| Surface | What it does |
|---|---|
vibe.py |
One prompt → one small Python draft → /run |
batch_review.py |
One small file at a time, up to 100 |
agent.py |
Text protocol: map / plan / glob / grep / read / edit / patch / run / done |
The 0.5B model misses Action: lines. agent.py only feels daily-usable when
--model is something like llama3.1:8b.
Measured gap
Held-out laptop tasks (LoRA + harness): weekday name, count .md, jsonl
reader, tiny docstring apply — all failed (wrong main(), month-as-
weekday, filtered the word "bad", junk docstring). Base
qwen2.5-coder:0.5b failed the same class.
OpenSRE: 100 smallest first-party files (200–2500 bytes) → 100× “no issues”, 0 applied. That is not a review.
What will not work
- More steps on the 0.5B run (already overfit after step 100).
- More short stdlib pairs only (issue #9: this is a style prior).
- Asking the 0.5B weights to plan a repo.
What to do
- This week.
scripts/run/agent.pydefaults tollama3.1:8b. Local editor: local-editor.md.scripts/run/openai_compat.pyproxies/v1/chat/completions.scripts/weights/export_ollama.py --createnamespython-vibe-everyday. - Your model.
scripts/weights/build_agent_data.pywrites seed tool traces (data/agent-loop).scripts/weights/train.py --everydayis the 7B-class LoRA. Append redacted explore / edit / run sessions before claiming 2k traces. Fuse/GGUF:export_ollama.py --from-gguf. - Eval.
scripts/measure/eval_everyday.py(offline in CI).--livemust beat untuned 8B on parse rate before anyone says everyday-ready.
0.5B stays public for download, CI, and the harness demo. It is not the everyday brain.
Shipped in this repo (laptop path)
scripts/run/agent.pydefaults tollama3.1:8b.--tinyis the sidecar.scripts/run/openai_compat.py+ local-editor.md for a local OpenAI-compatible editor.- Seed tool traces +
--record→data/agent-loop/extra.jsonl(gitignored). scripts/weights/train.py --everyday(7B-class MLX).export_ollama.py --createnames the stand-in; GGUF of your LoRA is--from-gguf.scripts/measure/eval_everyday.py: gold weekday + count-md/run, ≥1 KB NameError fixture, Action: parse fixtures.--liveon this machine (29 Aug 2026):llama3.1:8bparsed 2 / 3 prompts (above the 50% floor). 5 September 2026, same machine: harness parse 11 / 15 vs clean 0 / 15; harness failed the ≥1 KB logic fix 0 / 3 (two writes were tests only). After #229 (same evening): parse 10 / 15 vs 0 / 15; fix still 0 / 3, writes[]× 3. After #238 (refuse explore): parse 11 / 15 vs 0 / 15; fix still 0 / 3, writes[]× 3. After #246 (same evening): parse 9 / 15 vs 0 / 15; harness fix 3 / 3 with no model turns (the harness wrote the sum) while a clean one-shot passed 3 / 3. A whole-linereturn 0on a named sum is compiler-class, likesubtotlandpage=. That ≥1 KB cell is retired as a model job. Do not remasure it. The live cell isclipineval/fixtures/everyday_live(filter vs clamp), scored only when turns are non-empty. After #254 (same evening): parse 8 / 15 vs 0 / 15; harness fix 0 / 3 (steps× 2,done× 1; writes[]× 3; turns non-empty) while a clean one-shot passed 3 / 3. The model ran. It did not writeclip. Everyday-ready is still not met. Replay:PYTHONPATH=src python scripts/measure/eval_everyday_bar.py.
Live agent.py + llama3.1:8b loops on this machine (29 Aug 2026):
- NameError fixture copy: read →
Find: return tota→ tests OK → done (4 steps). - This repo: patched
scripts/run/agent.pydocstring topython3.13. - Failed: full-file
editwipedtests/test_agent_tools.py(20% length guard was too weak). Guard is now 2/3 of original; file restored by hand. - This repo: patched
resolve_project_fileto allow.md. - This repo: patched README agent example to
python3.13.
The loop works on scoped patch tasks. It is comfortable daily work on small, well-scoped jobs — not a full-repo rewrite.
Small vs large (29 Aug 2026)
Same CLI, two briefs (no extra model):
- Small (≤40 first-party text files, ≤200 KB): inject the file list.
Questions → read →
Action: done. Bugs → patch → run. This is the everyday laptop path. - Large: inject top-level counts, require
Action: map,--scope, and truncated grep. Do not ask the 8B to read the whole tree.
PYTHONPATH=src python3.13 scripts/run/agent.py --project /path/to/app --brief
prints the mode without calling Ollama.