{
"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"
}