Agent based functionality should be built iteratively by starting with minimal specification, and looping through alternating usage and refinement steps.
3 items
Code Windows
prompt.txt
Keep ++added text++ close to the surrounding sentence.
Remove --discarded text-- and call out ==highlighted text==.
article.html
<asideclass="code-window-note">HTML blocks can include a very long line and still wrap inside the shared code window chrome.</aside>
literal-wrap.txt
> This is a literal greater-than sign.
<dfn>Tags display as text here.</dfn>
Quotes stay "quoted".
The difference between what you need and what you have. Gaps identify a need for Reflection. In the case of using LLMs, Gaps are a great chance for you to theorize what is going wrong (a core skill of Software Engineering), and encode your learing in a way that will steer the LLM. If you do this right, you will have improved Convergence and will be much better off the next time the same situation arrives.
Convergence
The distance between what you know and what an Agent can reliably act on. Through your (or your users’) interactions with an Agent, you should aim to reduce the distance between “what I would have done” and “what it did”. When using Agents as a primary control plane (like code assistance) this is critical, because the LLM is a static model. It does not ever update or learn by interacting with you in the way that you learn from interacting with it. In order to continue to have the LLM “follow” you as you learn what good and bad outcomes look like, you have to provide that signal to the LLM in a durable and accessible way. Until something like continuous fine tuning or self adaptive world models exist, this is about the best you’ll get.
Software Engineering
The act of:
theorizing a model of a business and technical domain
abstracting that theory into automations
updating those automations congruous with external feedback
All while maintaining or improving system coherence. Generally speaking, writing code is the lowest leverage task in the stack.