Files
openhuman/docs
7b457aa27d feat(agent): pure orchestrator pattern with per-skill delegation tools (#496)
* feat(agent): pure orchestrator pattern with per-skill delegation tools (#478)

Refactors the main agent from a direct tool-calling model to a pure
orchestrator that delegates all work through dynamically generated tools.

Architecture changes:
- Orchestrator only sees generated tools (notion, gmail, research,
  run_code, review_code, plan, spawn_subagent) — skill tools are
  architecturally unreachable from the main agent
- Each installed skill auto-generates a delegation tool at build time
  (SkillDelegationTool) that routes to skills_agent with the correct
  skill_filter
- Static archetype tools (research, run_code, etc.) delegate to their
  respective sub-agents
- visible_tool_specs filters the function-calling schema sent to the
  provider, enforcing the orchestrator boundary at the API level

Prompt changes:
- Rewrote AGENTS.md as a lean orchestrator prompt — no more routing
  tables or agent_id instructions
- Orchestrator skips TOOLS.md, MEMORY.md, HEARTBEAT.md (~6k tokens
  saved per turn) — subagents get tool specs from the registry
- Workspace .md files auto-sync via builtin-hash mechanism so prompt
  updates ship automatically to existing installs

Bug fixes:
- ModelSpec::Hint now resolves to {hint}-v1 (e.g. agentic-v1) instead
  of hint:agentic which the backend rejected
- validate_skill_filter now uses skill_id from the engine tuple instead
  of splitting on __ in the raw tool name (which always failed)
- Memory context forwarded to subagents via ParentExecutionContext

Observability:
- Added [agent] tagged logs for tool responses, agent state transitions,
  and delegation decisions throughout turn.rs

See docs/agent-prompt-architecture.excalidraw for the visual diagram.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: rustfmt orchestrator_tools.rs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: cargo fmt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address CodeRabbit review — dispatch guard, fork specs, decouple sync

- Enforce visible-tool allowlist at dispatch time (not just schema)
- Fork mode uses visible_tool_specs (not full registry)
- De-duplicate spawn_subagent when extending orchestrator tools
- Raw tool output moved to debug level, info level logs metadata only
- Decouple workspace file sync from prompt rendering so skipped files
  still get synced to disk

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:47:41 -07:00
..