mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-29 06:31:32 +00:00
perf(prompt): cache kanban worker guidance at session init
Salvages #24402 by @RyanRana. The KANBAN_GUIDANCE block (~835 tokens) is session-static — the dispatcher decides at spawn time whether the process is a kanban worker via the kanban_show tool's check_fn (gated on HERMES_KANBAN_TASK env var). Re-checking 'kanban_show' in valid_tool_names and re-loading the reference on every system-prompt rebuild (init + each context compression) is wasted work. Caches the resolved string on agent._kanban_worker_guidance once in agent_init and consumes it in system_prompt.build_system_prompt(), with a getattr fallback for code paths that bypass agent_init.
This commit is contained in:
parent
365da2d2df
commit
206f595f66
2 changed files with 18 additions and 4 deletions
|
|
@ -828,7 +828,6 @@ def init_agent(
|
|||
tool_names = sorted(agent.valid_tool_names)
|
||||
if not agent.quiet_mode:
|
||||
print(f"🛠️ Loaded {len(agent.tools)} tools: {', '.join(tool_names)}")
|
||||
|
||||
# Show filtering info if applied
|
||||
if enabled_toolsets:
|
||||
print(f" ✅ Enabled toolsets: {', '.join(enabled_toolsets)}")
|
||||
|
|
@ -836,7 +835,18 @@ def init_agent(
|
|||
print(f" ❌ Disabled toolsets: {', '.join(disabled_toolsets)}")
|
||||
elif not agent.quiet_mode:
|
||||
print("🛠️ No tools loaded (all tools filtered out or unavailable)")
|
||||
|
||||
|
||||
# Kanban worker/orchestrator lifecycle guidance is session-static:
|
||||
# the dispatcher decides at spawn time whether this process is a kanban
|
||||
# worker (kanban_show tool is present iff HERMES_KANBAN_TASK is set).
|
||||
# Resolving the ~835-token block once here avoids re-running the
|
||||
# membership test + reference on every system-prompt rebuild
|
||||
# (init + each context compression).
|
||||
from agent.prompt_builder import KANBAN_GUIDANCE
|
||||
agent._kanban_worker_guidance = (
|
||||
KANBAN_GUIDANCE if "kanban_show" in agent.valid_tool_names else ""
|
||||
)
|
||||
|
||||
# Check tool requirements
|
||||
if agent.tools and not agent.quiet_mode:
|
||||
requirements = _ra().check_toolset_requirements()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue