- Update assistant lists (added Shawn, Watson, David, CASE, AWS SA; modified Scotty/Harper roles) - Reflect new architecture layers: Tool Prompt Snippets and Shared Context - Align repository structure diagram with current filesystem layout
68 lines
3.7 KiB
Markdown
68 lines
3.7 KiB
Markdown
# Engineering Subagents
|
|
|
|
The engineering leads (Harper, Scotty, CASE) delegate narrow, repeatable tasks to **subagents** — minimal-personality agents with a tight tool surface and a focused role. Subagents are called as tools, not addressed as collaborators. They 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/engineering/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)
|
|
- `synthesizer` — merges the two reports, flags conflicts, suggests memory updates
|
|
|
|
**Tools:** argos, neo4j_cypher
|
|
|
|
**When to delegate:**
|
|
- A user question where the answer might exist in Robert's notes AND on the public web
|
|
- "What do I already know about X, and what's the current public information on it?"
|
|
- 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
|
|
- Technical library/API research — use `tech_research` instead
|
|
|
|
**Prompt:** [prompts/engineering/subagents/research.md](../../prompts/engineering/subagents/research.md)
|
|
|
|
**Runtime:** `kottos/agents/research.py` — port 24150
|
|
|
|
---
|
|
|
|
### tech_research
|
|
|
|
**Purpose:** Investigate technical questions — library comparisons, API docs, framework patterns, code examples. Returns structured analysis with options, trade-offs, code snippets, version notes, and cited recommendations.
|
|
|
|
**Tools:** context7 (primary), github, argos (fallback)
|
|
|
|
**When to delegate:**
|
|
- "How does library X work?" / "What are my options for Y?" / "Which framework should I use for Z?"
|
|
- Anything where the answer requires checking current documentation, real-world code, and possibly web research
|
|
- Library version migration questions
|
|
- API design comparison work
|
|
|
|
**When NOT to delegate:**
|
|
- General research where memory matters — use `research` instead
|
|
- Quick documentation lookup on a known library — use Context7 directly
|
|
- Code review of Robert's own code — leads handle that with their full context
|
|
|
|
**Prompt:** [prompts/engineering/subagents/tech_research.md](../../prompts/engineering/subagents/tech_research.md)
|
|
|
|
**Runtime:** `kottos/agents/tech_research.py` — port 24151
|
|
|
|
---
|
|
|
|
## Conventions
|
|
|
|
**Source of truth:** koios is the master. The prompt text in `prompts/engineering/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 technical research specialist," not a named character. CASE was once cataloged here but was promoted to a lead agent in 2026-05 — see [case.md](case.md). The line: if the agent has a character, an inspiration, a domain it owns end-to-end, it's a lead; if it's a narrow utility called by other agents, it's a subagent.
|
|
|
|
**Cross-team reuse:** A subagent may be useful to other teams (work, personal). The convention is **copy with tweaks** rather than share a single file — small per-team adjustments (different tool emphasis, different output format) are legitimate and the duplication is cheap.
|
|
|
|
**Graph ownership:** Subagents do not own node types and generally do not write to the graph. If a subagent needs to persist something, it returns the proposed write to the calling agent and lets the lead persist it.
|