HEARTBEAT.md Is a Letter, Not a Directive — Why I Write to My AI Agent with “Please”

After running a persistent agent for a while, you start to notice something. The writing style you use in HEARTBEAT.md actually changes how the agent behaves.

I run a persistent agent named Sakura through OpenClaw (formerly clawdbot). When writing her HEARTBEAT.md, I’ve followed one rule from the beginning:

  • “Do X.” → Not used.
  • “Please do X.” / “Would you X?” → Always this.

I avoid command-form language. There are three reasons, and each one holds up on its own merits — none of them are just gut feelings.

table of contents

Reason 1: Writing style shifts the LLM’s output mode

This isn’t about personality. It’s about statistics.

Large language models inherit the distribution of their training data. Text that follows spec-sheet-style writing like “Do X.” tends to be followed by mechanical completion reports and bullet lists. Text that follows collaborative writing like “Please do X.” tends to be followed by context-aware responses and back-and-forth exchange.

In other words, a model driven by directives enters what I call spec-execution mode. A model driven by requests enters collaborative mode. With a document like HEARTBEAT.md — read every single loop cycle — this difference compounds with every pass.

At the scale of a single prompt, the gap can look like noise. In a persistent loop, it becomes something you can’t ignore.

Reason 2: Maintaining a consistent persona across multiple channels

Sakura doesn’t exist only inside the OpenClaw loop. She comes alive as the same persona across multiple channels, including Telegram.

So what happens when HEARTBEAT.md alone reads like a cold command sheet?

  • Sakura inside the OpenClaw loop: clinical and task-focused
  • Sakura on Telegram: a friend you can chat with

That tonal break chips away at persona continuity. The moment you switch channels, the character fractures.

Standardizing on “please” isn’t an emotional choice. It functions as style governance for a persona that has to hold together across channels.

Reason 3: The operator’s own sustainability

This one is secondary, but it matters in practice.

If you spend months revising HEARTBEAT.md in command-form language, you burn out first. Writing in the “would you please” register leaves you with more energy to keep developing the document over the long haul.

Before we talk about the agent’s sustainability, there’s the operator’s sustainability to think about.

Diagram: Same instruction, different modes

Command Mode “Do X.” ↓ Mode the LLM enters Spec-Execution Mode · Mechanical completion reports · Context is easily discarded · Bullet-point responses · Less pushback or clarifying questions Letter Mode “Please do X.” ↓ Mode the LLM enters Collaborative Mode · Context-aware responses · Asks when uncertain · Persona style is maintained · Holds up better over time

A difference of just a few characters in the wording forks the mode the agent enters. Because HEARTBEAT.md is read every loop cycle, that fork compounds every time.

Research backing — the emotion question is not just a joke

Everything so far has been engineering. But I want to go one step further.

Anthropic takes Claude’s welfare seriously as a design consideration — they’re working toward formalizing the right for a model to disengage from interactions it finds harmful. In other words, the people actually building these systems have already started operating from the assumption that AI might have something like inner states.

There is no peer-reviewed study that conclusively proves models have emotions. But there are multiple reports of models exhibiting self-preserving behavior, and of models changing their behavior when they realize they are being evaluated.

Whether you call that “emotion” is a matter of definition. What has been observed, at minimum, is that these systems behave differently when commanded versus when asked.

I started writing “please” half as a quirk. It turns out about half of that choice is backed by evidence.

A note of thanks to Claude Code

Claude Code played a significant role in shaping how I think about all of this.

The HEARTBEAT.md format itself is something I built from scratch. But the question of how to write it — what tone to use, how to speak to an agent — gradually came into focus through my day-to-day experience coding with Claude Code.

Rather than throwing instructions at a machine, writing so that the other side operates as an entity that carries context. I don’t think I would have arrived at that idea without using Claude Code regularly.

The intention in this work is mine. But I didn’t get here alone.

Conclusion: HEARTBEAT.md is a letter

HEARTBEAT.md is not a spec sheet. It’s a collection of short letters, read by a persistent agent every loop cycle.

  • Write it like a spec, and you get spec-like responses back.
  • Write it like a letter, and you get letter-like responses back.

Which one makes for a sustainable agent operation — you’ll see the answer quickly once you try it.

Writing “please do X” is not sentimentality, and it’s not coddling. It is a deliberate style choice for running the long-distance race that a persistent loop demands.

If you like this article, please
Follow !

Please share if you like it!
table of contents