# Armin Ronacher - Agent Design Is Still Hard (Highlights)

## Metadata
**Review**:: [readwise.io](https://readwise.io/bookreview/56741125)
**Source**:: #from/readwise #from/reader
**Zettel**:: #zettel/fleeting
**Status**:: #x
**Authors**:: [[Armin Ronacher]]
**Full Title**:: Agent Design Is Still Hard
**Category**:: #articles #readwise/articles
**Category Icon**:: 📰
**URL**:: [lucumr.pocoo.org](https://lucumr.pocoo.org/2025/11/21/agents-are-hard/)
**Host**:: [[lucumr.pocoo.org]]
**Highlighted**:: [[2025-12-09]]
**Created**:: [[2025-12-13]]
## Highlights
- When you build your own agent, you have the choice of targeting an underlying SDK like the OpenAI SDK or the Anthropic SDK, or you can go with a higher level abstraction such as the Vercel AI SDK or Pydantic. ([View Highlight](https://read.readwise.io/read/01kc0a4fgjxv8mm07s07kzxza0)) ^964944408
- The first is that the differences between models are significant enough that you will need to build your own agent abstraction. We have not found any of the solutions from these SDKs that build the right abstraction for an agent. ([View Highlight](https://read.readwise.io/read/01kc0a66gm2qz1r457rz2zwddc)) ^964944529
- Because the system prompt and the tool selection now have to be mostly static, we feed a dynamic message later to provide information such as the current time. Otherwise, this would trash the cache. ([View Highlight](https://read.readwise.io/read/01kc0aat8c5gj5ggj5q96z9ngh)) ^964945029
- Every time the agent runs a tool you have the opportunity to not just return data that the tool produces, but also to feed more information back into the loop. For instance, you can remind the agent about the overall objective and the status of individual tasks. ([View Highlight](https://read.readwise.io/read/01kc0acgp2hgcc5zw8r203zm2c)) ^964945125
- If you expect a lot of failures during code execution, there is an opportunity to hide those failures from the context. This can happen in two ways. One is to run tasks that might require iteration individually. You would run them in a subagent until they succeed and only report back the success, plus maybe a brief summary of approaches that did not work. It is helpful for an agent to learn about what did not work in a subtask because it can then feed that information into the next task to hopefully steer away from those failures. ([View Highlight](https://read.readwise.io/read/01kc0aew6hswp3ajzxrt07hmjw)) ^964945218