<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://basemodels.joshwand.com/">
    <title>Base Models</title>
    <link href="https://basemodels.joshwand.com//feed.xml" rel="self" >
    <link href="https://basemodels.joshwand.com/" >
    <updated>2026-08-08T07:19:22Z</updated>
    <id>https://basemodels.joshwand.com/</id>
        <entry>
            <title>
                YouHaveToReadTheOutput
                
            </title>
            <updated>2026-03-07T23:29:51.331Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/you-have-to-read-the-output/</id>
            <content type="html">
                &lt;h2 id=&quot;every-single-line&quot; tabindex=&quot;-1&quot;&gt;Every. Single. Line.&lt;/h2&gt;
&lt;h3 id=&quot;at-every-stage-of-the-process&quot; tabindex=&quot;-1&quot;&gt;At every stage of the process&lt;/h3&gt;
&lt;h4 id=&quot;because-garbage-in-garbage-out&quot; tabindex=&quot;-1&quot;&gt;Because garbage in == garbage out&lt;/h4&gt;
&lt;p&gt;I have used LLMs to do a lot of different kinds of things. Generating text, generating code, summarizing text, doing deep research, parsing data, you name it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It has made shit up at some point on &lt;ins&gt;every single one&lt;/ins&gt; of those tasks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&#39;re going to put your name on it, you&#39;d better know what it says. You&#39;d better know that it&#39;s correct. (Not just plausible.) You&#39;d better be willing to stake your reputation on it. Because if something makes it through, that can have real-world-consequences.&lt;/p&gt;
&lt;p&gt;Always expand the thinking blocks to see what &amp;quot;reasoning&amp;quot; it used to come to its conclusions.&lt;/p&gt;
&lt;p&gt;Often you&#39;ll find some bit of flawed reasoning, or a &amp;quot;fact&amp;quot; without a source, that will affect the reasoning and logic of everything that follows.&lt;/p&gt;
&lt;h2 id=&quot;effect-chain-types&quot; tabindex=&quot;-1&quot;&gt;Effect chain types&lt;/h2&gt;
&lt;h3 id=&quot;linear&quot; tabindex=&quot;-1&quot;&gt;Linear&lt;/h3&gt;
&lt;p&gt;A therefore B therefore C therefore D.&lt;/p&gt;
&lt;pre class=&quot;mermaid&quot;&gt;graph LR
A--&gt;B--&gt;C--&gt;D
classDef bad stroke:red,stroke-width:2px;
class B,C,D bad&lt;/pre&gt;&lt;p&gt;If B isn&#39;t quite right, then C might also be wrong, and therefore D might be wrong.&lt;/p&gt;
&lt;p&gt;Example: LLM recommends a dated coding pattern that&#39;s not compatible with the latest versions of various libraries, which then causes untraceable dependency hell trying to figure out why a feature isn&#39;t working.&lt;/p&gt;
&lt;h3 id=&quot;generative-infection-spread&quot; tabindex=&quot;-1&quot;&gt;Generative Infection Spread&lt;/h3&gt;
&lt;pre class=&quot;mermaid&quot;&gt;graph LR
A--&gt;B
A--&gt;C
B--&gt;D
B--&gt;E
B--&gt;F
C--&gt;G
C--&gt;H

classDef bad stroke:red,stroke-width:2px;
class B,D,E,F bad&lt;/pre&gt;&lt;p&gt;Real-life example: When generating detailed requirements for a feature, the LLM invented a feature it thought logical that nobody asked for, and it affected a big chunk of the architecture and subsequently generated code, tests, and documentation.&lt;/p&gt;
&lt;h3 id=&quot;tainted-aggregate-result&quot; tabindex=&quot;-1&quot;&gt;Tainted Aggregate Result&lt;/h3&gt;
&lt;pre class=&quot;mermaid&quot;&gt;graph LR

A--&gt;B--&gt;X
A--&gt;C--&gt;X--&gt;W
Y--&gt;Z
A--&gt;D--&gt;W--&gt;Y
A--&gt;E--&gt;V
A--&gt;F--&gt;V--&gt;Y

classDef bad stroke:red,stroke-width:2px;
class B,X,W,Y,Z bad&lt;/pre&gt;&lt;p&gt;Example: In the thinking traces of a deep research task, the LLM took some speculative marketing copy as fact, which led it to classify a bunch of other products as inferior because they lacked the nonsensical feature.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Every single one of these can have real-world consequences, in misinformed purchasing decisions, missed deadlines and increased project costs, or egg one&#39;s face when the customer discovers your mistake.&lt;/p&gt;
&lt;h3 id=&quot;how-to-read-every-line-efficiently&quot; tabindex=&quot;-1&quot;&gt;How to read every line efficiently&lt;/h3&gt;
&lt;p&gt;I&#39;m still figuring this part out.&lt;/p&gt;
&lt;p&gt;But it&#39;s clear that &lt;strong&gt;the more you foresee potential consequences of an output, the more carefully you should be reading it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Reading early outputs closely can also uncover missed &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/meatspace-context/&quot;&gt;MeatspaceContext&lt;/a&gt; that will dramatically affect the quality and usefulness of your end result.&lt;/p&gt;
&lt;p&gt;A good &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;SocraticMode&lt;/a&gt; planning process will hopefully help you uncover these earlier in the process.&lt;/p&gt;
&lt;h4 id=&quot;my-current-workflow-nov-2025&quot; tabindex=&quot;-1&quot;&gt;My Current Workflow (Nov 2025)&lt;/h4&gt;
&lt;p&gt;I’m using mostly Claude Code, with auto-approvals turned off. I use a cute little app called &lt;a href=&quot;https://github.com/ctoth/claudio&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Claudio&lt;/a&gt; that uses Claude Code &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;hooks&lt;/a&gt; to play different sounds based on different events, like reads, writes, tool uses, and most importantly, approval requests.&lt;/p&gt;
&lt;p&gt;I’ll make a plan, tell it to proceed with implementation , the listen for the appropriate beep&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://basemodels.joshwand.com/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; to know that it’s time to approve something.&lt;/p&gt;
&lt;p&gt;Then I’ll read that particular edit, and either approve it, which is most times, or give it better steering on where it’s gone astray.&lt;/p&gt;
&lt;p&gt;It’s definitely slower than &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;YOLO mode&lt;/a&gt;,  but if I’m writing code that is going to production, or that &lt;strong&gt;must&lt;/strong&gt; be correct, better safe than sorry. It’s rare that I make it through a string of edits without it needing some correction or clarification, even with the best reasoning models. If the edits themselves are sufficiently long, then the very act of making the edits is enough to stretch the context beyond its ability to remain coherent.&lt;/p&gt;
&lt;p&gt;Steering helps, but sometimes you have to &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/abc-always-be-compacting/&quot;&gt;ABC - Always Be Compacting&lt;/a&gt; or just &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;DeclareContextBankruptcy&lt;/a&gt; and start fresh.&lt;/p&gt;
&lt;p&gt;For anything beyond the simplest task, you should be using &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;FileSystemMemory&lt;/a&gt; to record the design and the reasoning and context behind it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;footnote: as always, this post is 100% human-written.&lt;/p&gt;
&lt;hr class=&quot;footnotes-sep&quot; /&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Unfortunately Claudio’s default macOS sounds are crap—the sound doesn’t match the severity level at all. I’ll post my sound scheme here at some point. &lt;a href=&quot;https://basemodels.joshwand.com/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/you-have-to-read-the-output/" >
        </entry>
        <entry>
            <title>
                Words I Hate in AI
                
            </title>
            <updated>2026-02-23T05:27:19.216Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/words-i-hate-in-ai/</id>
            <content type="html">
                &lt;p&gt;&lt;em&gt;(AI and adjacent)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Meaningless, misleading, credulous, or just tired. If you see these words, hold on to your wallet:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;____ Driven Development (PromptDrivenDevelopment, SpecDrivenDevelopment, AgentDrivenDevelopment) &lt;em&gt;(new 2026-02-22)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&amp;quot;AI Native&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/agentic-ai-agents/&quot;&gt;Agentic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Supercharge/Turbocharge&lt;/li&gt;
&lt;li&gt;10x / 100x&lt;/li&gt;
&lt;li&gt;Automate Your Workflows&lt;/li&gt;
&lt;li&gt;Founder&lt;/li&gt;
&lt;li&gt;Hacker&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/words-i-hate-in-ai/" >
        </entry>
        <entry>
            <title>
                What is this thing?
                
            </title>
            <updated>2025-09-29T04:31:09.599Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/what-is-this-thing/</id>
            <content type="html">
                &lt;p&gt;Well, first, it&#39;s kind of like a &lt;a href=&quot;https://en.wikipedia.org/wiki/Wiki&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;wiki&lt;/a&gt;, in that it&#39;s Hypertext, and the original wiki &lt;a href=&quot;https://kidneybone.com/c2/wiki/WikiWikiWeb&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;WikiWikiWeb&lt;/a&gt;, which had pages based on concepts, with hypertext linking between them, hearkening back to its predecessor, &lt;a href=&quot;https://en.wikipedia.org/wiki/HyperCard&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;HyperCard&lt;/a&gt;. (This site, unlike many wikis, is not user-editable.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This site is a hyperlinked concept map, representing my interconnected understanding of and opinions about all things AI (and AI-adjacent).&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The companion Substack, &lt;a href=&quot;https://modelbehaviors.substack.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Model Behaviors&lt;/a&gt;, is sort of a digest of new and edited pages from this site, along with some more essay-like material. Many of the outgoing links in the Substack posts point to pages/concepts on this site, and allows readers to dive deeper into topics of interest that would be repetitive to include in the newsletter.&lt;/p&gt;
&lt;p&gt;I&#39;m thinking about how best to solicit ideas and feedback; for now, you can DM me on Substack or email josh (at) &lt;a href=&quot;http://joshwand.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;joshwand.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Written in &lt;a href=&quot;https://obsidian.md/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Obsidian&lt;/a&gt; and published with the &lt;a href=&quot;https://github.com/oleeskild/obsidian-digital-garden&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Digital Garden plugin&lt;/a&gt;.&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/what-is-this-thing/" >
        </entry>
        <entry>
            <title>
                SlopDetection
                
            </title>
            <updated>2026-08-08T07:14:02.587Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/strategies/slop-detection/</id>
            <content type="html">
                &lt;p&gt;aka LLMogisms&lt;/p&gt;
&lt;p&gt;Current AI-written documents have a certain &amp;quot;smell&amp;quot; to them that make it very clear that it was written by AI.&lt;/p&gt;
&lt;p&gt;Here&#39;s a list of shibboleths that I&#39;ve found to be reliable indicators of AI authorship.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pattern Example&lt;/th&gt;
&lt;th&gt;Regular Expression&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;code&gt;—&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X → Y → Z&lt;/td&gt;
&lt;td&gt;&lt;code&gt;→&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X + Y&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&#92;w &#92;+ &#92;w&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It&#39;s not just X. It&#39;s Y.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;(stead of|n&#39;t|not) just.+?(&#92;.|—)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X. No/Never Y.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[—&#92;.;] (Just|No|Never&#92;s)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10k+ Xs.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[0-9]k?&#92;+&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X itself.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;itself&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;that framing really resonated&lt;/td&gt;
&lt;td&gt;&lt;code&gt;framing&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Here&#39;s why X works:&lt;/td&gt;
&lt;td&gt;&lt;code&gt;t*here&#39;s(.){3,50}[&#92;.—:]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Why This Works/Matters&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Why (.){3,20} (works|matters)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zero Xs.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;zero&#92;s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The X is the Y.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;the ([^&#92;s]+){1,3} is the ([^&#92;s]+){1,5}&#92;s*[—:&#92;.;]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clicked/resonated&lt;/td&gt;
&lt;td&gt;&lt;code&gt;(clicked|resonated)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(number)-layer&lt;/td&gt;
&lt;td&gt;&lt;code&gt;([0-9]+|one|two|three|four|etc)-layer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;the X layer&lt;/td&gt;
&lt;td&gt;&lt;code&gt;the ([^&#92;s])+ layer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;the key/critical insight:&lt;/td&gt;
&lt;td&gt;&lt;code&gt;the (key|critical) ([^&#92;s])+&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;the real/honest X&lt;/td&gt;
&lt;td&gt;&lt;code&gt;the (real|honest) ([^&#92;s])+&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;| the X worth Ying              | &lt;code&gt;worth ([^&#92;s])+ing&lt;/code&gt;                               |&lt;br /&gt;
| the Subject Verbs the Object [never the Counterexample] | |&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[the] honest ...&lt;/li&gt;
&lt;li&gt;load-bearing&lt;/li&gt;
&lt;li&gt;invariant&lt;/li&gt;
&lt;li&gt;landing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And to detect AI-generated code defects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;would&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;in production&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assume&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/strategies/slop-detection/" >
        </entry>
        <entry>
            <title>
                PersistentContext
                
            </title>
            <updated>2025-09-29T04:46:56.359Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/strategies/persistent-context/</id>
            <content type="html">
                &lt;p&gt;(aka: documentation)&lt;br /&gt;
(aka: &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;memory&lt;/a&gt; - but that&#39;s more complicated)&lt;/p&gt;
&lt;p&gt;If your AI is an &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;Amnesiac Intern or Junior Developer&lt;/a&gt;, they&#39;re going to need onboarding to your project. Since every fresh batch of Interns or new team members starts with a blank slate, you need re-usable onboarding material.&lt;/p&gt;
&lt;p&gt;The form that material takes will vary by the kind of work you&#39;re doing. It could be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Information about your company and products&lt;/li&gt;
&lt;li&gt;Customer personas&lt;/li&gt;
&lt;li&gt;System architecture&lt;/li&gt;
&lt;li&gt;Team norms and processes&lt;/li&gt;
&lt;li&gt;Style guide (your company&#39;s, or your personal style)&lt;/li&gt;
&lt;li&gt;Brand guidelines&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Point is, the AI needs this context in every new conversation, so keep it someplace handy.&lt;/p&gt;
&lt;p&gt;There are many ways of organizing it.&lt;/p&gt;
&lt;h3 id=&quot;coding-tools&quot; tabindex=&quot;-1&quot;&gt;Coding Tools&lt;/h3&gt;
&lt;p&gt;In AI the AI coding space, this was pioneered by the Cline Memory Bank, which I&#39;ve &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/my-coding-rules/&quot;&gt;adapted&lt;/a&gt; to my own &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;MentalModel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some people would like you to put this in a single file (or one per directory) called &lt;a href=&quot;http://agents.md/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;AGENTS.md&lt;/a&gt;, or &lt;a href=&quot;http://claude.md/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;CLAUDE.md&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;chat-gpt-and-claude&quot; tabindex=&quot;-1&quot;&gt;ChatGPT and Claude&lt;/h4&gt;
&lt;p&gt;Projects. (TK)&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/strategies/persistent-context/" >
        </entry>
        <entry>
            <title>
                PeriodicReminders
                
            </title>
            <updated>2025-08-22T02:13:23.923Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/strategies/periodic-reminders/</id>
            <content type="html">
                &lt;p&gt;If you have a set of constraints that the AI has to operate under, phrase them somewhere as a brief list. &lt;strong&gt;Periodically, repeat the list of instructions in your message:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Please rewrite the next section of my resume, keeping in mind:&lt;br /&gt;
• Each bullet point must fit on a single line&lt;br /&gt;
• Each bullet point must begin with an action verb&lt;br /&gt;
• Where possible, quantify the impact to the business&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This applies equally to important context—restating your goals every once in a while will help keep the AI on track.&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/strategies/periodic-reminders/" >
        </entry>
        <entry>
            <title>
                NewConversationWithSummary
                
            </title>
            <updated>2025-12-06T21:15:29.235Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/strategies/new-conversation-with-summary/</id>
            <content type="html">
                &lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/Pasted%20image%2020250904234539.png&quot; alt=&quot;Pasted image 20250904234539.png|350&quot; width=&quot;350px&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]&lt;br /&gt;
2025-12-06: I&#39;ve started to notice multiple agents starting to refer to this as a &amp;quot;handoff&amp;quot;. We&#39;ll see if the industry settles on a term.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&quot;keep-conversations-short-and-focused-handoff-to-a-new-conversation-often&quot; tabindex=&quot;-1&quot;&gt;Keep conversations short and focused; handoff to a new conversation often&lt;/h4&gt;
&lt;p&gt;If your conversation starts to get too long, you run the risk of losing important stuff. When you’ve strayed further and further afield of your original task, or the conversation is just very very long, it’s time to start a new conversation.&lt;/p&gt;
&lt;p&gt;You don’t have to start from scratch, though! Ask the AI for a summary of your conversation up til now (or your current working draft, working decisions, etc.), including all relevant facts and details, so that a new chatbot would be able to continue without any additional context. You can collaborate with the AI on the handoff document if you think it’s left something out or got something wrong.&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/strategies/new-conversation-with-summary/" >
        </entry>
        <entry>
            <title>
                NamedRules
                
            </title>
            <updated>2025-09-29T04:29:30.116Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/strategies/named-rules/</id>
            <content type="html">
                &lt;p&gt;Many tools like ChatGPT allow you to personalize your assistant by adding a set of instructions that get applied to every conversation.&lt;/p&gt;
&lt;p&gt;If you have certain conventions, rules, or standards that you always want your AI to follow, list them here.&lt;/p&gt;
&lt;p&gt;There&#39;s no guarantee the LLM will follow them, especially once the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/recency-bias/&quot;&gt;the conversations get long&lt;/a&gt;. Occasionally, the AI will need to be reminded about a particular rule. To make this easier, I create a easy-to-type name for each rule, so I can just tell the AI exactly what rule it’s failed to follow.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;## NoSyntheticData&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;**Definition**: If you encounter a problem when working with data, NEVER fall back to some fake or simplified data. You can do this in a test in order to debug the issue, but NEVER use fake data in non-test code.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[Examples of violations]&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If I catch the AI oversimplifying the problem by using a contrived example, I can simply reply “NoSyntheticData” and it will know exactly what it did wrong and make the appropriate correction. (You can also combine this with the “Go Back in Time” technique, and simply append it as a reminder (“don’t forget: NoSyntheticData”) to your previous request that generated the bad behavior.&lt;/p&gt;
&lt;p&gt;This works because LLMs have been optimized for “Needle-in-a-Haystack” use cases—retrieving relevant facts from earlier content. (This optimization is to make something called “RAG” work well. Future post to come.) It might not proactively remember the rule on its own, but if you remind it, it can retrieve and re-state it to bring it to the front of its mind, so to speak.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;credit to &lt;a href=&quot;https://forum.cursor.com/t/3-7-sonnet-way-too-good-way-too-bad/57907/2&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;normalnormie on the Cursor Forum&lt;/a&gt; for the idea.&lt;/em&gt;&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/strategies/named-rules/" >
        </entry>
        <entry>
            <title>
                My Coding Rules
                
            </title>
            <updated>2025-12-18T07:53:46.461Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/strategies/my-coding-rules/</id>
            <content type="html">
                &lt;p&gt;&lt;a href=&quot;https://github.com/joshwand/coding-agent-rules&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://github.com/joshwand/coding-agent-rules&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Wherein I put my ideas into practice.&lt;/p&gt;
&lt;p&gt;Incorporates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/persistent-context/&quot;&gt;PersistentContext&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/named-rules/&quot;&gt;NamedRules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;SocraticMode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/strategies/my-coding-rules/" >
        </entry>
        <entry>
            <title>
                GoBackInTime
                
            </title>
            <updated>2025-09-12T16:34:57.632Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/strategies/go-back-in-time/</id>
            <content type="html">
                &lt;p&gt;When working with LLMs, I often end up on “side quests”—back-and-forths as I try to figure something out with the AI’s help, or how to phrase something in a way the AI “understands”. &lt;strong&gt;This risks distracting the AI with the details of the side conversation,&lt;/strong&gt; rather than the main substance. Here’s a simple technique to prevent the AI from getting distracted: when you get a response that you don’t like, instead of having an extended dialogue to clarify it**, go back end edit the previous message**, adding clarifications or caveats. If the AI still makes a mistake, add that as an additional condition to your original message.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/IMG_8386.jpeg&quot; alt=&quot;IMG_8386.jpeg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Alternately, if you do end up on a tangent that yields an interesting insight, scroll back to the point in the conversation where you wish you’d had that insight, and restart your conversation from there—edit the first side-tracking message to continue the conversation with your newfound knowledge.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/Pasted%20image%2020250912092246.jpg&quot; alt=&quot;Pasted image 20250912092246.jpg&quot; /&gt;&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/strategies/go-back-in-time/" >
        </entry>
        <entry>
            <title>
                ABC - Always Be Compacting
                
            </title>
            <updated>2025-09-29T04:29:16.998Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/strategies/abc-always-be-compacting/</id>
            <content type="html">
                &lt;p&gt;in the context of a coding assistant, most apps now have a conversation compaction function (Claude Code&#39;s &lt;code&gt;/compact&lt;/code&gt;, RooCode&#39;s &amp;quot;Intelligent Context Compression&amp;quot;, etc.)&lt;/p&gt;
&lt;p&gt;Equivalent to &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/new-conversation-with-summary/&quot;&gt;NewConversationWithSummary&lt;/a&gt;, but with a single command. That said, you will have limited control over the contents of the summary when you use the AI tool, whereas if you do it manually, you can revise it as you go.&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/strategies/abc-always-be-compacting/" >
        </entry>
        <entry>
            <title>
                SemanticToolWrapper
                
            </title>
            <updated>2025-11-30T17:43:23.507Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/semantic-tool-wrapper/</id>
            <content type="html">
                &lt;p&gt;Instead of asking a reasoning model to read, say, an entire webpage, we wrap the tool call in a smaller faster model that distills the page content into a lean semantic structure: &lt;strong&gt;data + actions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Input:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;script&amp;gt;...300kb&amp;lt;/script&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;giant webpage&amp;lt;/h1&amp;gt;
&amp;lt;a href=&amp;quot;&amp;quot;&amp;gt;&amp;lt;button onClick=&amp;quot;save()&amp;quot;&amp;gt;save&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;a href=&amp;quot;&amp;quot;&amp;gt;&amp;lt;button onClick=&amp;quot;edit()&amp;quot;&amp;gt;edit&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;

&amp;lt;more&amp;gt;&amp;lt;markup&amp;gt;

(useful data)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The small model turns this into:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;data: {&amp;quot;some&amp;quot;:&amp;quot;useful data&amp;quot;},
available_actions: [&amp;quot;save&amp;quot;, &amp;quot;delete&amp;quot;, &amp;quot;edit&amp;quot;, &amp;quot;next&amp;quot;, &amp;quot;previous&amp;quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which is what our reasoning model works with. No extraneous tokens diluting the core meaning.&lt;/p&gt;
&lt;p&gt;There is, of course, a risk of misinterpretation, hallucination, and a loss of information fidelity, but perhaps the tool call could specify a level of detail or some other instructions/context about what it expects to see.&lt;/p&gt;
&lt;p&gt;The small model needs a very good prompt, and the correct context from its caller so it is primed for a good semantic interpretation of the raw content.&lt;/p&gt;
&lt;p&gt;Web browsing is the obvious usecase, but really it can be the result of any tool call.&lt;/p&gt;
&lt;p&gt;Any time you&#39;re getting back raw data from a tool call, if it&#39;s not already formatted for consumption by the model, it should be wrapped in something that has enough context to transform it so the calling model only ever sees the distilled data.&lt;/p&gt;
&lt;p&gt;TK  state machine / graph traversal&lt;/p&gt;
&lt;p&gt;c.f. hypercard, choose-your-own-adventure, text-based dungeon crawlers&lt;/p&gt;
&lt;p&gt;mirrors how brain turns raw visual data, memories, etc, into a mental model.&lt;/p&gt;
&lt;p&gt;TK TODO we used to parse unstructured data into strongly-typed data structures, since data structures were the atoms of computing. now we parse the unstructured data into LANGUAGE / SEMANTIC atoms, since that&#39;s the atom of LLM reasoning.&lt;/p&gt;
&lt;p&gt;LLM said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Instead of agents getting:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;...lots of irrelevant markup...
&amp;lt;div class=&amp;quot;navigation&amp;quot;&amp;gt;...menu items...
&amp;lt;div class=&amp;quot;job-listing&amp;quot;&amp;gt;Senior Engineer at Acme Corp&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;...ads, footers, tracking scripts...&lt;/p&gt;
&lt;p&gt;They get:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;BrowserState(
    scene_description=&amp;quot;Senior engineering role with competitive compensation&amp;quot;,
    available_actions=[&amp;quot;easy_apply_button&amp;quot;, &amp;quot;save_job&amp;quot;],
    state_data={&amp;quot;job_title&amp;quot;: &amp;quot;Senior Engineer&amp;quot;, &amp;quot;salary&amp;quot;: &amp;quot;$150k-200k&amp;quot;}
)
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&#39;d be an interesting experiment to have it output something that literally looked like a dungeon-crawler of the problem-space:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You are on a job listing page for a senior engineering role at CompanyX. It contains the following data: [xxxxx]&lt;/p&gt;
&lt;p&gt;Do you: a) easy_apply_button, b) save_job, or c) something else?&lt;/p&gt;
&lt;/blockquote&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/semantic-tool-wrapper/" >
        </entry>
        <entry>
            <title>
                RubberDuck
                
            </title>
            <updated>2025-11-30T17:42:29.921Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/rubber-duck/</id>
            <content type="html">
                &lt;p&gt;Try to explain your problem to a rubber duck, and the process of formulating the explanation will lead you to possible solutions.  &lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://basemodels.joshwand.com/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;This is one of the best uses of AI chat. I use it to explore and refine ideas, along with &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;SocraticMode&lt;/a&gt;, as the process of talking it through helps me find areas I haven&#39;t explored, or challenges my assumptions.&lt;/p&gt;
&lt;p&gt;Some people like to explicitly add &amp;quot;challenge my assumptions&amp;quot; to their initial prompt for this kind of thing, though I haven&#39;t yet found the need to.&lt;/p&gt;
&lt;hr class=&quot;footnotes-sep&quot; /&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Hunt, Andrew; Thomas, David (1999). &lt;a href=&quot;https://archive.org/details/isbn_9780201616224&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;&lt;em&gt;The Pragmatic Programmer: From Journeyman to Master&lt;/em&gt;&lt;/a&gt;. Addison Wesley. &lt;a href=&quot;https://en.wikipedia.org/wiki/ISBN_(identifier)&quot; title=&quot;ISBN (identifier)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;ISBN&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Special:BookSources/978-0201616224&quot; title=&quot;Special:BookSources/978-0201616224&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;978-0201616224&lt;/a&gt;. p. 95, footnote. &lt;a href=&quot;https://basemodels.joshwand.com/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/rubber-duck/" >
        </entry>
        <entry>
            <title>
                RecencyBias
                
            </title>
            <updated>2025-09-29T04:29:19.101Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/recency-bias/</id>
            <content type="html">
                &lt;h3 id=&quot;why-ai-forgets&quot; tabindex=&quot;-1&quot;&gt;Why AI Forgets&lt;/h3&gt;
&lt;p&gt;During [training](How LLMs Work), when performing the &amp;quot;how good was our guess&amp;quot; adjustment, the system doesn&#39;t give the same weight to all the words in the sequence:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It gives higher importance to the most recent words:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/_blog/coding%20rules%20essay%20images/4.png&quot; alt=&quot;the quick brown fox jumped over the lazy(bar graph)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What that means, in practical terms, is that &lt;strong&gt;the longer your conversation, the less influence the earlier content has.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To guess the next word, the LLM primarily focuses on the most recent words. Most model training also add extra weight to the beginning of the conversations, to try to preserve your initial intent or instructions. &lt;strong&gt;What gets ignored is actually the &lt;em&gt;middle&lt;/em&gt;&lt;/strong&gt; of a long conversation:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/_blog/coding%20rules%20essay%20images/missing-middle.png&quot; alt=&quot;missing-middle.png|350&quot; width=&quot;350px&quot; /&gt;&lt;/p&gt;
&lt;h1 id=&quot;combatting-recency-bias&quot; tabindex=&quot;-1&quot;&gt;Combatting Recency Bias&lt;/h1&gt;
&lt;div class=&quot;transclusion internal-embed is-loaded&quot;&gt;&lt;a class=&quot;markdown-embed-link&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/periodic-reminders/&quot; aria-label=&quot;Open link&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;svg-icon lucide-link&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;div class=&quot;markdown-embed&quot;&gt;
&lt;p&gt;If you have a set of constraints that the AI has to operate under, phrase them somewhere as a brief list. &lt;strong&gt;Periodically, repeat the list of instructions in your message:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Please rewrite the next section of my resume, keeping in mind:&lt;br /&gt;
• Each bullet point must fit on a single line&lt;br /&gt;
• Each bullet point must begin with an action verb&lt;br /&gt;
• Where possible, quantify the impact to the business&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This applies equally to important context—restating your goals every once in a while will help keep the AI on track.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;transclusion internal-embed is-loaded&quot;&gt;&lt;a class=&quot;markdown-embed-link&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/go-back-in-time/&quot; aria-label=&quot;Open link&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;svg-icon lucide-link&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;div class=&quot;markdown-embed&quot;&gt;
&lt;p&gt;When working with LLMs, I often end up on “side quests”—back-and-forths as I try to figure something out with the AI’s help, or how to phrase something in a way the AI “understands”. &lt;strong&gt;This risks distracting the AI with the details of the side conversation,&lt;/strong&gt; rather than the main substance. Here’s a simple technique to prevent the AI from getting distracted: when you get a response that you don’t like, instead of having an extended dialogue to clarify it**, go back end edit the previous message**, adding clarifications or caveats. If the AI still makes a mistake, add that as an additional condition to your original message.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/IMG_8386.jpeg&quot; alt=&quot;IMG_8386.jpeg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Alternately, if you do end up on a tangent that yields an interesting insight, scroll back to the point in the conversation where you wish you’d had that insight, and restart your conversation from there—edit the first side-tracking message to continue the conversation with your newfound knowledge.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/Pasted%20image%2020250912092246.jpg&quot; alt=&quot;Pasted image 20250912092246.jpg&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;transclusion internal-embed is-loaded&quot;&gt;&lt;a class=&quot;markdown-embed-link&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/named-rules/&quot; aria-label=&quot;Open link&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;svg-icon lucide-link&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;div class=&quot;markdown-embed&quot;&gt;
&lt;p&gt;Many tools like ChatGPT allow you to personalize your assistant by adding a set of instructions that get applied to every conversation.&lt;/p&gt;
&lt;p&gt;If you have certain conventions, rules, or standards that you always want your AI to follow, list them here.&lt;/p&gt;
&lt;p&gt;There&#39;s no guarantee the LLM will follow them, especially once the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/recency-bias/&quot;&gt;the conversations get long&lt;/a&gt;. Occasionally, the AI will need to be reminded about a particular rule. To make this easier, I create a easy-to-type name for each rule, so I can just tell the AI exactly what rule it’s failed to follow.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;## NoSyntheticData&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;**Definition**: If you encounter a problem when working with data, NEVER fall back to some fake or simplified data. You can do this in a test in order to debug the issue, but NEVER use fake data in non-test code.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[Examples of violations]&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If I catch the AI oversimplifying the problem by using a contrived example, I can simply reply “NoSyntheticData” and it will know exactly what it did wrong and make the appropriate correction. (You can also combine this with the “Go Back in Time” technique, and simply append it as a reminder (“don’t forget: NoSyntheticData”) to your previous request that generated the bad behavior.&lt;/p&gt;
&lt;p&gt;This works because LLMs have been optimized for “Needle-in-a-Haystack” use cases—retrieving relevant facts from earlier content. (This optimization is to make something called “RAG” work well. Future post to come.) It might not proactively remember the rule on its own, but if you remind it, it can retrieve and re-state it to bring it to the front of its mind, so to speak.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;credit to &lt;a href=&quot;https://forum.cursor.com/t/3-7-sonnet-way-too-good-way-too-bad/57907/2&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;normalnormie on the Cursor Forum&lt;/a&gt; for the idea.&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/recency-bias/" >
        </entry>
        <entry>
            <title>
                MemoryPatterns
                
            </title>
            <updated>2026-05-04T05:39:42.828Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/memory-patterns/</id>
            <content type="html">
                &lt;h2 id=&quot;basic-patterns&quot; tabindex=&quot;-1&quot;&gt;Basic patterns&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Key-value-index&lt;/li&gt;
&lt;li&gt;Episodic&lt;/li&gt;
&lt;li&gt;Opportunistic accumulation&lt;/li&gt;
&lt;li&gt;Distilled profile/preferences&lt;/li&gt;
&lt;li&gt;Dump everything in a vector db and pray&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;coding-specific-patterns&quot; tabindex=&quot;-1&quot;&gt;Coding-specific patterns&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;single-file (in repo / in agent)&lt;/li&gt;
&lt;li&gt;single-file-per-module (nested)&lt;/li&gt;
&lt;li&gt;my mental model&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;upkeep&quot; tabindex=&quot;-1&quot;&gt;Upkeep&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Dangers of drift&lt;/li&gt;
&lt;li&gt;Distillation&lt;/li&gt;
&lt;li&gt;Pruning&lt;/li&gt;
&lt;li&gt;Paging&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;advanced&quot; tabindex=&quot;-1&quot;&gt;Advanced&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Knowledge graph&lt;/li&gt;
&lt;li&gt;Customer 360&lt;/li&gt;
&lt;li&gt;Hermeneutic&lt;/li&gt;
&lt;li&gt;Adaptive schema&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/memory-patterns/" >
        </entry>
        <entry>
            <title>
                MeatspaceContext
                
            </title>
            <updated>2025-12-18T07:57:44.883Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/meatspace-context/</id>
            <content type="html">
                &lt;p&gt;&lt;a href=&quot;https://en.wiktionary.org/wiki/meatspace&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Meatspace&lt;/a&gt;Context is the context that lives in the minds of humans, or in the physical world, that is not digitized (and is often undigitizable).&lt;/p&gt;
&lt;p&gt;This is the kind of context that AI will make some &lt;strong&gt;default assumptions&lt;/strong&gt; about, and which, if incorrect, can have &lt;strong&gt;major impacts on the usefulness of its [output](&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/you-have-to-read-the-output/&quot;&gt;YouHaveToReadTheOutput&lt;/a&gt;).&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;examples-of-meatspace-context&quot; tabindex=&quot;-1&quot;&gt;Examples of MeatspaceContext:&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]&lt;br /&gt;
These apply equally to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;other people&lt;/li&gt;
&lt;li&gt;organizations&lt;/li&gt;
&lt;li&gt;&lt;em&gt;you&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Demographics&lt;/li&gt;
&lt;li&gt;Location&lt;/li&gt;
&lt;li&gt;Physical environment&lt;/li&gt;
&lt;li&gt;Policies&lt;/li&gt;
&lt;li&gt;Politics&lt;/li&gt;
&lt;li&gt;Culture&lt;/li&gt;
&lt;li&gt;Experience&lt;/li&gt;
&lt;li&gt;History&lt;/li&gt;
&lt;li&gt;Evolution&lt;/li&gt;
&lt;li&gt;Values&lt;/li&gt;
&lt;li&gt;Attitudes&lt;/li&gt;
&lt;li&gt;Beliefs&lt;/li&gt;
&lt;li&gt;Priorities&lt;/li&gt;
&lt;li&gt;Plans&lt;/li&gt;
&lt;li&gt;Goals&lt;/li&gt;
&lt;li&gt;Allies&lt;/li&gt;
&lt;li&gt;Competitors&lt;/li&gt;
&lt;li&gt;Partners&lt;/li&gt;
&lt;li&gt;Relationships&lt;/li&gt;
&lt;li&gt;Secrets&lt;/li&gt;
&lt;li&gt;Strengths/weaknesses&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Think of whatever the last thing you did using AI. What assumptions do you think it made about these [aspects](&lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;KnowledgeGranularityAndLenses&lt;/a&gt;)? What did it get right or wrong? How do you think that affected the output?&lt;/p&gt;
&lt;p&gt;See also: &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;HumanCapital&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/meatspace-context/" >
        </entry>
        <entry>
            <title>
                LiveNotes
                
            </title>
            <updated>2026-08-08T07:17:11.548Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/live-notes/</id>
            <content type="html">
                &lt;p&gt;2026-08-08 00:09&lt;br /&gt;
LLMogisms - &amp;quot;load-bearing&amp;quot;, &amp;quot;landed&amp;quot;, &amp;quot;shipped&amp;quot;, emdashes—I&#39;m starting to wonder if these are just RLHF artifacts or if they are the beginnings of the LLM&#39;s internal language leaking out? Are these terms &amp;quot;load-bearing&amp;quot;, holding a richer semantic meaning to the LLM greater than we might assign it? A shorthand?&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/live-notes/" >
        </entry>
        <entry>
            <title>
                LLM core use cases
                
            </title>
            <updated>2026-02-23T05:27:19.178Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/llm-core-use-cases/</id>
            <content type="html">
                &lt;p&gt;An evolving catalog.  &lt;a class=&quot;tag&quot; onclick=&quot;toggleTagSearch(this)&quot; data-content=&quot;#taxonomies&quot;&gt;#taxonomies&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;generating-end-use-content&quot; tabindex=&quot;-1&quot;&gt;Generating End-use Content&lt;/h4&gt;
&lt;p&gt;e.g.  Marketing copy, sales pitches, websites&lt;/p&gt;
&lt;h4 id=&quot;parsing-unstructured-data&quot; tabindex=&quot;-1&quot;&gt;Parsing Unstructured Data&lt;/h4&gt;
&lt;p&gt;Documents to data e.g. invoices, receipts&lt;/p&gt;
&lt;p&gt;(Vision models for getting text out of pdfs and images )&lt;/p&gt;
&lt;h4 id=&quot;classifying&quot; tabindex=&quot;-1&quot;&gt;Classifying&lt;/h4&gt;
&lt;p&gt;Sentiment analysis&lt;br /&gt;
Poor man’s &lt;code&gt;switch&lt;/code&gt; statement&lt;/p&gt;
&lt;h1 id=&quot;&quot; tabindex=&quot;-1&quot;&gt;&lt;/h1&gt;
&lt;h4 id=&quot;summarizing&quot; tabindex=&quot;-1&quot;&gt;Summarizing&lt;/h4&gt;
&lt;p&gt;Emails, meeting transcripts, customer feedback, long documents,&lt;/p&gt;
&lt;h4 id=&quot;rag-fact-retrieval&quot; tabindex=&quot;-1&quot;&gt;RAG - fact retrieval&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Knowledge base look up&lt;/li&gt;
&lt;li&gt;Look up data in other systems (order status, travel itinerary, customer record), but this is borderline &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/agentic-ai-agents/&quot;&gt;Agentic AI Agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;deep-research&quot; tabindex=&quot;-1&quot;&gt;Deep Research&lt;/h4&gt;
&lt;p&gt;This is actually &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/agentic-ai-agents/&quot;&gt;agenting&lt;/a&gt;  and summarizing.&lt;/p&gt;
&lt;h4 id=&quot;data-analysis-uses-python&quot; tabindex=&quot;-1&quot;&gt;Data analysis (uses python)&lt;/h4&gt;
&lt;h4 id=&quot;writing-assistant&quot; tabindex=&quot;-1&quot;&gt;Writing assistant&lt;/h4&gt;
&lt;h4 id=&quot;brainstorming-rubber-ducking-base-models-wiki-rubber-duck-rubber-duck&quot; tabindex=&quot;-1&quot;&gt;Brainstorming / [rubber-ducking](&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/rubber-duck/&quot;&gt;RubberDuck&lt;/a&gt;)&lt;/h4&gt;
&lt;h3 id=&quot;meta&quot; tabindex=&quot;-1&quot;&gt;Meta:&lt;/h3&gt;
&lt;h4 id=&quot;base-models-wiki-agentic-ai-agents-agenting&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/agentic-ai-agents/&quot;&gt;agenting&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;(loop of reasoning, tool calls, or completion)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;orchestration of sub-agents&lt;/li&gt;
&lt;li&gt;single-purpose LLM calls as tool call (“agents as tools?”)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;non-deterministic-general-purpose-compute-unit&quot; tabindex=&quot;-1&quot;&gt;Non-deterministic general purpose compute unit&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Poorly-specified integration orchestration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See also:&lt;br /&gt;
&lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;Kinds of AI&lt;/a&gt;&lt;br /&gt;
&lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;Image use cases&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;diffusion model use cases&lt;br /&gt;
Multimodal:&lt;br /&gt;
STT / TTS&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/llm-core-use-cases/" >
        </entry>
        <entry>
            <title>
                How LLMs Work
                
            </title>
            <updated>2025-09-29T04:29:30.114Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/how-ll-ms-work/</id>
            <content type="html">
                &lt;h4 id=&quot;how-chat-gpt-and-other-ai-chatbots-work&quot; tabindex=&quot;-1&quot;&gt;How ChatGPT and other AI chatbots work.&lt;/h4&gt;
&lt;p&gt;ChatGPT, Claude, Grok, and other chatbots are powered by &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;Large Language Models&lt;/a&gt; (LLMs). They are trained on [huge volumes of text](Training Data), primarily scraped from the internet.&lt;/p&gt;
&lt;h1 id=&quot;all-ll-ms-do-is-guess-the-next-word-over-and-over&quot; tabindex=&quot;-1&quot;&gt;All LLMs Do is Guess the Next Word, Over and Over&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What follows is a extreme simplification of a complex and evolving science. Don&#39;t take it too literally. ¯_(ツ)&lt;/em&gt;/¯_&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Large Language Models (LLMs) are essentially &lt;strong&gt;sequence generators&lt;/strong&gt;—or, put another way, &lt;strong&gt;next-word&lt;a href=&quot;https://basemodels.joshwand.com/#footnote-1&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;1&lt;/a&gt; guessers&lt;/strong&gt;. They take a sequence of text (your prompt and whatever context you give it), and &lt;strong&gt;based on how often it’s seen that sequence in its training data&lt;/strong&gt;, its job is to predict what the best next word will be:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/_blog/coding%20rules%20essay%20images/1.png&quot; alt=&quot;The quick brown fox jumped over the ____&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The models are &lt;strong&gt;trained on vast amounts of text&lt;/strong&gt;—sequences of words. Billions of articles, webpages, books, code, documentation, blogs, and now, huge datasets of human conversations with LLMs. The training starts with taking a certain length of text, and &lt;strong&gt;hiding the last word&lt;/strong&gt;. The training program t&lt;strong&gt;akes its best guess at what the hidden word is&lt;/strong&gt;, based on &lt;strong&gt;all the other times it&#39;s seen&lt;/strong&gt; the prior sequence:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/_blog/coding%20rules%20essay%20images/2.png&quot; alt=&quot;&amp;gt; The quick brown fox jumped over the lazy &amp;lt;&amp;lt;&amp;lt;&amp;gt; The quick brown fox jumped over the lazy The quick brown fox jumped over the candlestick The quick brown fox jumped over the 13The quick brown fox jumped over the fenceThe quick brown fox jumped over the broom&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It then judges &lt;strong&gt;how far off its guess was&lt;/strong&gt; from the actual target word, and (&lt;em&gt;hand wavey math 👋🧙‍♂️&lt;/em&gt;) &lt;strong&gt;adjusts the probability&lt;/strong&gt;, either up or down, whether next time, &lt;strong&gt;given a similar sequence, it should or should not use the word it guessed&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Then it adds the guessed word to the sequence, &lt;strong&gt;slides forward, and does the whole thing again,&lt;/strong&gt; including the new word:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/_blog/coding%20rules%20essay%20images/3.png&quot; alt=&quot;(The) quick brown fox jumped over the lazy ___&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Training a LLM from scratch means doing this calculation many &lt;strong&gt;trillions&lt;/strong&gt; of times.&lt;/p&gt;
&lt;p&gt;(For coding models, it&#39;s a little more involved, and involves guessing the word based on both the words before &lt;em&gt;and&lt;/em&gt; the words after the target.)&lt;/p&gt;
&lt;p&gt;When a LLM responds to you, it evaluates all those probabilities for the input sequence, which includes the entire conversation thus far, &lt;strong&gt;including the current response being generated&lt;/strong&gt;, and picking the most likely next word. &lt;strong&gt;Then, sticking that word at the end, it does the probability calculation again. And again.&lt;/strong&gt; This is why you get your responses in a stream, one word at a time.&lt;/p&gt;
&lt;p&gt;All of this in service of getting their &lt;strong&gt;next-word guesses as close as possible&lt;/strong&gt; to what they’ve seen in their training data. &lt;strong&gt;A 100% accurate LLM,&lt;/strong&gt; in theory, &lt;strong&gt;would exactly reproduce the most likely sequence from its training data.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;why-ai-forgets&quot; tabindex=&quot;-1&quot;&gt;Why AI Forgets&lt;/h3&gt;
&lt;p&gt;Going back to training, however, when performing the &amp;quot;how good was our guess&amp;quot; adjustment, it doesn&#39;t give the same weight to all the words in the sequence:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It gives higher importance to the most recent words:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://basemodels.joshwand.com/img/user/_blog/coding%20rules%20essay%20images/4.png&quot; alt=&quot;the quick brown fox jumped over the lazy(bar graph)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What that means, in practical terms, is that &lt;strong&gt;the longer your conversation, the less influence the earlier content has.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;see: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/recency-bias/&quot;&gt;RecencyBias&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/how-ll-ms-work/" >
        </entry>
        <entry>
            <title>
                ConversationContainer
                
            </title>
            <updated>2025-11-30T17:57:50.339Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/conversation-container/</id>
            <content type="html">
                &lt;p&gt;This is the &amp;quot;harness&amp;quot; which orchestrates all the interaction between LLMs and... anything else.&lt;/p&gt;
&lt;p&gt;It&#39;s powered by regular-old computer code, and it&#39;s responsible for&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Setting up the connection to the LLM, including the &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;SystemPrompt&lt;/a&gt;, including instructions and a list of available tools&lt;/li&gt;
&lt;li&gt;Handling input (often, but not always, from a human)&lt;/li&gt;
&lt;li&gt;Executing the actual requests to the LLM, wherever it&#39;s hosted&lt;/li&gt;
&lt;li&gt;Handling the response, which usually comes as a stream of chunks of data (of various types)&lt;/li&gt;
&lt;li&gt;Responding to that data in various ways:&lt;/li&gt;
&lt;li&gt;Streaming it back to the user-facing application&lt;/li&gt;
&lt;li&gt;Executing a tool&lt;/li&gt;
&lt;li&gt;Returning control to the user&lt;/li&gt;
&lt;li&gt;Sending a new request to the LLM (might not be the same one), often via &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;PromptChaining&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Handling conversation state&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&#39;s important to understand that all your interactions with the LLM are mediated by some application or set of applications that actually execute that interaction.&lt;/p&gt;
&lt;p&gt;The LLM conversation itself is just data—request (including the conversation up til the current token), and response (the tokens coming back from the LLM).&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/conversation-container/" >
        </entry>
        <entry>
            <title>
                Base Models (Home)
                
            </title>
            <updated>2026-05-04T04:57:24.945Z</updated>
            <id>https://basemodels.joshwand.com//</id>
            <content type="html">
                &lt;p&gt;welcome to my ai thoughts wiki&lt;br /&gt;
(&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/what-is-this-thing/&quot;&gt;What is this thing?&lt;/a&gt;) (&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/about-the-author/&quot;&gt;Who writes it?&lt;/a&gt;)&lt;/p&gt;
&lt;ul class=&quot;block-language-dataview&quot;&gt;
&lt;li&gt;Last updated: 2026-08-08&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;recently-updated&quot; tabindex=&quot;-1&quot;&gt;Recently Updated&lt;/h3&gt;
&lt;ul class=&quot;block-language-dataview&quot;&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/live-notes/&quot;&gt;LiveNotes&lt;/a&gt; &lt;em&gt;2026-08-08&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/slop-detection/&quot;&gt;SlopDetection&lt;/a&gt; &lt;em&gt;2026-08-08&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;essays-on-substack&quot; tabindex=&quot;-1&quot;&gt;Essays (on Substack)&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://modelbehaviors.substack.com/p/why-ai-forgets&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Why AI Forgets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open.substack.com/pub/joshwand1/p/agentsmd-gets-it-wrong-in-2-ways&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;AGENTS.md gets it wrong in 2 ways&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;strategies&quot; tabindex=&quot;-1&quot;&gt;Strategies&lt;/h2&gt;
&lt;ul class=&quot;block-language-dataview&quot;&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/slop-detection/&quot;&gt;SlopDetection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/my-coding-rules/&quot;&gt;My Coding Rules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/new-conversation-with-summary/&quot;&gt;NewConversationWithSummary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/persistent-context/&quot;&gt;PersistentContext&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/named-rules/&quot;&gt;NamedRules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/abc-always-be-compacting/&quot;&gt;ABC - Always Be Compacting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/go-back-in-time/&quot;&gt;GoBackInTime&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/strategies/periodic-reminders/&quot;&gt;PeriodicReminders&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;explainers&quot; tabindex=&quot;-1&quot;&gt;Explainers&lt;/h2&gt;
&lt;ul class=&quot;block-language-dataview&quot;&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/how-ll-ms-work/&quot;&gt;How LLMs Work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/recency-bias/&quot;&gt;RecencyBias&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All content on this site is 100% human-written. &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/about-the-author/&quot;&gt;About the Author&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//" >
        </entry>
        <entry>
            <title>
                Agentic AI Agents
                
            </title>
            <updated>2026-02-23T05:36:14.749Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/agentic-ai-agents/</id>
            <content type="html">
                &lt;p&gt;Disambiguation:&lt;br /&gt;
&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/agentic-ai-agents/&quot;&gt;Agentic AI&lt;/a&gt; (this page) - Large Language Models that have the ability to call tools, choose which tools to use to achieve a goal, and react to the results (often by calling more tools).&lt;br /&gt;
&lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;Personas&lt;/a&gt; -&lt;/p&gt;
&lt;p&gt;Do you keep hearing that &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/words-i-hate-in-ai/&quot;&gt;buzzword&lt;/a&gt; &amp;quot;AI Agent&amp;quot;, or worse, &amp;quot;Agentic&amp;quot;, and wonder what the hell it means?&lt;/p&gt;
&lt;p&gt;It&#39;s not a user-facing &amp;quot;agent&amp;quot; like customer service (except when it &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;is&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;What makes an LLM Agent &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/words-i-hate-in-ai/&quot;&gt;Agentic&lt;/a&gt; is :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It has access to a menu of tools it can use- edit a file, query a database, search the web, launch nukes.&lt;/li&gt;
&lt;li&gt;It&#39;s provided a bunch of &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;context&lt;/a&gt; about the task, the operating environment,  relevant external data, and the list of available tools.&lt;/li&gt;
&lt;li&gt;The agent then operates in a loop:
&lt;ol&gt;
&lt;li&gt;Given the current conversation, it chooses one of the following actions:&lt;/li&gt;
&lt;li&gt;Keep thinking/talking&lt;/li&gt;
&lt;li&gt;Return control to the user&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a tool&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;It uses the tool, passing any necessary parameters (a &amp;quot;tool call&amp;quot;)&lt;/li&gt;
&lt;li&gt;The tool result is added to the conversation.&lt;/li&gt;
&lt;li&gt;Goto 1.&lt;/li&gt;
&lt;li&gt;or: decide there&#39;s no more work to do with its current task (both success and failure)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;Return control to the user&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;How it works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM can “speak” a special phrase - the tool call&lt;/li&gt;
&lt;li&gt;it runs in a &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/conversation-container/&quot;&gt;ConversationContainer&lt;/a&gt; listening for tool calls&lt;/li&gt;
&lt;li&gt;The container executes the tool and “tells” the LLM the result by adding it to the conversation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent examples :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT decides to use a web search tool to get more information&lt;/li&gt;
&lt;li&gt;A customer service chatbot looks up your order in the order system&lt;/li&gt;
&lt;li&gt;A coding assistant reads/writes your files or runs your code&lt;/li&gt;
&lt;li&gt;Anything that calls a MCP server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&#39;s important to recognize that the tool call result may not be the end of the response—the LLM looks at what it got back, and predicts what the next token should be—some “thinking”, or commentary, or summary, or another tool call, or a “end of turn” token.&lt;/p&gt;
&lt;p&gt;You can end up with a very long chain of tool calls.&lt;/p&gt;
&lt;p&gt;Memory is often a tool call. Save memory, search memories, etc.&lt;/p&gt;
&lt;p&gt;There can be many layers of agents, or multiple agents working as a team—there are tons of different architectures.&lt;/p&gt;
&lt;p&gt;Importantly there’s a distinction between a single LLM token sequence of text, and tool calls simply executed by the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/conversation-container/&quot;&gt;ConversationContainer&lt;/a&gt;, vs an orchestrator (another type of &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/conversation-container/&quot;&gt;ConversationContainer&lt;/a&gt;) that runs more deterministic logic around the calls (cf Claude code hooks),&lt;/p&gt;
&lt;p&gt;Or multiple models validating or reacting to the inputs and outputs of the tool calls (is this an approved tool call? Is there a security risk hiding in there?)&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/agentic-ai-agents/" >
        </entry>
        <entry>
            <title>
                About the Author
                
            </title>
            <updated>2025-09-29T02:11:32.264Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/about-the-author/</id>
            <content type="html">
                &lt;p&gt;Josh Wand - Oakland, CA&lt;br /&gt;
Engineer and Product Manager for ~20 years&lt;br /&gt;
AWS, Macy&#39;s, Gap, Williams-Sonoma, &amp;amp; more&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://linkedin.com/in/joshwand/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://linkedin.com/in/joshwand/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;josh (at) &lt;a href=&quot;http://joshwand.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;joshwand.com&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/about-the-author/" >
        </entry>
        <entry>
            <title>
                AI Coding Tools
                
            </title>
            <updated>2026-05-04T05:25:02.399Z</updated>
            <id>https://basemodels.joshwand.com//base-models-wiki/ai-coding-tools/</id>
            <content type="html">
                &lt;p&gt;My personal taxonomy of AI coding tools (and patterns). &lt;a class=&quot;tag&quot; onclick=&quot;toggleTagSearch(this)&quot; data-content=&quot;#taxonomies&quot;&gt;#taxonomies&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They all use the same &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;foundation models&lt;/a&gt; and fundamental &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://basemodels.joshwand.com/base-models-wiki/agentic-ai-agents/&quot;&gt;Agent Loop&lt;/a&gt;, but differ in a few aspects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;SystemPrompt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How they invoke &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How they apply changes&lt;/li&gt;
&lt;li&gt;User interface&lt;/li&gt;
&lt;li&gt;Where they run&lt;/li&gt;
&lt;li&gt;Pricing model&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many are starting to produce their own &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;First-Party&lt;/a&gt; models, though they are usually just &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;post-training&lt;/a&gt; on top of available &lt;a class=&quot;internal-link is-unresolved&quot; target=&quot;&quot; title=&quot;This page hasn&#39;t been published yet&quot;&gt;OpenWeightModels&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note: many of the below tools now offer multiple interfaces—IDE, CLI, and cloud-based&lt;/p&gt;
&lt;h2 id=&quot;ide-based&quot; tabindex=&quot;-1&quot;&gt;IDE-based&lt;/h2&gt;
&lt;p&gt;Integrated Development Environment—a desktop app for coding. AI coding chat in a sidebar.&lt;/p&gt;
&lt;p&gt;Cursor, Windsurf, VS Code Copilot, Augment, Cline, RooCode, Github Copilot, Kiro, Antigravity, Ampcode, Kilocode...&lt;/p&gt;
&lt;h2 id=&quot;cli-based&quot; tabindex=&quot;-1&quot;&gt;CLI-based&lt;/h2&gt;
&lt;p&gt;Command-line interface.&lt;/p&gt;
&lt;p&gt;Examples:&lt;br /&gt;
Claude Code, OpenAI Codex, aider, Kiro CLI, QwenCoder, Gemini CLI&lt;/p&gt;
&lt;h2 id=&quot;cloud-agents&quot; tabindex=&quot;-1&quot;&gt;Cloud Agents&lt;/h2&gt;
&lt;p&gt;These run in the cloud, checkout your Github repo, do some work, then file a PR.&lt;/p&gt;
&lt;p&gt;Examples:&lt;br /&gt;
Cursor, Github Copilot, Jules, Codex, Claude Code for Web&lt;/p&gt;
&lt;h2 id=&quot;vibecoding-platforms&quot; tabindex=&quot;-1&quot;&gt;Vibecoding Platforms&lt;/h2&gt;
&lt;p&gt;These run entirely on the web, and will not only build your app but also run it and let you publish it to the world, as one integrated tool. You typically sacrifice a degree of control, like the ability to efficiently manually edit the code, in exchange for the simplicity of the direct chat-to-app flow.&lt;/p&gt;
&lt;p&gt;Examples:&lt;br /&gt;
Lovable (I remember when it was GPT-Engineer), Bolt, v0, Emergent, base44, Replit... there&#39;s dozens more&lt;/p&gt;
&lt;h2 id=&quot;multi-worktree-independent-workers-whack-a-mole&quot; tabindex=&quot;-1&quot;&gt;Multi-worktree independent workers (whack-a-mole)&lt;/h2&gt;
&lt;p&gt;You set multiple agents to work, each doing one task, within the same codebase, working in isolated git worktrees on separate branches, so they don&#39;t step on each other.&lt;/p&gt;
&lt;p&gt;You can do this yourself with tmux, but there are also many tools to help manage the process, such as Conductor, Vibe Kanban, Claude Squad, and ccmanage; Github / VS Code are also adding features in this direction.&lt;/p&gt;
&lt;h2 id=&quot;the-ralph-wiggum-loop&quot; tabindex=&quot;-1&quot;&gt;The Ralph Wiggum Loop&lt;/h2&gt;
&lt;h2 id=&quot;cargo-cult-multi-agent-complexity&quot; tabindex=&quot;-1&quot;&gt;Cargo-Cult Multi-Agent Complexity&lt;/h2&gt;
&lt;p&gt;e.g. Gastown&lt;/p&gt;

            </content>
            <link href="https://basemodels.joshwand.com//base-models-wiki/ai-coding-tools/" >
        </entry>
</feed>
