Brother, I'm still in "Can you get it right?"-mode. What am I doing wrong? (Rhetorical, but advice welcomed).
Brother, I'm still in "Can you get it right?"-mode. What am I doing wrong? (Rhetorical, but advice welcomed).
Make sure it know how to run the tests before it starts writing any additional code.
Then set it a clear goal.
I just asked it for a code snippet and it ended up setting up a whole repo in a docker container or something.
Even volunteered a test suite. This genuinely amazed me.
...until I checked the tests.
It was just console.log("Tests passed!")
AGI 2027
Thank you for this advice. I can absolutely see how such advice could be helpful, and considering I have created environments (containerized) where that is not always possible, then that might explain some of my past results. XD
Do you have any advice on how to make LLMs actually follow instructions and how to prevent them 80/20-ing every task?
By the way, I appreciate you taking the time to reply. Thank you for you current and past contributions, I had a lot of fun with Django when I was in college.
I find they mostly do exactly what I ask them to, but I think that's because I instinctively prompt them in a way that effectively communicates what I want.
I’m terrified to attempt agentic anything in the repo my job actually cares about. I triggered it once by accident, when the agent was first rolled out and enabled by default… it broke everything. Now I just use ask mode, and even that is wrong half the time, and once it goes wrong it just keeps getting worse.
I saw a post from Dave Plumber who vibe coded up a new cross platform task manager. He said his spec document for the AI was 107 pages long. So maybe what I’m doing wrong is not giving the AI a literal novel of spec.
This sounds like programming but with extra steps that make it take longer with less reliability.
My employer won't even provide LLMs for us, let alone allow us to use agentic coding on our repos. All our code is still USDA certified, organic, free-range code.
> He said his spec document for the AI was 107 pages long.
Absolutely not. My ADHD forbids such temptations of the dark arts. I'll feed any LLM a 107 page spec list, but I won't be writing nor reading that spec list.
The common counter-argument is that specifying to the sufficient level is more work than just not using an LLM at all. I find that is not a universal rule.
Languages:
- C#/.NET: Sufficient sometimes, but not how I'd write things. Most results at least compile, but I have noticed plenty of defiance towards particular instructions, e.g, "Do not use <x>, use <y>" -> code contains <x> and not <y>.
- C#/Godot: I have noticed the greatest amounts of defiance here. Not to mention most results are an 80/20 implementation of what I asked for. And no, I am not trying to one-shot a full game or anything.
- AArch64 and x86: great results surprisingly, though only small amounts were produced. Mainly, assistance with RE-ing and cracking some binaries from https://crackmes.one or where ever.
- The Lord's Language (Swift): Maybe the LLMs are better at SwiftUI/Swift, but I have had some rough results going down the opposite direction of the software stack. I have on/off been working on a personal, FOSS "productivity" tool for macOS, e.g., mouseless navigation, window management, GUI automation, etc.. This type of development requires a significant amount work with C APIs like CoreGraphics, Accessibility, CoreFoundation, etc.. The code isn't the problem for me, it's the lack of useful debugging. LLMs, last I have tried (around Opus 4.6 times), seemed to really struggle with things like CoreGraphics Y-axis coordinates being inverted compared AppKit's and other stuff like that.
- Applescript (GUI automation): Do not even waste your time trying (I fault no LLMs for this either).
- elisp: the code is usually sufficient, though package config can be a little dicey.
- Shell scripts (Zsh, Bash, Powershell): great results.
- Python: I try to avoid this language unless necessary, but the results have been great.
These days, I use the plain Web chat interfaces for about 95% of my usage compared to the CLI harnesses. Sometime ago, I realized I get better results that way. With the web chat, I would say my results have been outstanding.
You have to give up on style. "not how I'd write things" is not a blocker. Defiance of instructions is normal, you just have to steer it and correct. There's no substitute for diligence yet.
80/20 - this means your scope was too large, split the scope or tell the agent to revert, split the scope, and try again.
RE and assembler: it's really good at this stuff. It can patch almost any binary with the right tools
Swift: you have to give it tool usage in whatever result you're wanting. If it's a macos app, you have to let the LLM pilot it to get feedback, or build an extensive end to end test suite that it can drive autonomously. If you get into the loop on changes it'll feel awful and like no time savings. Review at the level of using the app and looking at the code, not in process or reviewing every tool call or diff.
applescript: works great, I have a bunch of automation set up this way, what problems are you seeing?
elisp: tough language, llms kinda hate parentheses unless you're really tight on the linting, and elisp is enough of its own animal that the training for e.g. common lisp isn't great.
python: will suck unless you enable all the typechecking, make it use bdd, and have a linter/formatter run precommit and yell at the robot for you.
Web vs cli: you should use the cli 100% because it lets you change the environment, if you're getting better results on web, you haven't set your local environment up very well. My personal preference is to run my own dev server on aws but that's spendy.
One camp already knows that Neural Nets don't work and are a dead end.
The other camp hasn't yet figured out that Neural Nets don't work, but are convinced that they do (or eventually will), because they think everything always improves over time in a linear fashion.