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.
3.4 KiB
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— argosmemory_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
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.