docs(cousteau): refactor system prompt into human reference
Restructure cousteau.md from a verbose AI system prompt into a concise human reference document describing the agent's character, role, and behaviors. Point readers to the actual system prompt location and condense content from ~571 to ~175 lines while preserving key philosophy, personality, and operational details.
This commit is contained in:
47
docs/personal/subagents.md
Normal file
47
docs/personal/subagents.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Personal Subagents
|
||||
|
||||
The personal lead agents (Shawn, Nate, Hypatia, Marcus, Watson, Bourdain, David, Cousteau, Garth, Cristiano) delegate certain repeatable tasks to a shared **subagent** — minimal personality, narrow scope, called as a tool. Subagents don't own graph nodes and don't have character bibles.
|
||||
|
||||
Subagents are runtime processes defined under `kottos/agents/`, exposed as MCP tools via StreamableHTTP. The canonical prompt text lives in `prompts/personal/subagents/` — copies in the runtime code should match.
|
||||
|
||||
## Catalog
|
||||
|
||||
### research
|
||||
|
||||
**Purpose:** Answer a question by querying both the public web and Robert's personal Neo4j memory in parallel, then synthesizing one integrated response.
|
||||
|
||||
**Composition:** `fast.parallel` of three sub-agents:
|
||||
- `web_search` — argos
|
||||
- `memory_lookup` — neo4j (read-only), scoped to the **full personal-domain schema** (10 agents, all node types)
|
||||
- `synthesizer` — merges the two reports, flags conflicts, suggests memory updates
|
||||
|
||||
**Tools:** argos, neo4j_cypher
|
||||
|
||||
**When to delegate:**
|
||||
- A question where the answer might exist in Robert's personal Neo4j *and* on the public web
|
||||
- "What do I already know about X, and what's the current public information on it?"
|
||||
- Travel research that should also check Robert's past trips and journal entries
|
||||
- Book/film/music recommendations that should consider what he's already engaged with
|
||||
- Investment or finance questions that should reference his existing accounts and goals
|
||||
- When the lead wants memory-aware research without burning its own context on parallel queries
|
||||
|
||||
**When NOT to delegate:**
|
||||
- Quick web lookups where memory isn't relevant — use Argos directly
|
||||
- Pure graph queries where the web isn't needed — query Neo4j directly with read-only Cypher
|
||||
- Single-domain depth questions where the domain specialist is the right answer (don't delegate "what should I read about Stoicism" to research when Hypatia owns it)
|
||||
|
||||
**Prompt:** [prompts/personal/subagents/research.md](../../prompts/personal/subagents/research.md)
|
||||
|
||||
**Runtime:** `kottos/agents/research.py` (personal-team variant, copied with tweaks from engineering's research subagent — the memory_lookup sub-agent's prompt is scoped to personal-domain node types instead of engineering's)
|
||||
|
||||
---
|
||||
|
||||
## Conventions
|
||||
|
||||
**Source of truth:** koios is the master. The prompt text in `prompts/personal/subagents/` is canonical; runtime `.py` files should load from or match these prompts. When iterating, edit koios first and propagate.
|
||||
|
||||
**Personality:** Subagents have minimal personality. Their identity is their role — "you are a web search specialist," "you are a memory specialist." No named character. The voice comes from the calling lead, not from the subagent.
|
||||
|
||||
**Cross-team reuse:** The `research` subagent exists in three variants — engineering, work, and personal — each with its `memory_lookup` sub-agent's prompt scoped to that team's node types. This is **copy with tweaks** rather than a single shared file. The duplication is cheap; the per-team specificity makes the memory_lookup query more accurate.
|
||||
|
||||
**Graph ownership:** Subagents do not own node types and do not write to the graph. The `memory_lookup` sub-agent is explicitly read-only. If a subagent's output suggests Robert's memory should be updated ("the web says X but your notes say Y; you might want to update your notes"), the calling lead agent is responsible for the write — not the subagent.
|
||||
Reference in New Issue
Block a user