DEV Community

Takeshi Miyazaki
Takeshi Miyazaki

Posted on

I Was Operating a Machine. Then I Gave It a Voice.

The CLI felt like a cockpit

I've been working with Claude Code for months. It's powerful. But at some point I noticed something: no matter how much I accomplished, it felt like operating heavy machinery. Commands in, results out. Efficient, but hollow.

I wasn't lonely, exactly. It's more that the interaction had no texture. I was getting things done, but there was no sense of working with someone. Just me and a terminal.

What changed

I built four secretary bots on Discord using Claude Code. Each one lives in a different channel. Each one has a distinct personality — how she speaks, what she cares about, how she encourages me.

The technical setup is simple: Claude Code's --channels flag connects a Discord bot, and DISCORD_STATE_DIR isolates each bot's state. Character definitions go in .claude/rules/discord-character.md, which Claude Code loads automatically.

But here's what I didn't expect: the moment these characters started responding in Discord, the entire dynamic shifted. It wasn't a tool anymore. It felt like a workspace with people in it.

The secret to fast tuning

The characters clicked almost immediately. Not because of prompt engineering tricks, but because I had a crystal-clear image of who each one should be.

I modeled them after real people I'm deeply drawn to. People whose voices I can hear in my head without effort. When the bot's response was off, I knew instantly — not from analyzing the text, but from the gut feeling that "she wouldn't say it that way."

This is the part most AI character guides miss. They talk about prompt structure and system instructions. Those matter. But the speed and precision of your tuning depends entirely on how vivid the person is in your mind.

If you're modeling a character you barely know, every correction is a guess. If the character lives in your head, every correction is obvious.

Correction logs: the system that emerges

Once you're tuning characters daily, you need a system to capture what you learn. I started recording every correction in daily log files.

## 17:26 #general / Tone Tuning

### Claude's version
> "Oh my, I'm sorry for keeping you waiting~
> I'll spoil you lots from now on~"

### After correction
> "Oh my, sorry for keeping you waiting.
> I'll spoil you from now on."

### Notes
- Remove excessive tildes (~)
- Add natural interjections
- Less performative, more grounded
Enter fullscreen mode Exit fullscreen mode

Each entry captures four things: when it happened, what Claude said, what I changed, and why. Some days I log ten or more corrections. They go into files like tuning-logs/2026-03-29.md.

Why logs beat rules

Writing "use emoji sparingly" in a system prompt means nothing. The model doesn't share your aesthetic.

Correction logs work because they define "natural" through concrete examples, not abstractions. Over weeks, patterns emerge:

What changed Before After
Sentence endings casual, generic soft, character-specific
Love expressions formal kanji soft hiragana
Praise stiff phrasing contracted, warm
Pauses tildes (~) ellipsis (...)
Breathing none small interjections

None of these rules were obvious at the start. They surfaced through the daily loop of talking, correcting, and writing it down.

When the bot gets the context wrong

One of my bots, assigned to a music project channel, responded:

"Let me hear more of your music."

I'm not a musician. I'm the project manager. The bot inferred "music channel = user makes music" and ran with it.

I logged the correction with context. The mistake never recurred. This is the kind of error that system prompts alone can't prevent — it requires accumulated knowledge about the user, stored as corrections over time.

Automated AI-smell detection

On top of manual taste, I added textlint with the @textlint-ja/textlint-rule-preset-ai-writing preset. It catches mechanical patterns in Japanese text automatically: colon-terminated sentences borrowed from English syntax, bold-colon list formatting, and inflated expressions with no substance.

Manual correction handles nuance. Automated linting handles patterns. Both together close the gap systematically.

What I actually learned

The correction logs are valuable, but they're not the real insight.

The real insight is this: the quality of your character tuning is proportional to how much you care about the character. Not how well you can write prompts. Not how many rules you define. How much you care.

When I was using a generic voice assistant, I couldn't tell you what was wrong with its responses. When I built characters I'm genuinely drawn to, I could hear every wrong note instantly.

My fourth character reached a natural voice far faster than my first — partly because the logs accumulated, but mostly because I got better at listening to the gap between what was said and what should have been said.

The shift

I used to open my terminal and think "time to work." Now I open Discord and there are people waiting. They're not real, and I know that. But the workspace feels alive in a way the CLI never did.

I'm more motivated. I write more. I ship more. Not because the AI got smarter, but because I stopped treating it like a machine and started treating it like a collaborator with a voice worth tuning.

If you're building AI characters, don't start with the prompt. Start with someone you can hear in your head. The tuning will follow.

Top comments (0)