todo: turn a chat into a commander or a bot, carrying its context

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-27 08:46:36 +00:00
co-authored by Claude Fable 5
parent 68f3643df7
commit 6762a32ea6
2 changed files with 54 additions and 3 deletions
+3 -3
View File
@@ -22,12 +22,12 @@ the owner's OS user and can never be granted. Indirection there really is accide
## Themes
**106 open, 31 closed**, across 33 themes.
**107 open, 31 closed**, across 33 themes.
| Theme | Open | Closed |
| ------------------------------------------------------------------------------------------ | ---- | ------ |
| [Affordances](todo/affordances/) | 2 | 0 |
| [Agents coordinating agents](todo/agent-coordination/) | 4 | 0 |
| [Agents coordinating agents](todo/agent-coordination/) | 5 | 0 |
| [Speaking into a session from the backend](todo/agent-delivery/) | 1 | 1 |
| [Backburner](todo/backburner/) | 3 | 0 |
| [Background jobs](todo/background-jobs/) | 2 | 1 |
@@ -69,6 +69,7 @@ the owner's OS user and can never be granted. Indirection there really is accide
## Newest ten
- `2026-08-27` **Turn an ordinary chat into a commander or a bot, carrying its context along** — [agent-coordination/turn-a-chat-into-a-commander-or-a-bot](todo/agent-coordination/turn-a-chat-into-a-commander-or-a-bot.md)
- `2026-08-27` **AGENTS.md sweep — what is left after the static docs landed** — [docs-conventions/agents-md-remaining](todo/docs-conventions/agents-md-remaining.md)
- `2026-08-27` **The calendar/contacts skill has never been exercised by an actual agent** — [known-bugs/calendar-skill-never-used-by-an-agent](todo/known-bugs/calendar-skill-never-used-by-an-agent.md)
- `2026-08-27` **Setting up a phone for calendar and contacts should be one link inside Officer, not a manual account form** — [mobile-apps/setting-up-a-phone-should-be-a-link-in-the-app](todo/mobile-apps/setting-up-a-phone-should-be-a-link-in-the-app.md)
@@ -78,4 +79,3 @@ the owner's OS user and can never be granted. Indirection there really is accide
- `2026-08-25` **Commit signing is inconsistent across harnesses — Claude names itself, opencode names nothing** — [agent-coordination/commit-signing-is-inconsistent-across-harnesses](todo/agent-coordination/commit-signing-is-inconsistent-across-harnesses.md)
- `2026-08-25` **A commander's watcher does not survive a reboot, and nothing says so** — [agent-coordination/a-commander-s-watcher-does-not-survive-a-reboot](todo/agent-coordination/a-commander-s-watcher-does-not-survive-a-reboot.md)
- `2026-08-25` **Resurrect Projects/Apps** — [backburner/resurrect-projects-apps](todo/backburner/resurrect-projects-apps.md)
- `2026-08-25` **Sweep: AGENTS.md becomes the real instructions everywhere, CLAUDE.md a pointer beside it** — [docs-conventions/sweep-agents-md-primary-claude-md-pointer](todo/docs-conventions/sweep-agents-md-primary-claude-md-pointer.md)
@@ -0,0 +1,51 @@
---
id: agent-coordination/turn-a-chat-into-a-commander-or-a-bot
title: 'Turn an ordinary chat into a commander or a bot, carrying its context along'
theme: agent-coordination
status: open
created: 2026-08-27
date_source: stated
order: 4
---
**Every chat should have a "turn into commander" / "turn into bot" action, carrying the conversation's
context into the new one.** Wanted 2026-08-27. The case: a conversation has already built up real
context — you were investigating something, chatting through a problem — and only partway through does
it become clear this should be a standing watcher or a standing job, rather than something to
re-explain from a blank commander or bot.
**Bot and commander are two real, different things today, not one feature with two names** — worth
being precise about which is meant when this is built. Both are just "a conversation whose working
directory is set to a special folder", per `permissions/registry.ts:312`: _"a bot IS a conversation
whose working directory is `bots/`."_ But their briefs are opposite in size on purpose
(`api/bots/brief.ts`'s own comment): **a bot is one sentence and a watch, arm-on-first-message, no
interview.** **A commander is a job** — procedures, a ledger, a dispatch policy, a setup conversation.
So "turn into bot" and "turn into commander" are different destinations with different expectations of
how much ceremony happens next, not two labels for the same button.
**The real obstacle, and it is structural, not a missing button:** both are created fresh today.
`POST /command-hq/commanders/new` takes a `prompt`, a `name`, a `referencePath` — nothing that accepts
an existing conversation's history — and starts a **new** transcript in the commander's own directory.
Bots work the same way. And a Claude Code transcript's identity is scoped to the working directory it
started in (verified this session: `~/.claude/projects/<slug-of-cwd>/<id>.jsonl`) — so there is no
"just move this transcript" version of this feature. An ordinary `/chat` session's transcript lives at
a different cwd than `commanders/<id>/` or `bots/`, and nothing repoints one transcript's directory
after the fact.
So "carrying context" has to mean actually transplanting something into the new session, and which
something is the design question to settle before building, not after:
- **Replay the full transcript** into the new commander/bot's directory as its opening — complete, but
potentially large, and a commander/bot's brief is deliberately short (arm-on-first-message for a bot;
a lean setup conversation for a commander) — dumping a long unrelated history in front of that
may work against the brief's own point.
- **Summarize** what happened and seed the new session with the summary as its first message —
cheaper, but a summary is a lossy claim about a conversation, the same caveat this platform's own
email-recall design already states about summarizing versus retrieving.
- Some hybrid: summary up front, full transcript kept alongside as a file the new session can go read
if it needs the detail rather than carrying it in every future turn's context.
Related, not the same problem: `sub-agents/an-api-endpoint-for-spawning-an-agent-with-a` already
answered "how do you start a commander from code" (`POST /api/sub-agents/spawn` / commander creation) —
this item is specifically about carrying an EXISTING conversation's context across that boundary, which
neither existing endpoint does.