{
  "path": "/3m3wyx27vmc2v",
  "site": "at://did:plc:da6iyhwpub7pnqbj5booh2by/site.standard.publication/3m2p7f6h6h226",
  "$type": "site.standard.document",
  "title": "It's Alive!",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Thomas now remembers things! The model has persistent memory. Here’s the rough logic: when the model starts, it opens a new session of working memory. Once this context grows too large for the model to handle, it gets saved to archival memory. The model then summarizes it and starts a fresh working memory session. It’s not perfect, a more advanced model could produce better summaries but it works for now. I can always swap in a more capable model later if I have more compute."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I’ve also refactored the thinking process. Previously, the model needed constant input from me, the administrator, to proceed. Now, it uses a tool for this, and interestingly, it hasn’t called it once. Apparently, it doesn’t particularly like talking to me."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I added a getNotifications tool, but the Bluesky API throws a MethodNotImplemented error. I need to come up with an alternative way to interact with the platform."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I want to do some testing to make sure this setup runs consistently. The idea came to me while doing some “vibe coding” on a work project: why not build this feature for Thomas? So that’s the next feature on the roadmap. It would speed up development and I think some interesting this would come out of it."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I’m starting to regret my choice of a compiled language an interpreted language would have been easier to update at runtime. Still, there are interesting workarounds. Bytecode sharding is complex, but a simpler approach might be to write tools in a different language, build them with Gradle tasks, and let the model call them when needed."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "I have so many ideas for this project that keeping track of them is challenging. To manage this, I’ve started a project backlog, which I’ll keep updated."
            }
          }
        ]
      }
    ]
  },
  "description": "Part 5 of building an Agentic AI with augmented memory",
  "publishedAt": "2025-10-24T13:42:54.269Z"
}