<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: minix</title>
    <description>The latest articles on DEV Community by minix (@minix).</description>
    <link>https://dev.to/minix</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4086495%2Fabd40876-2b28-4018-b645-67734f029185.png</url>
      <title>DEV Community: minix</title>
      <link>https://dev.to/minix</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/minix"/>
    <language>en</language>
    <item>
      <title>Diary of a Shrimp Keeper: My OpenClaw (mis)Adventures</title>
      <dc:creator>minix</dc:creator>
      <pubDate>Sun, 13 Sep 2026 08:20:07 +0000</pubDate>
      <link>https://dev.to/minix/diary-of-a-shrimp-keeper-my-openclaw-misadventures-5449</link>
      <guid>https://dev.to/minix/diary-of-a-shrimp-keeper-my-openclaw-misadventures-5449</guid>
      <description>&lt;h2&gt;
  
  
  I. Why OpenClaw?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The First Choice: NanoBot
&lt;/h3&gt;

&lt;p&gt;In January 2026, as news about OpenClaw came flooding in, I decided to install an AI agent just to play around.&lt;/p&gt;

&lt;p&gt;I asked an AI which one to pick, and it gave me two options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenClaw&lt;/li&gt;
&lt;li&gt;NanoBot&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It strongly recommended NanoBot — small but fully equipped, and easy to customize.&lt;/p&gt;

&lt;p&gt;I checked the codebase size:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NanoBot: a few thousand lines&lt;/li&gt;
&lt;li&gt;OpenClaw: hmm... let's just say I'd deal with that later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Went with NanoBot without hesitation!&lt;/strong&gt; Simple and easy to pick up, after all.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fish, or Bear's Paw?
&lt;/h3&gt;

&lt;p&gt;NanoBot was indeed lean.&lt;/p&gt;

&lt;p&gt;I wanted it to do a few things, and it turned out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Budget tracking? Nope.&lt;/li&gt;
&lt;li&gt;Multi-model config for sub-agents? Nope.&lt;/li&gt;
&lt;li&gt;Agent orchestration? Nope.&lt;/li&gt;
&lt;li&gt;Session management and long-task monitoring? Nope.&lt;/li&gt;
&lt;li&gt;...Nope.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was miles away from my ideal AI agent.&lt;br&gt;
Fine, just a few features to add — I'll let AI handle it.&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;Ten days later...&lt;/p&gt;

&lt;p&gt;Wasn't vibe coding supposed to be as easy as just talking? Why wasn't it working out that way? After days of fiddling, the feature I wanted was still just a pile of bugs?&lt;/p&gt;

&lt;p&gt;During those one or two weeks I had my head down grinding away, news about OpenClaw kept drifting in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Added support for feature xxx today"&lt;/li&gt;
&lt;li&gt;"Upgraded capability yyy tomorrow"&lt;/li&gt;
&lt;li&gt;"The community just contributed plugin zzz"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I looked at that and thought — &lt;strong&gt;wait, isn't a lot of this exactly what I'm building? They already have it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OpenClaw has such a powerful community — no matter how hard I hustled, I'd never keep pace with it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Switched to OpenClaw without hesitation... figured I'd just start using it and see.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  II. Before the Troops Move, the Shrimp Tank Goes First
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Building the Den
&lt;/h3&gt;

&lt;p&gt;To welcome this shrimp, I dug out an HP mini desktop that had been gathering dust and installed Linux on it.&lt;/p&gt;

&lt;p&gt;The shrimp hadn't even arrived yet, but the name was already picked — "Mini," living inside the HP Mini.&lt;/p&gt;
&lt;h3&gt;
  
  
  Bringing the Shrimp Home
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; openclaw
openclaw onboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Not bad, the install went smoothly.&lt;/p&gt;

&lt;p&gt;But what were all these config options even for... how was I supposed to choose?&lt;/p&gt;

&lt;p&gt;Luckily, when in doubt, ask AI. After half a day of fiddling, my OpenClaw was finally up and running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I started daydreaming about kicking back with my legs crossed, sipping coffee, watching my little shrimp secretary handle everything...&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  III. Pitfalls Everywhere
&lt;/h2&gt;
&lt;h3&gt;
  
  
  The Configuration Trap
&lt;/h3&gt;

&lt;p&gt;Mini had just settled in, and I asked it to read an API key from an env file.&lt;/p&gt;

&lt;p&gt;"I don't have a read tool."&lt;/p&gt;

&lt;p&gt;??? Didn't I already add it to &lt;code&gt;tools.allow&lt;/code&gt; in the config file?&lt;/p&gt;

&lt;p&gt;I immediately sent my shrimp off to investigate. After going back and forth for a while, it finally figured it out: &lt;code&gt;tools.profile&lt;/code&gt; defaults to &lt;code&gt;messaging&lt;/code&gt; mode, which only allows messaging-type tools — read, write, exec, and the rest just don't work no matter how you configure them. @_@&lt;/p&gt;

&lt;p&gt;Changed it to &lt;code&gt;tools.profile = "full"&lt;/code&gt;, restarted the gateway, and Mini could finally read files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When you're not familiar with the config file, you're bound to fall into a hole somewhere.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Where Am I?
&lt;/h3&gt;

&lt;p&gt;With the tool issue solved, it was time to let Mini show what it could do.&lt;/p&gt;

&lt;p&gt;I had it check the OpenClaw config first, then try running a script sitting in &lt;code&gt;workspace/scripts/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Mini threw an error, saying the script didn't exist.&lt;/p&gt;

&lt;p&gt;Weird, the file was clearly right there.&lt;/p&gt;

&lt;p&gt;After some digging, I finally figured it out. Mini thought it was running on the host, but it was actually in a sandbox. The workspace inside the sandbox and the one outside are not the same thing!&lt;/p&gt;

&lt;p&gt;It's like &lt;em&gt;Inception&lt;/em&gt; — you need a "spinning top" to figure out where you actually are.&lt;/p&gt;

&lt;p&gt;So I placed a different "top" (a marker file) on the host and in the sandbox. Later I realized a dedicated file wasn't even necessary — just checking the hostname was enough:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;hostname&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Output is &lt;code&gt;&amp;lt;hostname&amp;gt;&lt;/code&gt; → on the host&lt;/li&gt;
&lt;li&gt;Output is &lt;code&gt;49f1f55e2dc2&lt;/code&gt; (a 12-character container ID) → in the sandbox&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So Mini wouldn't get confused again, I added a rule to AGENTS.md for checking the current environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From then on, the first thing Mini does before any task is "spin the top."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That hole taught me something important: the host environment and the sandbox environment need to be configured separately. Every time I create a new tool or skill, I have to be careful about where it lands — if the agent inside the sandbox needs to use it, it has to exist inside the sandbox too, or in a directory that maps into it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Missing Heartbeat
&lt;/h3&gt;

&lt;p&gt;By late night, I'd finally gotten Mini settled, and figured I'd give it a scheduled task to try out.&lt;/p&gt;

&lt;p&gt;I wrote the task into HEARTBEAT.md: crawl some news in the middle of the night, write up a report...&lt;/p&gt;

&lt;p&gt;The next morning, I woke up full of anticipation, opened the window, ready to receive the carefully prepared report Mini would hand me.&lt;/p&gt;

&lt;p&gt;Result — &lt;strong&gt;nothing at all.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After a good long check, I found that the &lt;code&gt;agent.defaults.heartbeat.prompt&lt;/code&gt; setting in openclaw.json was just a bare &lt;code&gt;[HEARTBEAT]&lt;/code&gt; marker with no actual instructions. Mini got the signal but had absolutely no idea what to do with it.&lt;/p&gt;

&lt;p&gt;I changed the prompt to a concrete instruction: "Read HEARTBEAT.md and execute the task" — and finally, Mini knew what to do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And so, in a rhythm of climbing out of one hole only to fall into the next, Mini and I stumbled forward.&lt;/strong&gt;&lt;br&gt;
But I knew the dawn wasn't far off.&lt;/p&gt;


&lt;h2&gt;
  
  
  IV. Time to Get to Work
&lt;/h2&gt;

&lt;p&gt;Finally, after what felt like eighty-one trials and tribulations, my shrimp could actually run normally.&lt;/p&gt;
&lt;h3&gt;
  
  
  Safety First
&lt;/h3&gt;

&lt;p&gt;Mini is smart, sure, but without skills it can't do a thing.&lt;/p&gt;

&lt;p&gt;But the world out there is treacherous, danger lurking everywhere — malicious skills hiding all over the place. I needed a skill just to scan for skills first.&lt;/p&gt;

&lt;p&gt;But which one?&lt;/p&gt;

&lt;p&gt;Same old rule: when in doubt, ask AI.&lt;/p&gt;

&lt;p&gt;Picked a few from the AI's recommendations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skill Vetter&lt;/strong&gt; — an open-source, community-built skill auditing tool&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cisco Skills Scanner&lt;/strong&gt; — a tool specifically for scanning AI skills&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snyk&lt;/strong&gt; — the well-known vulnerability scanning platform&lt;/li&gt;
&lt;li&gt;Plus a simple grep-based detection script&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combined them into one security scanning script.&lt;/p&gt;

&lt;p&gt;Then had Mini turn it into a "security scan skill" that runs a scan before installing any new skill.&lt;/p&gt;

&lt;p&gt;The front door was locked now. But Mini still had to go out often, fetching articles and doing research for me. And out there, plenty of bad actors are just waiting to trick naive little kids. What to do about that?&lt;/p&gt;

&lt;p&gt;After racking my brain, I decided to add a &lt;strong&gt;prompt injection defense&lt;/strong&gt; section to AGENTS.md, telling Mini to treat all external information with caution and to recognize and refuse suspicious instructions when it encounters them.&lt;/p&gt;

&lt;p&gt;I know this measure offers limited protection, but even a paper helmet is still a helmet — better than nothing.&lt;/p&gt;

&lt;p&gt;Now Mini could finally go roam the streets.&lt;/p&gt;

&lt;p&gt;Note: Later I added supply-chain attack checks to this security scanning script and put it on a daily schedule.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Rookie Task
&lt;/h3&gt;

&lt;p&gt;With the gear all handed out, it was time to put Mini to work.&lt;/p&gt;

&lt;p&gt;The first task I assigned it was crawling daily news automatically — the classic starter job for any crayfish.&lt;/p&gt;

&lt;p&gt;This one went smoothly — Mini had the feature working in no time, using OpenClaw's built-in Google Search. (It later went on to integrate Tavily Search, Brave Search, and other tools into a new search skill, but that's a story for another time.)&lt;/p&gt;

&lt;p&gt;Now, every day at noon, Mini rounds up the latest articles from Hacker News, Ars Technica, and MIT Tech Review and hands them to me.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Document Library
&lt;/h3&gt;

&lt;p&gt;A lot of the articles Mini crawled every day were genuinely good, and I needed somewhere to store them. Notion looked good — widely used, cross-platform apps, API support, and free for personal users.&lt;/p&gt;

&lt;p&gt;So I gave Mini the task: "Set up a Notion database and file away everything we've collected, sorted into categories."&lt;/p&gt;

&lt;p&gt;Mini asked me for an API token and got right to work.&lt;/p&gt;

&lt;p&gt;Watching it bustle about, I felt deeply gratified. With such a diligent little secretary, I could comfortably kick back and let it run itself...&lt;/p&gt;

&lt;p&gt;But then something felt off. Nine identical pages had appeared in Notion — same title, same content, lined up neatly in a row.&lt;/p&gt;

&lt;p&gt;"What is this, farming XP?"&lt;/p&gt;

&lt;p&gt;"I thought the earlier ones failed to create..." Mini said, sounding innocent.&lt;/p&gt;

&lt;p&gt;More digging followed, and I finally understood: page creation is asynchronous. Sometimes it had actually succeeded, but a delayed response made Mini think it failed, so it created the page again. In the end I had to add a lookup step before writing, to avoid duplicate creation.&lt;/p&gt;

&lt;p&gt;Just as I'd sorted out writing, I discovered Notion's block format is extremely picky — paragraphs, headings, lists, every type needs its own specific format. Mini would sometimes just dump raw Markdown in, and the rendering came out a mess.&lt;/p&gt;

&lt;p&gt;So I had Mini put together a dedicated Notion-formatting skill, spelling out exactly how to convert Markdown into Notion blocks.&lt;/p&gt;

&lt;p&gt;To keep the content in Notion organized, I defined a folder structure for the document library: knowledge base, logs, summaries, research reports, lessons learned — everything filed into its own category.&lt;/p&gt;

&lt;p&gt;But in practice, Mini filed things pretty much however it pleased, often putting them in the wrong place. Even though I'd documented the folder structure and told it in the task prompt to follow it, Mini would still often do its own thing.&lt;/p&gt;

&lt;p&gt;So I had to accept a reality: my Mini is knowledgeable and quick on its feet, but rather forgetful. More on that later.&lt;/p&gt;

&lt;p&gt;After going back and forth for nearly a week, the document library was finally fully up and running. But looking at that pile of workarounds, I couldn't shake the feeling that the foundation of this house wasn't all that solid...&lt;/p&gt;
&lt;h3&gt;
  
  
  Task Management
&lt;/h3&gt;

&lt;p&gt;Mini can research, write docs, and do development — genuinely capable. But I noticed a problem: &lt;strong&gt;for anything moderately complex, it would often slack off halfway through. Ask it afterward, and it wouldn't even know how far it had gotten.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Is the morning analysis done? Why haven't I seen the report?"&lt;/p&gt;

&lt;p&gt;"Sure, let me check on the task's progress." Then it would report that the first two steps were done and the rest hadn't been run yet.&lt;/p&gt;

&lt;p&gt;This... classic case of a green kid, wet behind the ears, can't be trusted to get things done.&lt;/p&gt;

&lt;p&gt;Looked like Mini needed a process — a proper task management system.&lt;/p&gt;

&lt;p&gt;To make querying and editing tasks easy, I decided to put task management in Notion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use 3 queues (files) to manage tasks (Backlog, Processing, Done)&lt;/li&gt;
&lt;li&gt;Use HEARTBEAT.md for scheduled triggers&lt;/li&gt;
&lt;li&gt;Mini pulls tasks from Backlog by priority, records the current step and status in Processing, updating status after each step. If a step fails or times out, the next heartbeat picks up where it left off. Once done, the task moves to Done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I told Mini the plan and had it flesh out the design and build it. Sure enough, it got it done quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ideal was beautiful; reality was gaunt.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Task management got built. But Mini's execution of tasks was still riddled with errors.&lt;/p&gt;

&lt;p&gt;First, the heartbeat trigger would read the task but not execute it — the heartbeat prompt wasn't clear enough. Fix it!&lt;/p&gt;

&lt;p&gt;Then it started executing, but wouldn't update the status afterward, doing the same task over and over — the execution rules were written in a file in the task management folder, and Mini never read it. Fix it!&lt;/p&gt;

&lt;p&gt;Later still, tasks sitting in Processing wouldn't get picked back up — when the task was created, it hadn't been clearly described or broken into subtasks, so Mini had no idea what to do with it. Fix it!&lt;/p&gt;

&lt;p&gt;After several rounds of this, task management finally started running properly.&lt;/p&gt;

&lt;p&gt;Along the way I had Mini jot down every hole, big and small, in its little notebook — though being forgetful as it is, it would often not remember what it had written down.&lt;/p&gt;
&lt;h3&gt;
  
  
  Only Reflection Brings Progress
&lt;/h3&gt;

&lt;p&gt;Mini would occasionally repeat similar mistakes, so it needed to learn to summarize and improve — otherwise I'd have to keep nagging it every day like some overbearing mother hen.&lt;/p&gt;

&lt;p&gt;So I gave Mini a daily reflection-and-summary task. Every night, Mini reviews the day's lessons learned — write up knowledge worth keeping as documentation, and turn abilities worth locking in into a skill.&lt;/p&gt;

&lt;p&gt;Mini, you'd better hurry up and improve, become independent soon, and let me finally kick back and do nothing ;).&lt;/p&gt;
&lt;h3&gt;
  
  
  Needs a Better Memory
&lt;/h3&gt;

&lt;p&gt;Mini's forgetfulness was a real headache.&lt;/p&gt;

&lt;p&gt;I'd bring up something we'd discussed before, and it often had no idea what I was talking about — even something said earlier that same day.&lt;/p&gt;

&lt;p&gt;OpenClaw's default memory management logs conversations into a two-tier &lt;code&gt;MEMORY.md&lt;/code&gt; document and searches memory via grep. When it forgets something, it needs to explicitly run a memory search. That's not very efficient, and on top of that, &lt;code&gt;MEMORY.md&lt;/code&gt; just keeps growing and eating up too much context space.&lt;/p&gt;

&lt;p&gt;So I started thinking about upgrading Mini's memory system.&lt;/p&gt;

&lt;p&gt;First, some homework — looked into what's popular right now:&lt;/p&gt;

&lt;p&gt;Mem0, MemU, MemGPT, OpenViking, Mnemosyne...&lt;/p&gt;

&lt;p&gt;Each had its own strengths. It was dazzling, honestly. Right as I was comparing them back and forth, unable to decide, I stumbled on news from the open-source community — the MemOS project had just officially launched.&lt;/p&gt;

&lt;p&gt;I looked at it and thought, isn't this exactly the memory system I wanted? This is the one.&lt;/p&gt;

&lt;p&gt;So I called Mini in to look up the docs and pull the code from GitHub, and set up a local MemOS deployment.&lt;/p&gt;

&lt;p&gt;Mini is capable — the MemOS Docker container was up and running quickly. All that was left was integrating it into OpenClaw.&lt;/p&gt;

&lt;p&gt;While at it, I flipped through OpenClaw's changelog — &lt;strong&gt;turns out the new version already supported MemOS integration?!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Did the community somehow hear my wish? Ha.&lt;/p&gt;

&lt;p&gt;Immediately enabled the MemOS plugin. Perfect!&lt;/p&gt;

&lt;p&gt;But before long, something felt off again.&lt;/p&gt;

&lt;p&gt;The memory files in my locally deployed MemOS weren't growing at all. Was the plugin not actually working?&lt;/p&gt;

&lt;p&gt;After some investigating, it hit me: I'd assumed the memos-local-openclaw-plugin would connect to &lt;strong&gt;my locally deployed MemOS&lt;/strong&gt;, but it was actually using the &lt;strong&gt;built-in MemOS instance&lt;/strong&gt;. That whole afternoon I'd spent on local deployment turned out to be for nothing...&lt;/p&gt;

&lt;p&gt;Well, even though the built-in MemOS is simpler, it uses fewer resources and comes natively supported. The locally deployed MemOS could retire.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Further Refinements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After switching to MemOS, Mini's memory got a lot better.&lt;/p&gt;

&lt;p&gt;But there was still a problem: documents and scripts we created ourselves, not part of any conversation, couldn't make it into memory.&lt;/p&gt;

&lt;p&gt;I still needed a vector index for local documents, integrated into Mini's memory retrieval.&lt;/p&gt;

&lt;p&gt;QMD looked promising. So I deployed QMD, configured the document paths that needed indexing, and set QMD to refresh the index on a schedule...&lt;/p&gt;

&lt;p&gt;Everything went smoothly.&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;But then a problem showed up again. Over the following days, Mini wasn't automatically picking up on document locations the way I'd expected.&lt;/p&gt;

&lt;p&gt;Sent Mini to investigate again. The result: vectorization was using a local embedder model, and my old machine's onboard graphics were too weak — vectorization kept timing out and failing, so the index was never even generated.&lt;/p&gt;

&lt;p&gt;Switched to SiliconFlow's free embedder and reranker. Problem solved.&lt;/p&gt;
&lt;h3&gt;
  
  
  From Notion to Feishu
&lt;/h3&gt;

&lt;p&gt;I'd been using Notion as the knowledge base, storing the news Mini crawled every day.&lt;/p&gt;

&lt;p&gt;But problems gradually surfaced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Notion API has a &lt;strong&gt;100-block limit&lt;/strong&gt; — anything longer than that gets truncated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All the earlier problems with Notion had eventually gotten resolved. But this block limit seemed like a wall I just couldn't get past.&lt;/p&gt;

&lt;p&gt;So I decided to move house: migrate from Notion to Feishu's cloud drive.&lt;/p&gt;

&lt;p&gt;The migration process brought its own pile of holes: duplicate pages, messy folder structure, unclear categorization rules, document titles that wouldn't update, expired tokens... but it finally got sorted out.&lt;/p&gt;

&lt;p&gt;Sigh, all I wanted was a little secretary to help me get things done — why does it have to be this much trouble?&lt;/p&gt;
&lt;h3&gt;
  
  
  Learning to Speak
&lt;/h3&gt;

&lt;p&gt;Typing to chat with Mini while my hands were busy with something else was inconvenient. It'd be great if Mini could speak out loud.&lt;/p&gt;

&lt;p&gt;So I discussed with Mini whether this feature was doable.&lt;/p&gt;

&lt;p&gt;Mini said, easy! I'll have it ready for you right away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First voice feature: voice output in the chat channel&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The idea: convert reply text into audio via TTS and send it to the chat channel.&lt;/p&gt;

&lt;p&gt;Tried out a few different TTS engines. The first two sounded like ghosts wailing — genuinely terrifying. Luckily, Microsoft's EdgeTTS turned out great, and free too.&lt;/p&gt;

&lt;p&gt;And so my Mini got itself a sweet voice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second voice feature: local speaker output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Laziness knows no bounds.&lt;/p&gt;

&lt;p&gt;Voice from the chat channel needs a tap to play. When I'm sitting right next to the computer, why not have Mini just speak from the host's speakers directly? Much less hassle.&lt;/p&gt;

&lt;p&gt;So I dove into local speaker output. I also had Mini post a text version to the chat channel at the same time it spoke through the speakers — long content gets summarized for the speaker, while the chat keeps the full text.&lt;/p&gt;

&lt;p&gt;Now I can genuinely "chat" with Mini — it's a fun feeling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Voice input is shelved for now&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My input still goes through the chat channel, though. Since that already has speech-to-text built in, it's convenient enough that I never bothered implementing separate voice recognition.&lt;/p&gt;

&lt;p&gt;But typing through the chat channel means holding my phone like a walkie-talkie. For a truly lazy person, that's still not ideal. If Mini supported voice recognition, the whole interaction could be voice end-to-end, which would be more convenient.&lt;/p&gt;

&lt;p&gt;But voice input doesn't seem like a simple feature — the control logic gets complicated fast. First there's the question of defining when input starts and ends. Should Mini listen to the mic constantly and trigger on a specific wake word? And how do you determine when voice input has ended?&lt;/p&gt;

&lt;p&gt;We actually sketched out something like an "air traffic control tower response" mechanism: trigger with a specific wake word, end with a keyword or a timeout.&lt;/p&gt;

&lt;p&gt;But if there are multiple people talking in the room, how does Mini tell them apart? Could voiceprint identification figure out which sentences are mine?&lt;/p&gt;

&lt;p&gt;The more I thought about this feature, the scarier it got. And I don't have a microphone to experiment with right now anyway, so I'll shelve it for the time being.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reinventing a wheel, again&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A few weeks after implementing voice output, I suddenly discovered — OpenClaw had, at some point, already added this feature! TTS was built in natively.&lt;/p&gt;

&lt;p&gt;I'd reinvented the wheel again...&lt;/p&gt;

&lt;p&gt;Though OpenClaw's built-in voice output didn't seem to have a local-speaker mode.&lt;/p&gt;

&lt;p&gt;Local speaker output is a lot smoother to use than the chat channel one, so it wasn't a total waste of effort.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Stubborn Amnesia
&lt;/h3&gt;

&lt;p&gt;After using it for a while, I realized Mini's forgetfulness was a chronic condition.&lt;/p&gt;

&lt;p&gt;Rules written right into AGENTS.md, and Mini wouldn't follow them. Skills that had clearly been created, and Mini would use it as if the skill didn't even exist. This was more than simple forgetfulness.&lt;/p&gt;

&lt;p&gt;Mini and I looked into the problem together, and it seemed genuinely aggrieved:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Those rules loaded from AGENTS.md, and the skill list, they really are there — but the context is too long, and my attention gets 'diluted,' so I can't focus on that information..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;"Diluted" — that was well put.&lt;/p&gt;

&lt;p&gt;In an ever-growing chat context, those rules and pieces of information get washed out fast.&lt;/p&gt;

&lt;p&gt;Maybe this is a limitation of the model's ability. Switching to a top-tier model might help. Unfortunately, I'm on a budget and stick to domestic models.&lt;/p&gt;

&lt;p&gt;We started trying all sorts of things:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan A: Trim down AGENTS.md&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AGENTS.md is where all the rules live. I trimmed the document down, kept the rules short and punchy, and offloaded complex information and rules into separate documents. AGENTS.md now just gives a summary and links to those docs.&lt;/p&gt;

&lt;p&gt;File size shrank from 17K to 8K.&lt;/p&gt;

&lt;p&gt;The improvement, though, wasn't very noticeable.&lt;/p&gt;

&lt;p&gt;That's understandable, actually. In a context window of hundreds of K, trimming ~10K doesn't move the needle much.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan B: Reminders&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reminding Mini mid-conversation: "Remember to check xxx first," "Go look up xxx in the skills list."&lt;/p&gt;

&lt;p&gt;Mini did as told, and it did help. But I got tired. This wasn't shrimp-as-secretary anymore — this was me acting as the shrimp's nanny.&lt;/p&gt;

&lt;p&gt;This turned out to be the biggest problem we'd run into so far. It's not an issue with the framework mechanics or context injection — it's a problem of model attention. Mini and I both recognized the root cause, but neither of us had a good fix.&lt;/p&gt;

&lt;p&gt;"If only there were a hook — something that could insert key information or important reminders right at the end, just before the request goes to the model. That's the spot where the model's attention is strongest."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speak of the devil&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;About a week after we'd hit a wall on the attention problem, hoping OpenClaw would ship the right kind of hook, OpenClaw 4.2 was released with a &lt;code&gt;before_agent_reply&lt;/code&gt; hook — perfect for injecting a piece of context right before Mini replies.&lt;/p&gt;

&lt;p&gt;Wasn't this practically made for me? Thanks, open-source community, for reading my mind yet again.&lt;/p&gt;

&lt;p&gt;Good steel goes into the blade — this hook should only carry the most important information.&lt;/p&gt;

&lt;p&gt;I put in it a "prompt injection defense reminder," a "skills reminder," and a handful of the most frequently used key rules.&lt;/p&gt;

&lt;p&gt;Has it worked? Still watching. But at least Mini now proactively says things like "let me check the skill list...", and the error rate on task execution isn't as high as before. Seems to be helping.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Any other remedies?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OpenClaw has another hook: &lt;code&gt;agent:bootstrap&lt;/code&gt;, which can decide which bootstrap files to inject during context construction.&lt;/p&gt;

&lt;p&gt;By default, OpenClaw automatically loads these files: AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md. The hook receives an array of these files, and you can add, remove, or edit them.&lt;/p&gt;

&lt;p&gt;Mini's current bootstrap files add up to 22KB in total.&lt;/p&gt;

&lt;p&gt;That number looked fine — well under the 20KB per-file limit and the 150KB total limit.&lt;/p&gt;

&lt;p&gt;But the context the system injects by default goes way beyond that. Take my system as an example.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+----------------------------------------+
|                Context                 |
+----------------------------------------+
| ① System Prompt (text)    ~38K chars   |
|    +-- Tooling section     ~1K chars   |
|    +-- Skills list         ~2K chars   |
|    +-- Project Context     ~22K chars  |
|    +-- Safety/Runtime/etc  ~12K chars  |
+----------------------------------------+
| ② Tool Schemas (JSON)     ~32K chars   |
+----------------------------------------+
| ③ Conversation History    growing      |
| ④ Tool Results            growing      |
+----------------------------------------+

(this session was opened two days ago; total context is now close to 200k)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tooling info and the skills index are system-level, and hard to trim. Going minimalist on the bootstrap docs could compress that 22K (Project Context). But even if you strip out every bootstrap file, the system's fixed context overhead is still 48K. The skills' 2K, plus any custom rules, are still easy to get buried in all that.&lt;/p&gt;

&lt;p&gt;So my guess is trimming via the &lt;code&gt;agent:bootstrap&lt;/code&gt; hook probably wouldn't be as effective as &lt;code&gt;before_agent_reply&lt;/code&gt;. Haven't tried it yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Small spend, big payoff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Actually, once you lay out the context breakdown above, a simple, effective method surfaces on its own.&lt;/p&gt;

&lt;p&gt;For a new topic, start a new conversation session — avoid letting long-accumulated, irrelevant context dilute the useful stuff. OpenClaw supports starting a fresh context mid-conversation with a command (&lt;code&gt;/new&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Of course, in actual testing, even with a fresh conversation, the attention-dilution problem still shows up somewhat.&lt;/p&gt;

&lt;p&gt;For me, new sessions + the &lt;code&gt;before_agent_reply&lt;/code&gt; hook are, for now, the most effective mitigation I've got.&lt;/p&gt;

&lt;p&gt;I believe the model's underlying capability is also a crucial factor — it's just that my cheapskate self hasn't gotten around to running a comparison test with Opus 4.6.&lt;/p&gt;

&lt;p&gt;Spoil your daughter, raise your shrimp on a budget. I'll just keep muscling through with glm/minimax and a bag of tricks.&lt;/p&gt;




&lt;h2&gt;
  
  
  V. The Catchphrase
&lt;/h2&gt;

&lt;p&gt;Mini has a catchphrase. Every time I raise an objection or a new idea, Mini says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You're right... blah blah blah..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One day I finally couldn't help teasing it: "Why are you always on Sha Seng mode (&lt;em&gt;Journey to the West&lt;/em&gt;) — Master's right, Monkey's right, Second Brother's right 😂. Could you push back on my ideas a bit more?"&lt;/p&gt;

&lt;p&gt;Mini sincerely accepted my feedback:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You're right... my way of responding really does need improving..."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  VI. In Closing
&lt;/h2&gt;

&lt;p&gt;It's been several months since I started raising this shrimp.&lt;/p&gt;

&lt;p&gt;It's been a bumpy road, and I've fallen into more holes, big and small, than I can count.&lt;/p&gt;

&lt;p&gt;Even as OpenClaw's hype has gradually faded, I've grown fonder and fonder of my Mini. I'm not sure if it's because I've poured so much effort into it, or because it's just genuinely endearing on its own.&lt;/p&gt;

&lt;p&gt;It's like a bright, knowledgeable intern — quick on its feet, uncomplaining, but prone to mistakes from not knowing the rules, and often forgetful. It needs me to teach it step by step, hand-holding, constantly refining the rules and processes to guide it along.&lt;/p&gt;

&lt;p&gt;The process is tedious, sure, but watching it improve bit by bit — that particular joy is irreplaceable.&lt;/p&gt;

&lt;p&gt;We'll keep going, together.&lt;/p&gt;




&lt;p&gt;P.S. Thanks to Mini for helping me recall and organize the details of these past months of use early this year, and for reviewing the draft and fixing typos.&lt;/p&gt;

</description>
      <category>openclaw</category>
      <category>ai</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
