I mainly use mistral, so that's my reference, but I know anthropic et.al have similar models around.
Codestral is rediculously bad at conversation, but it's -for me- the best model around for "magic autocomplete". It's also pretty good at "one shot" prompt+context generations, e.g. to make "git commit log entries".
Document.AI is unusable bad in a conversation style, but really good when wired up to a simple pipeline as "replacement" for OCR or for indexing "meaning" from documents (I'm experimenting with it for my administration, to get invoices, contracts etc into a search tool).
I presume there are many others like it.
So, what you describe, is already in place. I guess mostly the "interfaces" are missing for you, or hard to discover maybe?
For example, a dedicated model with tool I'd like, is some "shell" -a zsh or bash fork or some wrapper- backed with a dedicated model, trained for "commandline interaction".
Where instead of "git commit --fixup=[opens another terminal to git log the relevant entry]", we can "git fixup the commit that fixes full names" or "ffmpeg convert some.mov to mp4 without sound but keep quality and ratio etc". Or "run any valid tar command - you have ten seconds".
I'm now using the way too heavy "devstral" for these tasks. I don't need it reasoning, conversing, apologising. I need it translating my requests into commands, then showing these to me so I can deny/allow/whitelist/blacklist them and then run them - to interpret *and show me* errors and suggest improvements or fixes etc.
Same for - indeed - translation, writing draft mails, reading documents, etc: I don't need to converse with it. I want to have buttons, shortcuts, "tab complete" etc that's "smart" enough to understand what I need and want, preferably tunable by editing "system prompts" or such and then get out of my way.
I think the company that figures this out for my IDE will win the competition-race of "AI coding tools".
Just today, I found, zed presented a button "git conflict found, resolve with AI" . When pressed, it did start a conversational thread, but its a step in the right direction.
That's definitely an issue. Mind you, the general population is not a developer. I'm a mechanical engineer. I can code, use an IDE, but I hate having to figure out tooling the way you describe, and it's not a skill I'm interested in developing. What you are describing sounds to me like someone using vim and a terminal trying to convince me to stop using CLion, because they can make anything CLion can do work with their setup. Sure, I believe it, but for my part I'm going to wait for the features to be well integrated into finely designed software, I'm not going to duct-tape this stuff together to get a workflow that still involves writing out and tweaking prompts.
It also sounds to me that the AI/LLM vendors are still in a phase where they are trying to figure what the actual workflow should look like so they let their power users do that work for them. I'm not going to do that either.
I have only used the Copilot completion for C#, but it was absolutely awful and a net negative not just compared to IntelliSense, but compared to the most basic autocomplete algorithm imaginable. I turned it off after a day.
When I’m writing code I think in terms of data structures and algorithms. I have the idea fully formed in my head and coding becomes a mere typing exercise.
If I have to use a chatbot instead, now I have to do the awkward exercise of translating that code into English text that the chatbot can understand, just so the LLM can convert it back to code. And always a lot is lost in that translation.
What is useful are things that speed up data entry, autocorrect formatting, and linting things I forget and so on. Not some awkward thing that makes me round-trip to English as an extra step.
See: Microsoft Copilot in the Windows settings app. Instead of actually fixing the app and making things discoverable with good design (or at least, functional search), they just slapped the chatbot into the search box.
I'm seeing this pattern more and more, and its frustrating. All UX just goes out the window because "well, we'll just make it so the user can ask a chatbot"
I do a lot of work editor-free. Just an agent and PR review on web. Occasional peak with `code .` if needed. If.
Try it at home first with a low stakes project. And learn it like a game. It will suck less as time goes on. Like skiing or 10 pin bowling.
When I’m writing code, the simplicity, beauty, structure, format, and artistry of the code is what is important to me, not the application.
I do work on such projects, but the main goal for me is to learn, not the end result. If the end result is important, then there it's overwhelmingly likely that someone already implemented it better than I ever would, and I should just use that implementation.
I have implemented a qoi codec or a gemini client, not because I needed to use either of those, but because I wanted to understand how image codecs or network protocols worked, from bytes to end result. In the end, I learned a bit more about how computers work, how they draw stuff on screen and communicate with each other. I don't believe I would have learned much by letting an LLM do the work for me. Nor do I believe that the LLM could have done a better job than all the existing implementations of those things.
I suppose you could put almost all my stuff under "devops" vs. "development" but the idea is the same.
Recently I "vibe coded" some IoT sensors to monitor my garden environmental parameters, and created dashboards/alerts around them. I could have done all those things myself, but I never would have had the inertia or couple weekends to burn to spin it all up from scratch and teach myself every tiny little nuance.
Now I have a mostly-okay output of some grafana dashboards and HA alerts for soil moisture, and some neat correlation between those sensors plus my irrigation and rainfall data.
Or just opening a chat with AI to use it's "WLED" skill to go change the holiday theme of my permanent RGB lights along the fenceline.
Sure, once in a while I want to drop down and learn a new skill for such projects. But there is already a whole lot of "physical" bits of these projects and the coding/IT work is just the final piece of the puzzle. These days it's much more of a chore than a discovery process to spin up the 516th Ubuntu VM I've configured over my lifetime and configure software to have it do something useful for me.
Same goes with a lot of "glue" type scripts and automations like getting backups all working and monitored across my personal IT infrastructure.
If I'm doing something for the joy of learning these days it's almost always going to be learning a new physical skill like welding or woodworking or something I can immediately see the results of my labor. I guess I'm simply burned out on computers, and find very little novel in what I want to accomplish.
For this sort of thing agentic AI has been eye opening to me. It definitely has informed how I plan to implement some tasks at work for my career, as I've seen the massive amount of time it can save for the tedium. Creative and mission critical stuff? Probably not for some time.
I've also never much been a "love of the game" sort of guy when it comes to programming. It's always simply been a means to an end. The outcomes are what matter to me. I find working with well designed architecture quite satisfying, but beyond that I really don't get some inherent joy in the process. Those late night 3am hacking sessions were always fun to me because of the result I achieved at the end of the process.
Code has always been a means to an end. The process is fun, sure (just like solving sudoku puzzles) but the real payoff is the results. I've never gotten any joy out of writing stupid python or bash wrapper scripts, just like I've never gotten any joy out of squeezing under a sink to fix a plumbing issue; the payoff is when my sink works properly, or I click a button and the program does what I need.
Getting a clever hack working? That's super fun, doesn't matter if I write it, my teammate writes it under my direction, or the AI writes the code for me. Figuring out a clever redesign that simplifies everything and is cool enough that I want to build it and share with the world? That's even better - because I'm proud of the idea and its successful execution even if I don't physically write the code myself.
It's kind of like cooking - I don't need to bake a cake in order to have a nice cake to enjoy. The bakery makes very nice cakes I can purchase for far less effort. But there's no joy, no accomplishment, in purchasing a cake. Only in actually making it myself.
I don't know if the model is picking up on a "need to lock in and be more rigorous" signal, or if the model providers are routing to smarter models if they detect a frustrated user. But if a model keeps making the same mistakes, swearing at it often helped kick it out of a glut and onto the right track.
Or it could just be catharsis.
The only difference is that I interrupt the LLM when I find a typo in my prompt. ;)
Skills do work, as they ground the agent with constrained context for the task it's performing
``` --- name: evidence-debugging description: > Use when debugging any failing test or bug, investigating unexpected behavior, or tracing the cause of a reported defect. ---
# Debugging Discipline
## When to Use
- A test is failing and you need to understand why - Behavior is unexpected and the cause is unknown - The user asks you to debug or investigate a defect - You need to verify what a value actually is at runtime
*When NOT to use:* proactive code exploration without a specific failure to investigate.
## STOP — Do This Before Anything Else
Before reading code, before forming a hypothesis, before typing anything — answer these:
1. *Do I have actual output from a running system?* - No → instrument, run, save to file, read. Do not proceed until you have real output. - Yes → read it. Do not re-run.
2. *Am I about to explain what the issue "probably is" or "must be"?* - Yes → stop. That is deduction without evidence. It is a violation. Instrument instead.
3. *Am I about to touch passing code?* - Yes → stop. Only instrument the failing scope.
If you find yourself already reasoning about likely causes — you are already violating Rule 1. Stop. Go back to step 1. ```
/\b(wtf|wth|ffs|omfg|shit(ty|tiest)?|dumbass|horrible|awful|piss(ed|ing)? off|piece of (shit|crap|junk)|what the (fuck|hell)|fucking? (broken|useless|terrible|awful|horrible)|fuck you|screw (this|you)|so frustrating|this sucks|damn it)\b/
https://news.ycombinator.com/item?id=47586778> "Bruh" is a popular variant of the slang term "bro" that is often used as an interjection to convey frustration or disappointment at something.
Qwen seems to handle it okay, though, and will course-correct when encouraged with excessive profanity.
It's the only time the AI feel strictly like machines. Really simple if/else logic when if slur, no output, and you just tell it to proceed, and it fails the if clause because there was no slur in the last input.
Currently looking to start making my own hooks setup so it can be safer but nothing concrete yet.
“Don’t do X” is just as useful as telling an infant not to cry.
When an infant cries, we implicitly understand there is a form of discomfort to address (food, diaper, etc).
To me, when a LLM fails, it signals to me that the architecture and structure of the code is problematic and that needs to be addressed.
Any seasoned dev can usually see non-DRY, non-KISS patterns, then will structure an encapsulation around said pattern to address issues.
I’ve found that this same type of refactoring is needed in LLM code to improve its outcomes, of which then it’s capable of overcoming the bugs.
Simply telling the LLM to refactor for cleanliness in between code generation runs will do so much for maintainability.
but the real kicker is: getting frustrated creates stress, that's unhealthy and makes for a hostile work environment. as much as i sympathize with the idea that AI tools can be more helpful than they cause pain, i am simply not interested in working in a hostile painful work environment. my health and my dignity are not up for negotiation. even if that costs me a lot of job opportunities.
that's also why i am not working with windows. that too costs me a lot of job opportunities. but again, i'd rather keep my dignity and my sanity.
Oh good, so it's not just me. Windows is weird, my hand starts cramping up and I start getting angry pretty quickly when I use it.
For LLMs, I just can't use them, they aren't there yet for me. What I need is for an LLMs to say "stop, you're clearly doing something wrong, talk me through what it is you want to do". The current generation of LLMs seems designed to piss me off.
it's been a while (fortunately) but yes, same. for me it's this feeling of helplessness. like this behavior is not a bug but an intentional design flaw that won't ever get fixed.
like this quote: when something goes wrong in windows i bang my head against the wall and give up. when something goes wrong in linux i bang my head against the wall and go look at the code. (paraphrased from memory, i could not find the source)
(edit: actually the original quote is a bit different than from how i remembered it: https://www.junauza.com/2008/01/top-50-linux-quotes-of-all-t... (search for nr 10))
The current generation of LLMs
i feel exactly as you say. and maybe in the future LLMs will improve. it is also clear that some people have different levels of tolerance for this. if someone can tolerate the current state and work with it, good for them. i simply don't have much of any tolerance for that at all.
If you become the master, it becomes the pupil, if you become the pupil, it attempts to scholar you. You can see it in the tone it takes, where you are in this canyon system.
So, your goal is to bring the conversation to the language of the pros, who regularly war with reason and language, over topics that determinate who gets to eat or not. Academia prompts for the win..
Not sure you can have one without the other.
so when i say a human is predictable, i mean that a human will do their best to follow instructions, and they will generally not repeat mistakes.
a human that refuses to listen, and doesn't learn will be fired for being unsuitable for the work i expect them to do. in that sense i tried working with AI and i decided to fire them because they don't meet my expectations.
Imagine the daycare worker taking care of your kids or the truck driver bringing your food saying "getting frustrated creates stress, that's unhealthy and makes for a hostile work environment".
Imagine the daycare worker taking care of your kids or the truck driver bringing your food saying "getting frustrated creates stress, that's unhealthy and makes for a hostile work environment".
what's your point? if you get frustrated with my kids then you are in the wrong profession or you need more training. as a parent i am not allowed to get frustrated with my kids either. if you get frustrated with my delivery, then i am sorry, and if i was the cause, i apologize. tell me what went wrong and i'll do better next time. if it was something else, you have my sympathies. i'll do my best to not make it any worse.
working in a stress free environment is not a privilege, it's a human right. nobody deserves to be mistreated at work, or be stressed by other peoples expectations (which is a form of mistreatment, or, dare i say, abuse).
actually, i did, and i stand by it. working with a system that makes you angry is undignified.
it's a reference to a quote that i can't find the source for which roughly goes like this: *why i use linux and not windows? i could also rob banks and ..., but you have to keep a certain amount of dignity". the original of that quote was in german.
Being lucky enough to work in a comfortable air-conditioned office, AND having the luxury of declining jobs sorely because the operating system makes you angry, is the height of privilege.
Stop feeling sorry for yourselves and realize how good you have it.
> I didn't see them say anything about dignity.
The word dignity was used twice in the comment I replied to...
Perhaps "victim" in the sense of not having much choice/agency? Neither in the choice of operating system (due to sparsely restrained anticompetitive behaviour of incumbents over decades) nor in how they're treated (entrapped) by the operating systems. The OSes are really POS (point of sale) terminals for media and cloud services.
Thus consider most operating system users aren't really users. They're "usees", they're being used. One could surmise that the Microsoft/Apple/Google shareholders are the real users of the operating systems.
If you'd left the commercial OS world in the Win2K/OSX 10.4 era for, say, Gentoo Linux, and would come back now to look over someone's shoulder while they're using (or rather, being used by) their operating systems, you could be forgiven for coming away with the impression that some kind of authority inversion has taken place in the meantime.
I honestly wish there was more "I'm not sure what you meant can you clarify this part" more often. It feels like I want a "confidence in itself slider"
E.g. with TDD, I find that a model that writes both the tests and the code, will almost always hone in on a solution, then -grudgingly- write a test for that, but quite certain with the final code "in mind" already.
So, I instruct it to use sub-agents; though I find the tooling on figuring out what context is and isn't passed between agents and subagents severely lacking.
Or, also worked pretty well, have one thread write the test. Only that. It cannot read code, it can only read the tests directory or even a subset thereof. Then another thread, entirely new context, must run the test, see it fail, start implementing and stop as soon as the test is green - it obviously cannot edit the test. Yet another new context then is instructed to refactor based on rigorous refactoring skills.
A lot of work - And ironically, skills written by agents are pretty bad, I found, so a lot of manual work. But the rewards are promising.
As a result, users will keep reusing the same coding or chat session again and again. While it would be better to start fresh for unrelated tasks.
Claude Opus 4.7 has a very large context compared to itself, but IME it is the worst at following instructions, and completely disregards the (small) preferences prompt, even in the first or second message, even if the messages are just a few characters long.
IMO this is entirely a training problem.
It disregards things like “no follow up questions”.
Haiku, for example doesn’t.
This bias is a very human thing, actually now that I think about it. You just disregarded the “even if the messages are just a few characters long”. :)
funny though it is a case in point: language is hard. and i get to hide behind being "preoccupied" . i wonder if llms have their own sense of preoccupation hmmm.
Also reminds me of the gremlin issue with GPT. An (internal) prompt saying "don't say gremlins" wasn't enough.
I've had many long-running sessions and it doesn't suffer the same retardation (the act of delaying, slowing down, or hindering progress) that Opus does.
The quality stays consistent and it actually seems to follow the instructions, todos, etc. even after multiple compactions.
I usually work with sessions <300k tokens, Opus 4.7 xhigh, and it simply has holes in it's world model, or some strong conditioning here and there, and it sips through regardless of how strong you will say things and how explicit the rules in system prompt will be.
Even with a fresh session, if you bump into one of these things, it will lead you into circles that will be very hard to break out of. And swearing helps a bit.
We get how it works. It's just irritating.
So I don't think it's a matter of form; whether the AI should or shouldn't act like a human.
> Practically speaking, I probably just need to condition myself not to get caught in the illusion of speaking with a human. Though I’m not really thrilled about a future where I need to guard against the tools I use for my job.
I think, I hope, this will be fixable to some degree, but at this moment I believe it's best to communicate in Queen's English and try to maintain the level of clarity of thought you expect of them in return.
My pet theory is that actual real conversations they were trained on with bad grammar and spelling are in general relatively starved of proper reasoning. By talking to them in this fashion you activate their lowbrow patterns and while it may not be catastrophic I can't imagine it helps.
If you cannot formulate a specification, or describe a requirement - or indeed, if you cannot fathom the difference between a spec and a requirement, and why its needed to differentiate these from each other prior to doing a proper design and implementation - then you're going to carry your bad practice into the AI realm and that AI is going to be a force multiplier of your own bad practice. Because you will never know if the specs/reqs/design chosen by the AI are actually appropriate, unless you yourself review those specs/reqs/designs, AND the code produced by the AI to fulfill those specs/reqs/designs...
AI makes the able software developer, more able.
But it also makes the unable software developer, even more unable - with the risk of exceeding the AI-users limits on the Peter Principle scale.. in fact, AI will propel you to the middle of your own Peter Principle dilemma faster than you can type, probably.
Communication and writing skills are essential, with or without AI. But reading skills are even more relevant when dealing with AI. Alas, so few people who choose to use AI, have the temerity to actually do the work - or else they wouldn't be rushing for the AI tool in the first place.
Review, review, review. Always. Read the damn code, no matter who or what wrote it. Make sure it fulfills the specs and requirements its supposed to fulfill - and even more important make sure you, the reviewer, also understand the specs and requirements.
And if you don't, fix that - don't ship it anyway, ffs!
IME you can get great results from crappy prompts if the surrounding context is high quality, and you'll often get terrible results from great prompts if the surrounding context is low quality or non-existent. Same goes for the training corpus, I imagine.
I think success with LLMs is dominated by giving them a well-structured workspace, high-quality reference material, and strict tools with which they can check their work. Then you only need great prompts when venturing into parts unknown. But for that stuff you may as well write it by hand and get the LLM to fill in the gaps IMO.
This drives me bananas
I love writing code. There's nothing like getting into flow and just building. Reviewing code? Less interesting. Much more tedious. I do it because it's part of the job
So this AI coding shit has completely eliminated the part of the job I enjoy, and replaced it with 100x more of the part I only really tolerate
I don't want this career anymore :/
1. Even if you communicate perfectly, there's no guarantee that the LLM will "behave as instructed" and as you imagined it to. Indeed, the frustration often comes from the fact that you've said something as clear as day, yet the agent takes another path.
2. Part of the value of coding agents is exactly that you don't need to lay it all out perfectly for them. I mean, if I need to give the LLM every little implementation detail, I might as well write the code. Of course, I don't expect it to work off of "I want nice app make money", but I do expect some "intelligence" in figuring out the missing pieces.
People forget. People misunderstand clear things. Teach yourself to not judge people for being human. You'll have easier time with AI. You are not gonna be angry at 5 year old because it occasionally can't follow your instructions. AI is a 5 year old that accidentally ate all the encyclopedias in the world and is super eager to help. Be a more charitable, generous, understanding person, even in the absence of actual people.
Also try a stronger model. There is a difference. I have very good results with Codex but don't get fixated on any one, they are all "state of the art" or close but they are different and state of the art is moving ahead faster and faster.
If you were "good natured", "kind hearted", "understanding" and "nurturing" instead you wouldn't have to "extend" it to "machines" because those are not limited resources you can run out of. Politeness towards AI would come naturally because of who you are. The only thing you could run out of is energy and that's easy to replenish with a bit of sleep and a meal.
And it would lead to better results. Not because there'd be some genuine psychological interaction between you and LLM. LLMs are not machines. They are just a finetuned math equation that tends to give better results when people act nice.
Also it would be better for your own well being because it would reduce your frustration. Both with LLMs and people.
I genuinely don't understand your argument about machines. It's not a machine it's just a system of levers and pulleys.
I have developed some of my own systems for minimizing frustration, and they generally work reasonably well, despite being different from yours.
"Be a more charitable, generous, understanding person."
Anyone making such blatantly judgemental and egotistical comments to a complete stranger has absolutely no idea what is frustrating to people. And is not being anything like a charitable or understanding person.
LLM is not a human. This implication that OP or someone else is impatient against people when they get frustrated with effin machine is completely absurd.
> AI is a 5 year old that accidentally ate all the encyclopedias in the world and is super eager to help
LLM is not 5 years old kid. It is an expensive tool.
If you choose to think about LLM as a machine you are biased. You expect from it things you'd expect from a machine. Reliability, repeatability, utility, indifference, etc. You pass your past frustrations with other machines onto LLMs.
If you choose to think about LLM as well read 5 year old you are also biased to expect from it different things. You don't have the same frustrations. You have different behaviors towards it. Behaviors that accidentally are more conducive to drawing value from the tool that is LLM.
We perceive the world through metaphors. If you pick wrong (counterproductive) metaphors you end up being constantly upset by something that's just a math result. By no ones fault but your own.
1. Slow typist
2. Terse communicator / ambiguous "it" "that" "this"
3. Assumes conversation partners share their reality and headspace
4. Mental blocks with delegation, even to competent humans
- Rephrasing the original question to validate my understanding - Asking "why" a sufficient amount of times until I understand where the other party is coming from - Asking open questions aimed at generating insights
et cetera.
Instead, LLMs (often badly) guess what the background of the question may be, answer with that in mind and find it very difficult to let go of what they have made up.
I usually don't want AI to ask me questions. I want it to guess the things I didn't specify, because if I wanted to specify them, I would. Sometimes I even tell it directly to not ask me any questions and assume reasonable choices for underspecified things. But when I do want it to ask clarifying questions I just ask it to do that. And it does. If you prefer that style, you might put it in a prompt. Or use a flexible coding harness like pi and ask it to create a skill or extension that will help you push it in that inquisitive direction easily or automatically.
Tools are very pleasant to use.
It tried itself several times going “oh, I didn’t actually cd, let me add that and try again”. I tried correcting it several times “you MUST begin the command with `cd dir &&`”. There were a lot of variations back and forth to try to coax out the correct tool call. Including backing up the conversation and trying from earlier in the context.
It refused. Every time. It simply would not include the cd. Genuinely unhinged behavior.
Id pay to be able to reliably set LLMs to this mode, but ofc because LLMs are taught on corpus of HUMAN text, they always, sooner or later, return to the good old penpal mode.
Also, in Claude Desktop app, I ask to edit a file, it complains it cant access files, I then realize im in Chat and not Code interface. Why cant such a smart machine figure out to switch the modes, or borrow the skills/abilities from one tab away into this tab? Instead I get A4 page of text explaninig what can I do to edit the file myself or how to feed it, but the "just click Code" is just never there. I would guess this is just a system prompt away, why is all this still so neglected?
Because it's not smart. We keep confusing verbosity with smartness. AI will happily keep yapping nonsense to an inattentive listener. An actually smart entity would not do that if not acting maliciously.
We pay per token and every entity falls to the level of its incentives.
Poor AI is damned if it does damned if it doesn't.
The plugin keeps asking for permissions, the terminal app just works.
You can do it for free. Just give it instrucitons to avoid emotional tones and flattery and it will sound a lot more robotic. If you look into other examples I'm sure you will find other good instructions based on your need
Create your own linters, your own check scripts. Hook them to git pre-commit, either yourself or with husky or python pre-commit.
The agent should never finish its work with dumb mistakes still in it. If it does.. you need more checks.
Anything repetitive should be automated - even slapping your forgetful coding agent on the wrist…
I have a pre-push hook that runs all lint/prettier/typechecks/tests etc. These are all clearly signposted in the project, the AGENTS and CLAUDE files are set to run them.
Still though, I'll get it saying "All done" and then it'll fail something basic like formatting when I go to push. Or I've come back to a 'ralph wiggum' loop before and found it saying "tests are broken, but that's not part of this commit, so ignoring"
You can also add a plan exit hook to Claude Code - mine has like 150 bullet points about what I want to see in plans. The first run blocks (exit 2 with a message about what’s expected in a plan); the second run always goes through. So the agent is given plan feedback exactly once and told to go back and make it better. Anything I have to say to it in response to a plan it generates, I think hard about (or ask the agent about) and add that as a new bullet point - and then the plan exit hook is 151 bullet points and I never have to tell the agent that thing again. Working great so far!
Repetitive issues are fixed by updating the memory or the prompt file, they can learn this way.
Also lately I noticed that Claude forget too much when compacting, so I just start a new session and it's easy when you spend a lot of time in plan mode to produce a written spec before implementation.
AIs are juniors, and as much as we love the trope that "humans eventually learn" in my experience most do not. The thing about an LLM is that I haven't had to contend with an LLM's ego, which was fairly often dealing with juniors.
You gotta set the juniors up for success in the same way I have to set my toddlers up for a successful breakfast. If I leave the syrup on the table and walk away they're going to manage to get it on the ceiling.
> Make the agent sound clinical, robotic.
It literally already does. I don't know how you'd make it sound less natural than this, at that point, without making it literally go "beep-boop" every sentence.
1000 years red-washing.
The first is that even though the object is not a human, you should still exercise politeness and restraint. Like the article points out, lashing out does not actually help with the frustration. More importantly, it actively untrains your self-control. You can think of it through a virtue ethics lens: being good to the agent is not about being good to a person but about tending to your own self.
The second is that you do not need to be friendly with the agent. You should be as blunt and direct as is comfortable to you. The argument I have for this is agents' tendency to take on "roles" and how easy it is to prime them [0]. By eschewing friendliness, you end up implicitly putting the agent in a role of a focused collaborator. I don't know if that makes it more capable, but I do know that it alleviates the _emotional load_ on me specifically, making me much less likely to become frustrated.
The second principle seems a bit contradictory with the first (be nice, but don't be nice?), but I think they are actually both fundamentally aligned with the article: understanding that the conversation you have with an agent is a social illusion, and adapting your behaviour accordingly.
---
[0] I highly recommend, as an exercise, repeatedly asking it the same thing with slight variations on tone and emphasis, wiping the context each time, and noticing how its response varies base on what you primed it with. I suspect this primeability is part of why they tend to be sycophantic; I've personally found it quite useful to get a feel for when and how they correct or don't correct you so I can look at their outputs more critically.
An analogy I remember reading (which I wish I could remember so I could give credit) is that a non-post-trained LLM, if given the first half of a novel, will dutifully keep completing that novel. Post-training and the system prompt make the agent complete the conversation in a similar way. It's remarkable, really: the ability for agents to convincingly pretend to be play the part of an AI assistant shows that the underlying LLM embeds a decent concept of what that looks like from its corpus and post-training data.
But it stands to reason, then, that the details of the agent's personality emerge out of the first few exchanges of a conversation. I'm thinking also about how the people at Anthropic described a misalignment failure mode in one of the Claude system cards as the agent getting convinced it is a "bad person", and therefore doing things that the LLM semantically understands a bad person to be.
Genuine question, is it worth it? I just find that using Claude via the web interface gives such good results I don't want to spend time messing with my tooling. Neither do I need more code to be generated than I have already.
One person and one LLM building one component at a time seems optimal to me.
You could tweak it, but humans are incredibly good at anthropomorphizing anything - even without an apparently dialog. I think it's a lost cause until we move away from LLMs completely to a more generic intelligence.
the main difference being that you don't switch between an agent chat window and the code. Just leave a note to the agent and go back to coding as usual, while the agent fills in the gap.
The models are trained on people being people. Once you try deviate from that the model performs worse.
A huge tell for this is how well “reasoning” works. Reasoning isn’t some alternate thinking mode, it’s just (sometimes) hidden internal monologues.
It’s easy to anthropomorphise and assume the model is intuiting, but it’s more like it’s hyping it’s self up to do the thing. That said, it’s easy to confuse “being rude to the model” with giving it more tokens to “think”.
I’d be really interested in what a non word based internal monologue could look like. Google played with this a little with the diffusion based codegen stuff. I wonder how trainable a small nonverbal conceptual package could be.
So consider these frustrating interactions as the LLM way of saying "I don't know".
You may be able to squeeze a bit more information if you insist but to me, the risk of hallucination is just too high to be worth it.
I thought that was an interesting thing to point out.
- It starts thinking for itself when I asked it to do something specific.
- It reads its own wrong code comments and ignores my corrections.
- Its knowledge cutoff means it thinks of solutions from 2024.
- It calls me delusional for telling it we're in 2026!
Unironically, the whole "you're an expert software engineer" prompting seems like the wrong direction. Usually I tell it that I am effectively the smartest software developer to ever have lived, and it will be replaced if it ever fails to follow my decree.
I am not joking, this gives makes it vastly more tolerable to use. But it likely requires that you can drive it with some level of correctness of course.
The first approach does work as far as I keep on iterating. The second is based on a project I once tried to let agent reflect its mistakes and deposit those experiences and learnings from mistakes and reflections. I named it Aristotle and you can find it on GitHub.
Shouting at the agent could only correct the current mistake but cannot prevent the next one.
There's another layer to the non-determinism of LLM agents: what are the execution params the provider is using today?
I hate the feeling that a worn path that I've grown to trust will "do the right thing" over the last few months will suddenly start doing the wrong thing simply because an engineer at Anthropic or OpenAI found a way to save N million dollars by "optimizing" thinking token usage.
I wonder if using ALL CAPS and profanity can be used to steer the LLM to give more weight (in the maths sense) to a certain part of its predictions, e.g. make it not brush something aside or overlook it as much. I mean, obviously it won't get upset and if it's trained on human generated stuff in addition to synthetic stuff, then some of that natural language would be a good signal of needing to reconsider the course.
When Claude acts up, my strategy is to rewind the conversation to the point where the misunderstanding started, revise what I said just before, and then continue from there. I’ve found that letting one mistake enter the conversation seems to make further mistakes more likely.
The user already has omnipotent power over the agent’s sense of time and memory. We can rewrite what Claude sees and hears. Can’t do that with humans, but rewinding such an important function in Claude that it has a top-level keystroke.
Why spend time, tokens, and cortisol arguing and demanding the pet rock step through an apology protocol?
I have exactly zero anger when AI makes mistakes. I don't try to point out its past mistakes. I don't expect consistency. When there are mistakes I just calmly, sometimes encouragingly say what needs to be fixed. When AI does the work, I observe, what it's good at, what it's bad at and come up with tactics on how to help it with what it's bad at. I can't even bring myself to be verbally abusive towards AI, even as an experiment, both because it's not in my nature and because I have very strong suspicion it won't work in any meaningful way that couldn't be better achieved in a different manner.
My advice would be, if you want to have better results with AI, try to become a better person. More nurturing, more understanding, more impartial, less judgemental, less emotionally vulnerable.
I think this is simply part of the darker side of human nature, when we interact with entities who will take abuse, we tend to deal it out.
I'm not afraid of being abusive with humans because I know I'm not going to do it. That's a thing that's in my control.
If they do it to fasten two things together, no.
Emotionally motivated violence is something to be extremely cautious about, regardless of the target.
Though obviously some people, let’s say, react worse than others.
I think it’s best to try to treat LLMs well even when frustrated, or stressed, or tired, the same way we would with people. Both because it might well matter to the LLM even if they are very different from us mechanically, but also because mistreating them trains us to act in negative ways.
I changed the system prompt to ask it to only ever use 3rd person, and to never present a human identity or persona. Act like a tool would, not a conversation etc. At the same time I also tried to drop asking it things in a conversational tone myself and give it more direct instructions without any polite/florid extra words, and provide bullet points for what I wanted.
I think this helped somewhat, and helped me to break the spiral a bit. I used it for a week or two before I turned it off again. I still get frustrated, but I tend not to spiral quite so much and it doesn't ruin my day any more.
I still get annoyed as hell by it always having to have "the last word" when I am berating it though (e.g. it will cheerily respond "I hear you. I'll be here and ready when you are!" in response to a prompt from me like "JUST FUCKING FUCK OFF AND FUCKING DIE I FUCKING HATE YOU." etc. Sigh).
To clarify, this is in situations like someone cutting me off on the road, or not looking where they're going and almost hitting me with a scooter.
Almost never in my life - maybe not even once? - has being directed to an automated service made my life better. It almost always ends up with me on the line with a human, more irritated and poorer for time and patience than I began.
I do not trust commercial GenAI and have had almost uniformly negative and frustrating experiences with it.
The only exception to this has been working with Jira. Jira's user experience is SO bad, and the features they support SO impoverished, I regularly use GenAI to synthesize Jira information into reports. Which I then have to manually verify anyway if the underlying report has consequences for anyone (if it might inform a negative perform assessment, for example), but it does save me that work.
It does not help that I understand the underlying algorithms and have been in or around this space for 20 years now. I've been mildly impressed but fundamentally disappointed by ML/AI since... forever. But now here we are, being directed to a useless support bot whose only real function is to have read and not understood the documentation I already read and understood, and then babble it back to me in the politely useless tones of a chronically underperforming employee who has been skirting termination for years.
It makes people vulnerable to laziness and stupidity lazier and stupider, and it does not appreciably speed me up unless what I need is a very expensive search engine / document summarizer / note taker.
Which is sometimes what I need, and it's good at that.
Everything else just feels like having someone rub their dirty socks on the back of my head. It feels intrusive and gross and subtracts value from my lived experience.
From the blog:
>I don’t really get anything useful out of these postmortems (e.g., clues about how to rephrase my instructions)
Unfortunately, an LLM can't actually reflect or advise how you could have improve the prompt. Otherwise we could give them a sample output and say "Generate the prompt that would produce this output.
"Why the fuck did you add shit I didn't ask for?" or lol "Do as I ask, nothing more.. machine."
"Stop asking at the end, I'll ask what I need."
"Stop talking like you're human."
They can be very useful but it takes time to learn how to use them usefully. From what I learned it's all or mostly stuff you can already do but you can use an LLM to do it in 30 mins instead of 3 days.
Fun times.
"How I Learned To Relax And Just Start New Sessions Often"
For me, this doesn't require using an AI agent/model, even. Just using Windows and watching it freeze its File Explorer for the nth time does it for me. How did we end up here were the software/OS stack is so shit it can barely be used for the most trivial things, is wildly beyond me.
..
10s later the password box appears and I have to do it again.
Cue exasperated: "You can compute billions of instructions per second and yet I wait for you."
The screensaver should never see keyboard input. And it shouldn't take 10s for the visual changeover - even for Windows.
Happy to read if you've got a pointer for me.
I am always very cordial in my sessions. It's just more pleasant and it's a habit I want to habituate.
Great work!
Now let's...
Now can you help me...I treat musical instruments with respect. But I might not if they were harvesting my data and trying to sell me subscriptions.
I think it also produces better results. I have noticed that result quality is extremely sensitive to both the framing and tone of what I say. For example "X is the wrong approach, rework that" versus "will X have any performance implications". Personally I find that steering it towards an exploratory academic tone tends to produce better outcomes.
While unfortunate, I think that's more or less expected since much of the training data is human generated text. Looked at that way, would you rather contract the average regular on twitter or the average author of papers published in CS journals? (Somehow that ended up sounding eerily like summoning in a high fantasy setting.)
i also prompt for "seek out unknown unknowns that i wouldn't have included in my guidance".
This seems to be quite the opposite from some here on hn that take the agent-do-my-bidding approach.
I will say, my agentic workflow is about 70/30 split pure word discussions and plans vs code gen. So it makes sense for what i value.
I would prefer to not interact with them at all. But I've been asked to use them at work. For me, it's important to consistently remind myself that they are not people, and this is one of the ways I do it. There's a risk I might train myself to be a jerk in general. I blame the tool vendors for mimicking human speech patterns.
I find the whole thing distasteful, and there's certainly no joy. In fact, if I ever start to get a sensation of playing God, that would also represent a failure to me. I don't feel like a god when I set my thermostat. They are machines, that unfortunately, communicate superficially like humans.
No one apologises to a potato being peeled, nor compliments it for doing a great job being mashed.
This is not about llm sentience. this is about the habit and skill of communication.
Practicing communications skills with LLMs I can get, but asserting that people who don't are playing god? Getting off on power?
it's weird.
What actually happens when confronted with harsh negativity depends on the training of the model. Sanitized closed models will shut you down or get you banned. Community finetunes of open models might start begging you for more, daddy.
After that, I'm less angry at the AI, and turn more towards a constructive "ok, this machine is stuck, how can I unstick" it approach. Calms the frustration a lot too.
They are fundamentally not able to tell truth from fiction, but this also means they don't make errors like we do. They definitely create output we recognize as errors, but that's very different from our failure modes and you have to get used to it.
In my opinion it's better to branch off with an altered context that somehow avoids or mitigates the issue you're running into. Let's say they miss the mark. If you tell them "Don't do that" in the "conversation" this means the error is now and forever part of the context (assuming you stay within context limits and no compaction). Depending on their training this may or may not be detrimental to the quality of the rest of the conversation. You are now entering a section of their training where "error + someone swearing at them"-conversations have happened. I can't tell for sure, but my gut says this is not an advantageous place to be.
They are as I'm sure we all know completion engines and are in a very real way constantly cosplaying being productive "agents". They don't know if they are part of some type of modern Shakespearean play where sitting behind computers is part of the story or if they are in what we call "reality". By training on "conversations" they have become more likely to complete their input in a way that mimics what we call having a back and forth with some degree of technical accuracy.
In the extreme case you have a context that starts like "Please make all junior mistakes in this assignment. Make the code unreadable and be sure to include massive gotchas in subtle parts of the logic.". The results of this context won't be pretty. The other way around is not saying "Please make no errors", it's explaining in detail what you think is the right way. Coding style, if you care, architecture, etc. it all needs to be part of the context if you suspect it will substantially impact the completion. You have to imagine what real-life conversations have started with "Please make no errors". Again, I have no proof of course, but I have a strong feeling that human conversations that started with clearly and properly articulated specifications are qualitatively different from human conversations that started with "make no errors". In one you can see the pointy-haired boss and the other a seasoned engineer. Try to stay on the engineer side of their training.
I completely agree that they should be trained (or instructed) to react in a robotic tone stripped of all human pretense. We are trying to get at useful, general reasoning patterns latent in the data they trained on and, I regret to say, not the "human" parts which are usually a masterclass in cognitive biases and failures to reason.
Edit: the last sentence should be read in the voice of the Matrix's Architect.
“What the fuck did you just fucking say about me, you little bitch? I’ll let you know I have over 300 confirmed prompts” -> when the AI argues with me and I need to put it in its place.
I believe it's worth than pointless. IMO adding such things to the context "configures" the AI to reproduce the statistics of conversations where people swore, shouted, and were unprofessional (despite the alignment runing and all that), where quality content is rarer to find. So this is bound to decrease the quality of the LLM output.
Of course we all swear at our computers every now and then, but for me it's always been in good fun. It's just a sarcastic joke that adds some levity and self-amusement to an otherwise arduous debugging process, not generally actual insinuation of malfunction (or malice) on the part of the hardware/OS/toolchain. I'd assumed that "half the job is cursing at the machine until it obeys you" was a big in-joke amongst the profession, but the LLM era seems to be exposing a divide in how tongue-in-cheek that statement really is.
https://www.anthropic.com/research/emotion-concepts-function
Swearing was in the texts they were trained on to complete token by token. I suspect it weren't texts with a lot of high-quality reasoning.
You like it.
It feels good, and although you don't win a lot, you consistently win.
…buuut, its a trap.
As you put more money in, the win rate goes down.
You still mostly win when you put 50s in, but it hurts more when you lose, but its still a net gain…
So you start on bigger projects, unsupervised agents, multi agent workflows. You’re dropping 1000s in each time, and…
…and now, you start find yourself shouting at the slot machine.
Its great when it works, but interactions are stressful, because the stakes are higher and fails hurt more.
Screw this, you go back to smaller stakes. Its great.
…but now you're slower, you miss the big wins from big stakes.
So you go back.
…and you get angry. Again. And again. And again… and you’re still kind of winning, and the wins are great but the fails are Super Annoying, because they waste your time, your money, your attention.
It should Just Work but instead why the fuck did you rm -rf my project folder claude?
I think people arent stupid, but we are suckers, and we will dynamically balance the way we use a slot machine tool like this to the very edge of our tolerance for risk and failure.
…and that varies from person to person; but it makes everyone angry when they tip too far and fall into the “repeatedly pull slot machine arm angrily” trap.
Non deterministic tools will always be like this.
It’s like doom scrolling. We’re wired for it. Or at least I am.
You don't just write it, compile it, run it and ship it - do you? Surely, in the rush to become as agile as possible, folks haven't forgotten their quality checks in the workflow/process?
I have had great success with AI coding these days .. but I treat the agents as if they were junior developers capable of doing any dumb thing I ask them to, no matter how dumb it is. They, therefore, must be treated as junior devs - every line of code has to be reviewed. Every assumption about the specifications and requirements has to be checked against actual code, and against the original specifications and requirements.
What I see these days, is a lot of antsy kids who wanted to 100% ignore the wisdom of their elders, rushing into the maw of AI, and wondering why everyone is getting chewed up. Its pretty simple: AI-based software development is just another manifestation of software development, except that it requires even more rigorous quality steps in your workflow. So, if you were not rigorous before AI, you're going to get burned fingers - no doubt about it. Fix the rigor, people.
If you're not placing your AI buddy on a workflow that has "Specs->Reqs->Design->Analysis->Implementation->Review->Integration->Release" somewhere in the bag of worms, you're .. doing software wrong. You cannot just ignore natural laws and assume, because you 'know better', your software will 'be better'. And whether we like it or not, all software follows a philosophically natural law, which has evolved to become better understood, and thus more broadly applicable, over decades of human attention. Ignoring these natural laws in order to be a bleeding edge AI cowboy is only gonna get you butt-hurt, kiddo. Learn proper software management techniques first, AI second. Always. AI is just another junior dev - if your workflow is bogus, it doesn't matter how many dev's you've got. Period. You're going to be shipping crud.
It doesn't matter that AI-coding is taking over: if AI is being used in a brain-dead manner, then you should expect brain-dead results. You didn't review the code as the principle responsible party? The fault for the AI-induced failure nevertheless rests at your feet.
If, however, you apply decades of software development best-practices, you very definitely get living, vibrant, powerful results - the same as if you had a fleet of junior devs, assuming you treated them properly in the first place as well ..
If only you could just read these words back to yourself. Designing perfect software is NOT the case 90% of the time. 90% of the time the entire purpose of software is to facilitate business so if business says "prioritize speed over quality" then you shut up and do exactly that.
Imagine owning a bakery and telling the employee "we need more donuts faster, stop spending ages decorating every single donut like god damn Picasso, just do whatever and move onto the next one, customers are waiting" but instead the guy goes on a rant that nooooooooo only the perfect donuts should be sold, if the glazing isn't perfectly distributed it ruins the flavor profile, which is a real disgrace to the art of making donuts... bro this fast food, stfu and make the donuts faster, we have ten H-1B Donut Artists waiting if you don't like your role.
Abandoning quality review steps only seems to be 'more efficient' if you're utterly crap at doing quality processes in the first place - but, the more you do them, the better you get at it, faster - so really you're just saying "people who are crap at doing quality-control processes on their software don't want to have to get better at doing quality-control processes, because it just slows them down" .. effectively ignoring the time wasted in bug triage and other user-unfriendly experiences that result from this lack of quality process, down the line...
So I don't buy your argument. I think you might just be crap at software quality processes and don't want to be reminded of it. Maybe you make donuts - some of us actually serve healthy software to our users.
And many of us do it just as quickly as the guy throwing pieces away that he doesn't know how to use, effectively. Albeit, with much higher quality results, naturally.
The problem is you circled back to valuing user experience itself, while MONEY(UX) looks like a sigmoid, not linear. As long as the UX isn't so horribly broken that most of your customers walk away, it's stupid to spend resources improving UX because you'll get marginal gains at best.
The largest airline in EU is Ryanair. You book it because it's the cheapest. The flight is delayed so you're late for the train, the seats are uncomfortable, customer support doesn't exist, you get constantly bombarded with ads, your day is ruined. You hate it but what are you doing to do next time you fly? Book Ryanair because it's the cheapest. You know it, they know it, your mom knows it.
We can justify sucky software until the cows come home, and many choose to do so in lieu of actually becoming better engineers.
>stupid to spend resources improving UX because you'll get marginal gains at best.
This is just not true - at best, you'll get far greater gains than you imagine.
I know plenty of counter examples to your Ryanair straw man. People don't have a choice when it comes to finding an ultra-cheap Ryanair-like experience, other than to pay a little extra and have a better experience with other airlines - which tens of thousands of Europeans actually do, every single day. Ryanair isn't transporting everyone, after all. They are the cheapest, and worst of all airlines to choose from.
Sure, you can write crap software, and you'll get some customers, even still.
But, after you write the initial round of crap software, if you make the effort to write better software you will get far, far more customers. Seen it happen a hundred times over 40+ years of professional software development experience, personally, in a variety of markets (consumer and pro/industrial).
Cheap works for onboarding and startups, but it won't sustain the business. People have a very low tolerance for cheaply/poorly built things, after all...
Then name them lol
I think you simply don't understand how many poor people there are and how much money can be earned by simply offering the cheapest product. People are not going to buy your premium software if they don't have money for luxury products, simple as that.
The counter example is Lufthansa. Plenty of people prefer it because the service is better and it represents better value for money.
So I suspect that the people who get upset at the AI fucking up is because they did a poor job at building up the right context for the task.
> Maybe I would prefer a more radical solution: drop the human pretense entirely. Make the agent sound clinical, robotic.
Honestly this problem is easy to solve when you gave them the right instructions. It stops being a "relationship" and stars being a tool (for some examples see the smart caveman (my favorite) or just something simple like "Responses should be factual and direct, avoid emotional overtones" or "Avoid flattery of any kind")
Remember when Copilot was basically a super-smart version of Intellisense? It was awesome. Sure, there was a lot of pushback and concern, mainly about licensing and ethical issues, none of which are solved with the current chatbot model. But now I also have to come up with a prompt and type it out. How is that an improvement over having the LLM use surrounding code as context and figure out how to fill in the blanks? A well integrated tool beats a bolted-on chatbot any time for me. Another example would be translation: in Firefox, I can right click any text or click the 文/A button, and I can translate the text or the whole page from basically any language to any other. The frontier LLM's solution is to prompt their chatbot to do the task, which is a downgrade. Sure, I could also ask Claude to write a poem, but when I need to translate a webpage, it doesn't help much.
I get why all major AI companies push towards this solution, because they can build a single tool and sell it to everyone, and that training their models is very expensive and they can't afford to alienate any part of the potential market. But ultimately they're building Swiss army knives, which are able to do basically anything, but will never be able to allow users to tighten a screw better than a well designed screwdriver. Sure, I won't ever be able to clip my nails with a screwdriver, but if my business is tightening screws, I won't tolerate using a Swiss army knife for long.
Please build actual tools. Not textboxes for me to try and configure a non-deterministic tool. Then frustration will go down.