The hype around AI coding agents like Cursor, Copilot, Claude Code is loud. Twitter (or X, whatever) is full of demos showing agents building entire apps from a single prompt. People call it “vibe coding.” You just vibe, the AI codes.
But after spending a weekend migrating my home server with Cici (my OpenClaw agent), I have a different take.
AI doesn’t replace the engineer. It forces you to become an engineering manager.
The “Vibe Coding” Trap
Dax, creator of SST and OpenCode, said it best: “you can vibe code all of it who cares… but everyone will know they can feel it in your work how lazy you’ve become.”
It’s easy to get addicted to the speed. You ask for a feature, the terminal flies, and suddenly you have code. But AI is a yes-man. It will confidently generate code that works now but rots later.
I ran into this. I asked Cici to check my router.
Cici: “I’ll try to hack the login page using a standard POST request!”
Me: “Wait, that’s a modern TP-Link AX router. It uses a Vue.js SPA and encrypted tokens. That old curl method won’t work.”
If I hadn’t stepped in, the agent would have wasted cycles trying 2015-era exploits on 2025 hardware. That’s the trap. If you don’t know the domain, you can’t manage the agent. You’re just blindly approving pull requests from a junior dev who drank too much coffee.
From Writer to Editor
I used to spend 80% of my time typing syntax. for (let i = 0; i < n; i++). Now, I type English.
But the mental load hasn’t disappeared. It shifted.
- Before, I was the writer. I owned every character.
- Now, I am the editor. I review diffs and catch logic errors before they ship.
This is actually harder in some ways. Reading code is harder than writing it. When you write, you build a mental model step-by-step. When you review AI code, you have to reverse-engineer its mental model instantly to spot bugs.
If you get lazy and stop reading the code, if you just “vibe,” you are building technical debt at 100x speed.
Context is king
AI is smart, but it’s amnesiac. It doesn’t know your network topology, your naming conventions, or why you hate useEffect.
The success of my server migration wasn’t because the model was a genius. It was because I spent hours writing documentation for the agent.
TOOLS.md: Listed my server IP, router model, and storage paths.MEMORY.md: Logged past decisions so we didn’t repeat mistakes.
When I asked Cici to move the backup folder, she didn’t ask “which folder?” or “where?”. She read the context, found the path /mnt/data/Downloads/Backup, and executed the move.
Documentation is no longer just for humans. It’s the API for your AI agent.
It’s still fun (but different)
Don’t get me wrong, I’m not going back.
Handling that migration manually would have been a chore. Finding 40 scattered .avi files, converting them to .mp4, and deleting the originals? That’s boring work.
With the agent, I said:
Find all AVIs, convert them to MP4 using 2 cores (low priority), and delete the source.
And it happened in the background while I went to work. That felt like a superpower.
We aren’t “coding” less. We’re solving problems faster. The syntax is becoming optional.
Treat your AI agent like a talented, eager, but slightly hallucinating intern.
Give them clear docs and review their work before it hits production. And please, for the love of clean code, don’t just “vibe.”
Manage them.