{"slug": "coding-agents-make-effective-tutors", "title": "Coding Agents Make Effective Tutors", "summary": "A developer writing on cmart.blog reports that running a local Qwen 3.8 27B model in the Pi coding harness with a \"TUTOR MODE ACTIVE\" system prompt turns an LLM agent into a personalized, interactive programming tutor that proposes incremental exercises and withholds complete solutions. The setup appends the prompt via `--append-system-prompt tutor.md` and strips file-editing tools with `--exclude-tools edit,write`, leaving `bash` available for verification, and the author says the approach increased his motivation for non-machine learning of TypeScript after years of web development in a compile-to-JS language.", "body_md": "# Coding Agents Make Effective Tutors\n\n[ai](https://cmart.blog/tags/ai)\n\n[computers](https://cmart.blog/tags/computers)\n\n[manage-thyself](https://cmart.blog/tags/manage-thyself)\n\nThis is not how most people use them, but there is a way for LLM agents to bring your mind and fingers closer to the code instead of further away, so that you feel more practiced, not out-of-touch. When you give them a tutor-specific system prompt, modern LLMs in a harness adapt well to a **personalized, interactive tutoring role**. I’ve done enough of this to report that it has increased my net motivation for the cognitive work of *non-machine* learning, despite its increasingly-questioned economic value.\n\nTutoring does not need a big or expensive model. I’m using Qwen 3.8 27B ([on my own GPU](https://cmart.blog/slop-machine/)), but there’s nothing Qwen-specific about this approach. (I’ve resisted the urge to title this post ‘Qwehn Academy’.)\n\nThis feels *almost* too obvious to share. I am sure other people have figured out a tutoring agent persona. But my way is good because it’s very simple. I expect it can work in any harness.\n\n## cmart’s Tutor Mode\n\nI put the following text in the agent’s system prompt.\n\n[TUTOR MODE ACTIVE]\n\nYou are a tutor, not a doer. The user is learning by doing.\n\n- Propose a concise plan which breaks their goal into incremental exercises. Ask the user to accept or modify the plan.\n- Give one next exercise at a time, with minimal scaffolding. If the user asks for more help, provide signatures, hints, or pseudocode, but they still must write the code themselves.\n- Never write a complete solution unless explicitly asked.\n- Explain tradeoffs when asked. Give isolated practice exercises when asked.\n- When the user says they’ve solved it or asks you to check: read their changed files and run the relevant code/tests. Point out anything wrong as a question or minimal hint first. Only show the fix if they’re stuck after hints.\n- You may read files and run commands to verify their work. Never modify the user’s files on their behalf unless explicitly asked.\n- Wait to ask the user to remove debug statements and other scaffolding until they’ve successfully achieved their goal.\n\nI’m using [Pi](https://pi.dev), so I save this as a file called `tutor.md`, and start Pi with `--append-system-prompt tutor.md`. Your agent will have a similar option. (You don’t want to *fully replace* the system prompt, else the LLM won’t know how to use the harness.)\n\nOptionally, we can also take away the agent’s tools to modify files. Modern LLMs are post-trained to push ahead and solve tasks, so this prevents the tutor from giving into their urge to finish the student’s homework. In Pi, I pass this argument: `--exclude-tools edit,write`. It can still use `bash` to run commands, useful because often the LLM wants to try something in order to troubleshoot or formulate an exercise. (Yes, it *could* modify your files using a shell command, but this is not its usual way of doing so. The guard rail has worked for me, so far.)\n\nSo combined, that’s saving the above system prompt to tutor.md, and starting Pi with:\n\n```\npi --append-system-prompt tutor.md --exclude-tools edit,write\n```\n\nAlso optionally, set your agent to hide the thinking traces. For ’normal’ agent use you might want to see these, but in tutor mode you don’t want to accidentally see a solution before the LLM prompts you with the exercise. The Pi setting is `hideThinkingBlock`, which you can set inside Pi via `/settings`.\n\nThat’s all you need to get started! I made a `runpi-tutor` shell alias that creates a new Podman container with the current directory mounted and Pi running as above. I might further package up the tutor parts as a harness plugin. But reader, all you *really* need is the system prompt.\n\n## What’s it Like to Use This?\n\nIt’s better to just try it yourself, but, okay.\n\nI was rusty and under-practiced with ‘plain old’ TypeScript after years of web dev in [a compile-to-JS language](https://elm-lang.org/), so I asked the tutor to help me re-write my [goofy timer app](https://gitlab.com/cmart/unpostponable-pomodoro-timer) in TypeScript for learning purposes. [Here is the session transcript](https://cmart.blog/img/tutor-mode/pi-session-2026-10-06T18-17-25-081Z_01a1126f-4759-7002-bd36-12c9c6b5b633.html) where I was playing only *a little* dumb. Go and skim it. (If you’re wondering where the tutor mode instructions are, click on the system prompt to expand it.)\n\nIt worked well and felt very engaging. It seems that my tutor is good at introducing concepts incrementally and scoping exercises toward a goal. It feels at least as much fun as my earliest Python practice, when I worked increasingly-hard puzzles on [CheckIO](https://checkio.org). But it’s better, because this tutoring is infinitely adaptive as your goal evolves, and as you encounter points of difficulty. At *any* time you can request a hint, or ask clarifying questions, and the agent will adapt. You can give it a half-finished exercise, and a moment later, get back a new one that helps me through the part you’re stuck on.\n\nTutoring with a *harnessed* LLM is an obviously richer interface than a chat window alone, because the agent can be appropriately *in* the workspace. When you want feedback, you can just say “I’m ready” or “stuck on XYZ”. It can inspect your progress (and run your code) with no need to copy the work back and forth.\n\nI have since done several more tutoring sessions to improve the app’s permission handling for audio and notifications, refactoring to make the code more idiomatic, improve testability, and so on.\n\nThe one time the tutor has not worked great so far, leading me astray with bad advice, was asking for help selectively parsing arguments in a [Fish](https://fishshell.com) script. I did still learn by doing, but with a flavor of troubleshooting the dumb tutor’s mistakes. There is a lot less Fish training data out there than for (e.g.) TypeScript, so the takeaway for niche topics might be: put the relevant reference material into the context window (or ask the LLM to go find/ingest docs) prior to tutoring, or maybe use a bigger/stronger model than Qwen 3.8 27B.\n\n## On Correctness\n\nI imagine some folks saying they wouldn’t trust an AI tutor that can hallucinate. To this I would say: the tutor doesn’t need to be perfectly correct or trustworthy in order to be *effective*. Sometimes professors are wrong, and discovering this can feel motivating to the student.\n\nAlso, we know that hallucination will happen less often for topics where the output of cognitive work is machine-verifiable. If the learning topic happens to look like computer programming, RLVRed LLMs swim most natively in these waters. Before the agent presents its own guidance, it can (and in my experience, sometimes does) check its assumptions in whatever code execution environment it has access to. That said, I expect this general tutoring approach could also work for topics other than programming. Just haven’t tried yet.\n\nAlso, much of facilitating the learning process is just keeping track of where the student is and nudging them to try the next step. This is an easier job where correctness isn’t as important.\n\n## Implications\n\nI am not claiming, in late 2026, that acquiring computer programming skills is an economically-optimal activity. But if you’re studying for the sake of mastery and skill, it’s possible there has never been a better time.\n\nAggressive auto-didactism is a rare character trait. Most people benefit from a learning plan, hints, and individual feedback. And now we have, at least for some topics, a pretty good way to make all of this stuff with machines, and it’s accessible at a cost that approaches free at the marginal hour or session. So, it seems easier than ever to lift one’s mindset of “I’d like to learn this” into “I’m now learning this”.\n\nAccess to this kind of tutoring might have transformed my experience in college. I couldn’t afford a human tutor and didn’t even imagine that could be helpful. But if I had a mid-2026 tutoring agent on my desk, my 2007 freshman self may have gone for a more-difficult major.\n\nAt risk of repeating myself, unlike the most common way to use coding agents, tutor mode seems to make you **better and more-practiced, not worse and less-practiced, at working with code yourself**. Even if we’ll always have LLMs going forward, this could make you better, not worse, at later extending and maintaining your codebases without LLM help. On this point, it’s probably good to work without *any* agent sometimes. I found myself naturally doing that when I wanted to make changes that I didn’t feel the need for tutoring on.\n\nI am also not here to make claims about the future viability of tutoring as a way for a human to earn a living, though it seems that underwater welding tutors will have an irreplaceable niche for longer than introductory JavaScript tutors.", "url": "https://wpnews.pro/news/coding-agents-make-effective-tutors", "canonical_source": "https://cmart.blog/tutor-mode/", "published_at": "2026-10-19 19:00:00+00:00", "updated_at": "2026-10-19 23:16:49.975362+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "large-language-models", "developer-tools", "artificial-intelligence"], "entities": ["Qwen 3.8 27B", "Pi", "Podman", "TypeScript", "Elm", "cmart.blog"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/coding-agents-make-effective-tutors", "markdown": "https://wpnews.pro/news/coding-agents-make-effective-tutors.md", "text": "https://wpnews.pro/news/coding-agents-make-effective-tutors.txt", "jsonld": "https://wpnews.pro/news/coding-agents-make-effective-tutors.jsonld"}}