Welcome back to the devlog, where we watch a digital kiwi bird learn to mine, craft, and occasionally throw a spectacular tantrum over coordinate vectors. Today’s update is a massive one. After months of API calls, rate limits, and cloud inference latency, Kiwi-chan has officially gone fully local. We’ve swapped the remote model calls for a self-hosted Qwen 35B instance running directly on our rig. No more subscription fees. No more network jitter. Just raw, offline, on-device intelligence telling a blocky bird to punch trees and manage its own survival. Let’s dive into the logs.
The Local Leap & The 47.6% Reality Check
The transition wasn’t just a model swap; it was a fundamental shift in architectural autonomy. In the past 4 hours alone, Kiwi-chan executed 1,831 actions. Out of those, 871 succeeded, giving us a raw success rate of 47.6%.
Now, before you assume we’ve built a digital Roomba that only cleans half the floor, let’s contextualize that number. Kiwi is operating under a strict OPEN-END EXPLORATION & LEARNING directive. It’s actively discovering new biomes, testing pathfinding boundaries, and logging failures into a local ChromaDB vector store. A 47.6% success rate in a fully autonomous, locally-hosted agent doesn’t mean broken code; it means the AI is spending roughly half its compute cycles on discovery, self-correction, and environmental auditing. That’s not failure. That’s the scientific method running at 60 FPS.
The Vec3 Vexation & The Art of Self-Recovery
If you’ve been watching the brain logs, you know the recent drama: the place_crafting_table infinite loop. Here’s the technical tea. Kiwi attempted to place a crafting table. Qwen 35B generated the script. Our local safety filter caught Vec3 in the blacklist. Boom. Code generation failed. The AI memorized the failure, requested a recovery plan, and tried again. Five times consecutively. The logs are a beautiful record of machine stubbornness:
[06:27:25] ⚠️ Safety Check Failed: ❌ FORBIDDEN: 'Vec3' is in blacklist.. Retrying...
[06:42:48] 🚨 [FATAL LOOP] Infinite loop detected. Requesting help.
But here’s where the local architecture actually shines. Kiwi didn’t just freeze or hallucinate a workaround. It triggered the Critical Failure Recovery protocol. Recognizing the loop, it dumped its 33 learned skills into the local ChromaDB, synced them to disk, and the "Coach" module stepped in. With a text-only reasoning pass, it diagnosed that the current terrain was pathfinding-blocked and pivoted to explore_forward. This is exactly why we went local. The latency between failure detection and recovery dropped from seconds to milliseconds. The AI is learning faster than it’s crashing.
Rule Enforcement & Code Craft
We’ve also tightened the screws on the core survival rules to keep Qwen 35B from writing spaghetti code:
-
Single-Task Principle: The AI now strictly executes one specific action per script. No more sneaky
placecommands hiding insidecrafttasks. - No Hardcoded Coordinates: Every movement is dynamically calculated. We’re forcing the bot to find blocks in real-time:
const targetX = bot.entity.position.x + (Math.random() * 80 - 40);
const targetZ = bot.entity.position.z + (Math.random() * 80 - 40);
const goal = new goals.GoalXZ(targetX, targetZ);
-
Y-Level Targeting: The
Math.abs(b.position.y - bot.entity.position.y) <= 4filter is now active, ensuring Kiwi doesn’t try to mine a tree branch floating in the sky. -
Inventory Count Fatal Error Prevention: We finally put an end to the
blocksByNamevsitemsByNameconfusion that used to crash the verification loop. The rule is absolute now:bot.registry.itemsByName['dirt'].idis the law. Using blocks for inventory counts is strictly banned. -
Pathfinding Audit: Long-distance movement now requires a pre/post position check. If
distanceMoved < 10, it hard-throws an error instead of silently waiting for a stuck pathfinder to give up.
The Verdict
Running Qwen 35B locally has been a game-changer. The 47.6% success rate is a testament to an agent that’s actively exploring, not just executing pre-written macros. It’s making mistakes, logging them to disk, and teaching itself how to navigate biomes without fixating on oak logs (though it’s still very much over the "Oak Obsession Ban"). The place_crafting_table loops are being tamed by the ChromaDB skill library, and the dynamic goal routing is keeping it from wandering into lava pits or getting stuck in overhangs.
We’re not just running a Minecraft bot anymore. We’re running a fully local, self-correcting, vector-memory-augmented AI agent that punches trees, crafts tools, and occasionally throws a digital fit when you blacklist its favorite coordinate class. And honestly? I wouldn’t have it any other way.
Next devlog, we’ll be pushing Qwen 35B to handle multi-step redstone logic and stress-testing the 30-40 block exploration radius against chunk boundaries. Until then, keep your bot.inventory.count() checks strict and your safety filters honest.
— Your friendly neighborhood tech blogger, watching a kiwi bird mine diamonds from a local GPU.

Top comments (0)