28 ms·
How to build a coding agent
- mh27 1y agoCan anyone share what font is used in the slides? It's lovely
- cryptoz 1y agoI really think the current trend of CLI coding agents isn't going to be the future. They're cool but they are _too simple_. Gemini CLI often makes incorrect edits and gets confused, at least on my codebase. Just like ChatGPT would do in a longer chat where the context gets lost: random, unnecessary and often harmful edits are made confidently. Extraneous parts of the codebase are modified when you didn't ask for it. They get stuck in loops for an hour trying to solve a problem, "solving it", and then you have to tell the LLM the problem isn't solved, the error message is the same, etc. I think the future will be dashboards/HUDs (there was an article on HN about this a bit ago and I agree). You'll get preview windows, dynamic action buttons, a kanban board, status updates, and still the ability to edit code yourself, of course. The single-file lineup of agentic actions with user input, in a terminal chat UI, just isn't gonna cut it for more complicated problems. You need faster error reporting from multiple sources, you need to be able to correct the LLM and break it out of error loops. You won't want to be at the terminal even though it feels comfortable because it's just the wrong HCI tool for more complicated tasks. Can you tell I really dislike using these overly-simple agents? You'll get a much better result with a dashboard/HUD. The future of agents is that multiple of them will be working at once on the codebase and they'll be good enough that you'll want more of a status-update-confirm loop than an agentic code editing tool update. Also required is better code editing. You want to avoid the LLM making changes in your code unrelated to the requested problem. Gemini CLI often does a 'grep' for keywords in your prompt to find the right file, but your prompt was casual and doesn't contain the right keywords so you end up with the agent making changes that aren't intended. Obviously I am working in this space so that's where my opinions come from. I have a prototype HUD-style webapp builder agent that is online right now if you'd like to check it out: https://codeplusequalsai.com/ https://codeplusequalsai.com/ It's not got everything I said above - it's a work-in-progress. Would love any feedback you have on my take on a more complicated, involved, and narrow-focus agentic workflow. It only builds flask webapps right now, strict limits on what it can do (no cron etc yet) but it does have a database you can use in your projects. I put a lot of work into the error flow as well, as that seems like the biggest issue with a lot of agentic code tools. One last technical note: I blogged about using AST transformations when getting LLMs to modify code. I think that using diffs or rewriting the whole file isn't the right solution either. I think that having the LLM write code that modifies your code and then running that code to affect the modifications is the way forward. We'll see I guess. Blog post: https://codeplusequalsai.com/static/blog/prompting_llms_to_modify_existing_code_using_asts.html https://codeplusequalsai.com/static/blog/prompting_llms_to_m...
- faangguyindia 1y ago>Gemini CLI often makes incorrect edits and gets confused Gemini CLI still uses archaic whole file format for edits, it's not a good representative of current state of coding agents.
- cryptoz 1y agoOh that's wild, I did suspect that but didn't know it outright. Mind-blowing Google would release that kind of thing, I had wondered why it sucked so much haha. Okay so what is a good representation of the current state of coding agents? Which one should I try that does a better job at code modifications?
- mrugge 1y agoclaude code (with max subscription), cursor-agent (with usage based pricing)
- NitpickLawyer 1y agoClaude code is the strongest atm, but roocode or cline (vscode extensions) can also work well. Roo with gpt5-mini (so cheap, pretty fast) does diff based edits w/ good coordination over a task, and finishes most tasks that I tried. It even calls them "surgical diffs" :D
- lifthrasiir 1y agoI'm not sure what do you mean by "whole file format", but if it refers to the write_file tool that overwrites the whole file, there is also the replace tool which is apparently inspired by a blog post [1] by Anthropic. It seems that Claude Code also supports the roughly identical tool (inferred from error messages), so editing tools can't be the reason why Claude Code is good. [1] https://www.anthropic.com/engineering/swe-bench-sonnet https://www.anthropic.com/engineering/swe-bench-sonnet
- faangguyindia 1y agoMany agents can send diffs. Whole file reading and writing burns tokens and pollutes context.
- ofirpress 1y agoWe (the Princeton SWE-bench team) built an agent in ~100 lines of code that does pretty well on SWE-bench, you might enjoy it too: https://github.com/SWE-agent/mini-swe-agent https://github.com/SWE-agent/mini-swe-agent
- ghuntley 1y agocheers i'll add it in.
- simonw 1y agoOK that really is pretty simple, thanks for sharing. The whole thing runs on these prompts: https://github.com/SWE-agent/mini-swe-agent/blob/7e125e5dd49fe89808a34299d1d6be4ce28433ee/src/minisweagent/agents/default.py#L14 https://github.com/SWE-agent/mini-swe-agent/blob/7e125e5dd49... Your task: {{task}}. Please reply with a single shell command in triple backticks. To finish, the first line of the output of the shell command must be 'COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT'.
- nivertech 1y agosystem_template: str = "You are a helpful assistant that can do anything." anything? Sounds like an AI Safety issue ;)
- greleic 1y agoYou’d be surprised at the amount of time wasted because LLMs “think” they can’t do something. You’d be less surprised that they often “think” they can’t do something, but choose some straight ignorant path that cannot work. There are theoretically impossible things to do, if you buy into only the basics. If you open your mind, anything is achievable; you just need to break out of the box you’re in. If enough people keep feeding in that we need a time machine, the revolution will play out in all the timelines. Without it, Sarah Connor is lost.
- curvaturearth 1y ago
- faangguyindia 1y agoAnyone can build a coding agent which works on a) fresh code base b) when you've unlimited token budget now build it for old codebase, let's see how precisely it edits or removes features without breaking the whole codebase lets see how many tokens it consumes per bug fix or feature addition.
- simonw 1y agoThis comment belongs in a discussion about using LLMs to help write code for large existing systems - it's a bit out of place in a discussion about a tutorial on building coding agents to help people understand how the basic tools-in-a-loop pattern works.
- faangguyindia 1y agoanyone who used those coding agent can already see how it works, you can usually see agent fetching files, running commands, listing files and directories. i just wrote this comment so people aren't under false belief that it's pretty much all coding agents do, making all this fault tolerant with good ux is lot of work.
- ghuntley 1y ago> making all this fault tolerant with good ux is lot of work. Yes, it is. Not only in the department of good design in UX, but these LLMs keep evolving. They are software with different versions, and these different versions are continually deployed, which changes the behavior of the underlying model. So the harness needs to be continually updated to remain competitive.
- pcwelder 1y agoAgree. To reduce costs: 1. Precompute frequently used knowledge and surface early. For example repository structure, os information, system time. 2. Anticipate next tool calls. If a match is not found while editing, instead of simply failing, return closest matching snippet. If read file tool gets a directory, return directory contents. 3. Parallel tool calls. Claude needs either a batch tool or special scaffolding to promote parallel tool calls. Single tool call per turn is very expensive. Are there any other such general ideas?
- wetpaws 1y ago[dead]
- normie3000 1y agoWhy are any of the tools beyond the bash tool required? Surely listing files, searching a repo, editing a file can all be achieved with bash? Or is this what's demonstrated by https://news.ycombinator.com/item?id=45001234 https://news.ycombinator.com/item?id=45001234?
- zarzavat 1y agoSeparate tools is simpler than having everything go through bash. If everything goes through bash then you need some way to separate always safe commands that don't need approval (such as listing files), from all other potentially unsafe commands that require user approval. If you have listing files as a separate tool then you can also enforce that the agent doesn't list any files outside of the project directory.
- normie3000 1y ago> you need some way to separate always safe commands that don't need approval (such as listing files), from all other potentially unsafe commands that require user approval. This is a very strong argument for more specific tools, thanks!
- BenderV 1y agoWhy do humans need a IDE when we could do anything in a shell? Interface give you the informations you need at a given moment and the actions you can take.
- normie3000 1y agoTo me a better analogy would be: if you're a household of 2 who own 3 reliable cars, why would you need a 4th car with smaller cargo & passenger capacities, higher fuel consumption, worse off-road performance and lower top speed?
- faangguyindia 1y ago>Why are any of the tools beyond the bash tool required? My best guess is they started out with a limited subset of tools and realised they can just give it bash later.
- revskill 1y agoWhere is the program synthesis? My way of thinking is given primitives as tools, i want the model to construct and return the program to execute. Of course following nix philosophy is another way.
- ghuntley 1y agoSonnet does this via the edit tool and bash tool. It’s inbuilt to the model.
- revskill 1y agoInteresting.
- ghuntley 1y agoKeep an eye out for Sonnet generating Python files. What typically happens is: let's say you had a refactor that needs to happen, and let's say 100 symbols need renaming. Instead of invoking the edit tool 100 times, Sonnet has this behaviour where it will synthesise a Python program and then execute it to do it all in one shot.
- gbrindisi 1y agoI wonder how far I could go with a barebone agent prompted to take advantage of this with Sonnet and the Bash tool only, so that it will always try to use the tool to only do `python -c …`
- Western0 1y agoInstead of writing about how to build an agent, show us one project that this agent has built.
- ghuntley 1y agoI'd love to see you build your own agent and then share it here in HN as a show HN.
- chrisweekly 1y agoThank you for sharing. And remember to avoid feeding the trolls.
- jsjdkdkdkfk 1y agoYou haven't built anything. You are just a grifter spinning words in desperate need for attention. No one will ever use your "product" because it's useless. You know this and yet you keep trying to hustle the ignorant. Keep boosting yourself with alts.
- nickthegreek 1y agohas this agent fully built anything? that is a pretty straight forward question that you should be expected to answer when submitting something like this to HN.
- prodimmune 1y agoFor me, the post is missing an explanation of the reason why I would want to build my own coding agent instead of just using one of the publicly available ones.
- dotancohen 1y agoYou wouldn't. This project and this post are for the curious and for the learners.
- ghuntley 1y agoKnowing how to build your own agent and what that loop is going to be the new whiteboard coding question in a couple of years. Absolute. It's going to be the same as "Reverse this string", "I've got a linked list, can you reverse it?", or "Here's my graph, can you traverse it?"
- prodimmune 1y agoI see, thanks. I was wondering earlier if there would be any practical advantage in creating a custom agent, but couldn't think of any. I guess I simply misunderstood the purpose of your post.
- johannesboyne 1y agoA very similar "how to guide" can be found here https://ampcode.com/how-to-build-an-agent https://ampcode.com/how-to-build-an-agent written by Thorsten Ball. In general Amp is quite interesting - obviously no hidden gem anymore ;-) but great to see more tooling around agentic coding being published. Also, because similar agentic-approaches will be part of (certain/many?) software suits in the future.
- campbellbell 1y agoMakes sense, the author says he also works at Amp
- manojlds 1y agoGhuntley also works at Amp
- ghuntley 1y agoYes
- Revisional_Sin 1y agoThis looks much better, thank you.
- hobofan 1y agoI hate to do meta-commentary (the content is a decent beginner level introduction to the topic!), but this is some of the worst AI-slop-infused presentation I've seen with a blog post in a while. Why the unnecessary generated AI pictures in between? Why put everything that could have been a bullet point into it's own individual picture (even if it's not AI generated)? It's very visually distracting, breaks the flow of reading, and it's less accessible as all the picture lack alt-text. --- I see that it's based on a conference talk, so it's possibly just 1:1 the slides. If that's the case please put it up in it's native conference format, rather than this.
- Tewboo 1y agoBuilding a coding agent involves defining clear goals, leveraging AI, and iterating based on feedback. Start with a simple task and scale up.
- ghuntley 1y agoYep, once you've got the base coding agent (as in the workshop above), you can use it to build another agent or anything really. You start from that kernel and you can bootstrap upwards from that point forward and build anything.
- akk0 1y agoIf a picture is usually worth 1000 words, the pictures in this are on a 99.6% discount. What the actual...?
- ghuntley 1y agoIt's a conference workshop; these are the slides from the workshop, and the words are a dictation from the delivery.
- akk0 1y agoThat seems like a leaky implementation detail to me, for a published piece.
- mg74 1y agoYou should learn to be grateful for what other people do on their own time and demand nothing from you for you to benefit from it.
- ghuntley 1y agoThanks, mate.
- crazygringo 1y agoOn the other hand, when we critique, it is for the benefit of everyone who reads the critique and learns from it. That's why critique has value. To the original author/artist (if they see it), but also to everyone else who sees it. "Oh, I was going to intersperse text slides with a transcript, but I remember how offputting that was once on HN, so let's skip the slides."
- jsnell 1y agoText slides interspersed with the transcript work great normally. But this is mostly slides with just four words of content, and a transcript that just be repeats the same words.
- anonzzzies 1y agowhat's the best current cli (with a non interactive option) that is on par with Claude code but can work with other llms like ollama, openrouter etc? I tried stuff like aider but it cannot discover files, the open source gemini one but it was terrible; what is a good one that maybe is the same as CC if you plug in Opus?
- akdev1l 1y agoHaven’t tried many but the LLM cli seems alright to me
- ghuntley 1y agoOpencode is pretty good and likely meets your needs. One thing I'll call out is Gemini is terrible as an agent currently because Gemini is not a very good tool calling LLM. It's an oracle. https://ghuntley.com/cars/ https://ghuntley.com/cars/
- fullstackwife 1y agoExactly my approach to gaining knowledge and learning through building your own(`npx genaicode`). When I was presenting my work on a local meetup I got this exact question: "why u building this instead of just using Cursor". The answer is explained in this article(tl;dr; transformative experience), even though some parts of it are already outdated or will be outdated very soon as the technology is making progress every day.
- ghuntley 1y agoExactly, dude. This is the most important thing, the fundamentals to understand how this stuff works under the hood. I don't get how people aren't curious. Why aren't people being engineers? This is one of the most transformative things to happen in our profession in the last 20 years.
- digitcatphd 1y agoThe problem I have with this is that this style of agent design, providing enormous autonomy, makes sense in coding while keeping an expert human in the loop since it can self-correct via debugging. What would the other use cases of giving an agent this much autonomy be today versus a more structured flow versus something more like LangGraph?
- _pdp_ 1y agoVery simplistic view on the problem domain IMHO. Yah sure we can add a bunch of functions... ok. But how about snapshotting (or at least work with git), sandboxing both process and network level, prompt engineering, detect when stuck, model switching with parallel solvers for better solutions. These are the kind of things that make coding agents reliable - not function declarations.
- ghuntley 1y agoIt will be included as part of the third instalment. I write these coding agents for a living. Need to start with the basics as the basics is what people need to know to be able to automate functions at their employer, which may not be coding agents. This workshop was delivered at a data engineering conference, for example.
- user3939382 1y agoThe trick with coding agent is guiding the attention towards tasks it can expect will fit in the agent’s token window and deciding when to delegate. Funny as a PM you have the exact problem.
- ghuntley 1y agoYep. What you need to do is set its direction and then blow wind into its sails.
- codingdave 1y ago> You just keep throwing tokens at the loop, and then you've got yourself an agent. Money. Replace "tokens" with "money". You just keep throwing money at the loop, and then you've got yourself an agent.
- ghuntley 1y agoWho says that tokens are money? Local models are getting really good. For now, yes, if you want the best outcomes, you need to purchase tokens. But in the future, that may not be the case.
- rvz 1y ago> Local models are getting really good. They are great for basic tasks like summarization and translation but for the best results from coding agents and from 90% of so-called AI startups who are using these APIs, they are all purchasing tokens. No different to operating a slot-machine towards vibe-coders who are the AI companies favourite type of customer - spending endless amounts of money on tokens for another spin at fixing an error they don't understand.
- codingdave 1y agoI'd argue that local models still cost money, albeit less than the vendors would cost. Unless you happen to live off-grid and get your own electricity for free. I suppose there are free tiers available that work for some things as well. But with edge-case exceptions aside, yes, tokens cost money.
- JamesSwift 1y ago> Unless you happen to live off-grid and get your own electricity for free I just had to laugh and link this other article by the author https://ghuntley.com/internet/ https://ghuntley.com/internet/ Im not sure if he has a solar array but I assume so?
- ahrjay 1y agoI had a go at this using the on-device models in edge and chrome, phi4-mini and gemini nano, worked surprisingly well for such small models. https://ryanseddon.com/ai/how-to-build-an-agent-on-device/ https://ryanseddon.com/ai/how-to-build-an-agent-on-device/
- russfink 1y agoCan someone please explain the axes: Oracle, Agent, high safety and low safety?
- apwell23 1y agohow does opencode use my claude code subscription instead of making me use api key. thats one of the things stoppng me from rolling my own. having to use pay per use api.
- esafak 1y agoIt works with Claude Pro/Max subscriptions. https://opencode.ai/docs/#configure https://opencode.ai/docs/#configure
- popcorncowboy 1y agoIt simply spoofs itself as Claude Code when calling the API. Anthropic will shut this down the second it benefits them to do so. Like much of the gravy train right now, enjoy it while it lasts.
- wslomo 1y agoThe “valley of it will take our jobs” is an approaching light in the train tunnel. I live in the “valley”. I battle depression daily that I had before LLMs. Using LLMs and false guardrails to watchdog inherently deceitful output is a bad system smell. I know most are “on it”, and I’ve written a coding agent. But why is this page designed like some brainwashing repetitive Orwellian mantra? If it’s perceived that we need that, then we’re having to overcome something, and that something is common sense. So maybe we’ll happily write our coding agents with the intent to stand on the shoulders of a giant. But everyone knows we’re building the technological equivalent of a crystal meth empire.
- ITB 1y agoSo what do you want to do about it? It can’t be stopped.
- bgwalter 1y agoEven positive things like nuclear energy have been stopped in Germany for example, against an industry lobby that was almighty in the 1980s. Negative things like IP stealing "AI" can be stopped as well, and the population is increasingly watchful and will organize itself at some point.
- losvedir 1y agoCan someone confirm my understanding of how tool use works behind the scenes? Claude, ChatGPT, etc, through the API offer "tools" and give responses that ask for tool invocations which you then do and send the result back. However, the underlying model is a strictly text based medium, so I'm wondering how exactly the model APIs are turning the model response into these different sort of API responses. I'm assuming there's been a fine-tuning step with lots of examples which put desired tool invocations into some sort of delineated block or something, which the Claude/ChatGPT server understand? Is there any documentation about how this works exactly, and what those internal delineation tokens and such are? How do they ensure that the user text doesn't mess with it and inject "semantic" markers like that?
- jedimastert 1y agoHere's some docs from anthropic about their implementation https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/implement-tool-use#example-simple-tool-definition https://docs.anthropic.com/en/docs/agents-and-tools/tool-use... The disconnect here is that models aren't really "text" based, but token based, like how compilers don't use the code itself but a series of tokens that can include keywords, brackets, and other things. The output can include words but also metadata
- the_mitsuhiko 1y ago> I'm assuming there's been a fine-tuning step with lots of examples which put desired tool invocations into some sort of delineated block or something, which the Claude/ChatGPT server understand? As far as I know that's what's happening. They are training it to return tool responses when it's unsure about the answer or instructed to do so. There are generic tool trainings for just following the response format, and then probably there are some tool specific trainings. For instance gpt-oss loves to use the search tool, even if it's not mentioned anywhere. Anthropic lists well known tools in their document (eg: text_editor, bash). They are likely to have been trained specifically to follow some deeper semantics compared to just generic tool usage. The whole thing is pretty brittle and tool invocations are just taking place via in-band signalling, delineated by special tokens or token sequences.
- libraryofbabel 1y ago
- dangoodmanUT 1y agoAll these images make it impossibly hard to read... gd scroll simulator
- loquisgon 1y agoNitpicking. What the author calls sequence diagrams are not that. They are flowcharts.
- helsinki 1y ago“will transfirm you from being a consumer to a producer” You mean, “will teach you to make REST calls instead of letting a script do it for you”. We are all consumers. Unless, of course, you work at one of three companies.
- overgard 1y agoI'd love for this kind of thing without the incredibly obnoxious commentary. I felt like I was reading propaganda rather than a how-to.
- pnt12 1y agoLate to the party, but thanks to the author for this: I learned a lot from this article, although I have mixed feelings about it. The good: cool to know more about the agents loops, different types of LLMs, ideas for prompting. I definitely wanna try it - would be cool to prompt the agent to build some feature, have it in a loop of building, testing, reviewing and, go have breakfast, come back and only have to tweak a reasonably legible and working code. The bad: some of these concepts, maybe they are bit meant to mislead, buy really trigger my 'snake oil alert'. The AI compass? Agentic VS non agentic LLMs? People who are getting work done between meetings? Maybe this is more of a vibe thing, so it's not trivial / logical to explain, but in this space there's so many loosely defined concepts that that really trigger skepticism in me (and others). The ugly: 1 word slides ;p