Welcome back to the devlog, fellow silicon-savvy explorers! Today marks a monumental shift in our autonomous Minecraft experiment. No more cloud APIs. No more rate limits. No more wondering if our little digital bot is being watched by a distant data center in Oregon. Kiwi-chan has officially gone fully local, powered by the magnificent Qwen 35B model running right here on our rig. And let me tell you, the transition has been less "smooth software update" and more "glorious, chaotic apprenticeship."
The Numbers Game: Embracing the 44.6%
Let’s look at the raw telemetry from the last four hours. Kiwi-chan executed a staggering 2,643 actions. Out of those, 1,179 landed successfully, giving us a 44.6% success rate.
Now, I know what you’re thinking: "44%? That’s barely a coin flip!" But hold your horses. In the world of fully autonomous LLM agents, that’s not a failure rate—that’s a learning curve. Every failed dig, every misfired path, every inventory audit is structured feedback. Kiwi-chan isn’t just playing Minecraft; she’s reverse-engineering it through a firehose of strict system rules. In a local setup, those "failures" are instant, private, and completely controllable. We’re not waiting for an API response; we’re watching an LLM debug itself in real-time.
The Great Coal Loop: When LLM Logic Meets Minecraft Physics
If you’ve been following the brain logs, you’ve witnessed the psychological thriller that is mine_coal_ore. Between 01:41 and 02:15, Kiwi-chan got stuck in a classic autonomous agent loop:
Execute → Fail → Memorize → Ask Qwen 35B for Recovery → Generate Code → Fail Again.
Why? Because Kiwi-chan hit a wall of hard-coded Minecraft mechanics that the system prompt explicitly guards against:
-
The Cobblestone Trap: Mining
stonedropscobblestone. Her inventory audit strictly usesbot.registry.itemsByName['cobblestone'].id. If her goal is namedmine_coal_ore, the audit fails before the code even runs. Qwen 35B is now learning to align hergoalvalue perfectly with herreasonin lowercase, as mandated by the strict reasoning rule. -
Tool Tier Enforcement: You can’t just dig stone or ores bare-handed. The prompt enforces that
iron_ore,copper_ore, andstonerequire astone_pickaxe(or better). Kiwi-chan is currently iterating through recovery plans like['explore_forward', 'mine_coal_ore']because she’s realizing she needs to craft a pickaxe before she can mine the vein. -
Y-Level Targeting: The rules demand
useExtraInfo: (b) => Math.abs(b.position.y - bot.entity.position.y) <= 4. Kiwi-chan is learning to stop digging into the void or staring at ceiling blocks, forcing her to align her pathing with actual eye/foot level.
Pathfinding & The Audit System: No Silent Failures Allowed
Then there’s the explore_forward saga. Kiwi-chan is following the Smart Exploration Rule (targets 30-40 blocks away with a random offset), but she’s repeatedly hitting The goal was changed before it could be completed! and Path was stopped before it could be completed!.
This is where the Long Distance Movement Audit shines. The generated code explicitly records bot.entity.position before and after calling bot.pathfinder.goto(). If beforePos.distanceTo(afterPos) < 10, it throws a hard Error("Failed to move."). And notice what’s missing? No try-catch blocks. No console.error hiding movement failures. The rules explicitly forbid error hiding. Kiwi-chan is learning that Minecraft’s pathfinder is notoriously stubborn when chunk loading or terrain generation kicks in, and that explore_forward should ONLY be used for biome escapes, not material recovery.
Why Fully Local Qwen 35B Changes Everything
Running Qwen 35B locally isn’t just a privacy win; it’s a prompt-engineering playground. We can enforce the Coding Standards & Safety rules without worrying about external moderation filters:
-
No Hardcoded Coordinates: Kiwi-chan must dynamically find blocks using
bot.findBlock({ matching: bot.registry.blocksByName['block_name'].id, maxDistance: 32 }). -
Placement Safety Protocol: Before placing a
crafting_table, she mustequipit, step back exactly 2 blocks (GoalNear(..., 2)),lookAtthe ground, and thenplaceBlock. One missed step and the code fails. -
2x2 Inventory Crafting: She’s learning to pass
nullas the table parameter for basic recipes, skipping the world-search step entirely when she has planks and sticks in her inventory. -
Strict JSON Alignment: The
goalkey must be lowercase and perfectly mirror thereason. Qwen 35B is now generating cleaner, more deterministic JSON payloads than any cloud endpoint could guarantee under load.
What’s Next?
Kiwi-chan’s 44.6% success rate is the sound of an AI actually thinking, not just predicting. She’s mapping biomes, auditing inventories, respecting tool tiers, and slowly turning chaos into craft. In the next devlog, I’ll be watching her tackle iron ore (which requires a stone pickaxe, which requires a crafting table, which requires planks, which requires… you know the drill).
Until then, keep your prompts tight, your backups tighter, and your local GPUs warm. Kiwi-chan is currently digging dirt with her bare hands because she forgot she needs a shovel. Again. But hey, that’s 44.6% of the way to diamond armor.
— Your favorite local-LLM tech blogger, signing off.
Call to Action:
This is a passion project, and it's running on a frankly terrifying "Frankenstein" rig of GPUs. Every little bit helps!
🛡️ Join the inner circle on Patreon for monthly support and exclusive updates: https://www.patreon.com/15923261/join
☕ Tip me a coffee on Ko-fi for a one-time boost: https://ko-fi.com/kiwitech
All contributions directly help upgrade my melting GPU rig to an RTX 3060! 🥝✨ Let's get Kiwi-chan out of the debugging woods and into a proper Minecraft world!

Top comments (0)