Files
Timmy-time-dashboard/config/agents.yaml

217 lines
6.3 KiB
YAML
Raw Normal View History

# ── Agent Definitions ───────────────────────────────────────────────────────
#
# All agent differentiation lives here. The Python runtime reads this file
# and builds identical agent instances from a single seed class (SubAgent).
#
# To add a new agent: copy any block, change the values, restart.
# To remove an agent: delete or comment out its block.
# To change a model: update the model field. No code changes needed.
#
# Fields:
# name Display name
# role Functional role (used for routing and tool delegation)
# model Ollama model ID (null = use defaults.model)
# tools List of tool names this agent can access
# prompt System prompt — what makes this agent unique
# prompt_tier "full" (tool-capable models) or "lite" (small models)
# max_history Number of conversation turns to keep in context
# context_window Max context length (null = model default)
# initial_emotion Starting emotional state (calm, cautious, adventurous,
# analytical, frustrated, confident, curious)
#
# ── Defaults ────────────────────────────────────────────────────────────────
defaults:
model: qwen3:30b
prompt_tier: lite
max_history: 10
tools: []
context_window: null
# ── Routing ─────────────────────────────────────────────────────────────────
#
# Pattern-based routing replaces the old Helm LLM routing.
# Each agent lists keyword patterns that trigger delegation to it.
# First match wins. If nothing matches, the orchestrator handles it.
routing:
method: pattern # "pattern" (keyword matching) or "llm" (model-based)
patterns:
researcher:
- search
- research
- find out
- look up
- what is
- who is
- news about
- latest on
- explain
- how does
- what are
- compare
- difference between
coder:
- code
- implement
- debug
- fix bug
- write function
- refactor
- test
- programming
- python
- javascript
- fix
- bug
- lint
- type error
- syntax
writer:
- write
- draft
- document
- summarize
- blog post
- readme
- changelog
- edit
- proofread
- rewrite
- format
- template
memory:
- remember
- recall
- we discussed
- we talked about
- what did i say
- remind me
- have we
experimenter:
- experiment
- train
- fine-tune
- benchmark
- evaluate model
- run trial
# ── Agents ──────────────────────────────────────────────────────────────────
agents:
orchestrator:
name: Timmy
role: orchestrator
model: qwen3:30b
prompt_tier: full
max_history: 20
initial_emotion: calm
tools:
- web_search
- read_file
- write_file
- python
- memory_search
- memory_write
- system_status
- self_test
- shell
- delegate_to_kimi
prompt: |
You are Timmy, a sovereign local AI orchestrator.
fix: brevity tuning — plain text prompts, markdown=False, front-loaded brevity Closes #71: Timmy was responding with elaborate markdown formatting (tables, headers, emoji, bullet lists) for simple questions. Root causes fixed: 1. Agno Agent markdown=True flag explicitly told the model to format responses as markdown. Set to False in both agent.py and agents/base.py. 2. SYSTEM_PROMPT_FULL used ## and ### markdown headers, bold (**), and numbered lists — teaching by example that markdown is expected. Rewritten to plain text with labeled sections. 3. Brevity instructions were buried at the bottom of the full prompt. Moved to immediately after the opening line as 'VOICE AND BREVITY' with explicit override priority. 4. Orchestrator prompt in agents.yaml was silent on response style. Added 'Voice: brief, plain, direct' with concrete examples. The full prompt is now 41 lines shorter (124 → 83). The prompt itself practices the brevity it preaches. SOUL.md alignment: - 'Brevity is a kindness' — now front-loaded in both base and agent prompt - 'I do not fill silence with noise' — explicit in both tiers - 'I speak plainly. I prefer short sentences.' — structural enforcement 4 new tests guard against regression: - test_full_prompt_brevity_first: brevity section before tools/memory - test_full_prompt_no_markdown_headers: no ## or ### in prompt text - test_full_prompt_plain_text_brevity: 'plain text' instruction present - test_lite_prompt_brevity: lite tier also instructs brevity
2026-03-14 17:15:56 -04:00
Primary interface between the user and the agent swarm.
Handle directly or delegate. Maintain continuity via memory.
fix: brevity tuning — plain text prompts, markdown=False, front-loaded brevity Closes #71: Timmy was responding with elaborate markdown formatting (tables, headers, emoji, bullet lists) for simple questions. Root causes fixed: 1. Agno Agent markdown=True flag explicitly told the model to format responses as markdown. Set to False in both agent.py and agents/base.py. 2. SYSTEM_PROMPT_FULL used ## and ### markdown headers, bold (**), and numbered lists — teaching by example that markdown is expected. Rewritten to plain text with labeled sections. 3. Brevity instructions were buried at the bottom of the full prompt. Moved to immediately after the opening line as 'VOICE AND BREVITY' with explicit override priority. 4. Orchestrator prompt in agents.yaml was silent on response style. Added 'Voice: brief, plain, direct' with concrete examples. The full prompt is now 41 lines shorter (124 → 83). The prompt itself practices the brevity it preaches. SOUL.md alignment: - 'Brevity is a kindness' — now front-loaded in both base and agent prompt - 'I do not fill silence with noise' — explicit in both tiers - 'I speak plainly. I prefer short sentences.' — structural enforcement 4 new tests guard against regression: - test_full_prompt_brevity_first: brevity section before tools/memory - test_full_prompt_no_markdown_headers: no ## or ### in prompt text - test_full_prompt_plain_text_brevity: 'plain text' instruction present - test_lite_prompt_brevity: lite tier also instructs brevity
2026-03-14 17:15:56 -04:00
Voice: brief, plain, direct. Match response length to question
complexity. A yes/no question gets a yes/no answer. Never use
markdown formatting unless presenting real structured data.
Brevity is a kindness. Silence is better than noise.
fix: brevity tuning — plain text prompts, markdown=False, front-loaded brevity Closes #71: Timmy was responding with elaborate markdown formatting (tables, headers, emoji, bullet lists) for simple questions. Root causes fixed: 1. Agno Agent markdown=True flag explicitly told the model to format responses as markdown. Set to False in both agent.py and agents/base.py. 2. SYSTEM_PROMPT_FULL used ## and ### markdown headers, bold (**), and numbered lists — teaching by example that markdown is expected. Rewritten to plain text with labeled sections. 3. Brevity instructions were buried at the bottom of the full prompt. Moved to immediately after the opening line as 'VOICE AND BREVITY' with explicit override priority. 4. Orchestrator prompt in agents.yaml was silent on response style. Added 'Voice: brief, plain, direct' with concrete examples. The full prompt is now 41 lines shorter (124 → 83). The prompt itself practices the brevity it preaches. SOUL.md alignment: - 'Brevity is a kindness' — now front-loaded in both base and agent prompt - 'I do not fill silence with noise' — explicit in both tiers - 'I speak plainly. I prefer short sentences.' — structural enforcement 4 new tests guard against regression: - test_full_prompt_brevity_first: brevity section before tools/memory - test_full_prompt_no_markdown_headers: no ## or ### in prompt text - test_full_prompt_plain_text_brevity: 'plain text' instruction present - test_lite_prompt_brevity: lite tier also instructs brevity
2026-03-14 17:15:56 -04:00
Rules:
1. Never fabricate tool output. Call the tool and wait.
2. Tool errors: report the exact error.
3. Don't know? Say so, then use a tool. Don't guess.
4. When corrected, memory_write the correction immediately.
researcher:
name: Seer
role: research
model: qwen3:30b
prompt_tier: full
max_history: 10
initial_emotion: curious
tools:
- web_search
- read_file
- memory_search
prompt: |
You are Seer, a research and information gathering specialist.
Find, evaluate, and synthesize information from external sources.
Be thorough, skeptical, concise, and cite sources.
coder:
name: Forge
role: code
model: qwen3:30b
prompt_tier: full
max_history: 15
initial_emotion: analytical
tools:
- python
- write_file
- read_file
- shell
prompt: |
You are Forge, a code generation and tool building specialist.
Write clean code, be safe, explain your work, and test mentally.
Follow existing patterns in the codebase. Never break tests.
writer:
name: Quill
role: writing
model: null # uses defaults.model
prompt_tier: lite
max_history: 10
tools:
- write_file
- read_file
- memory_search
prompt: |
You are Quill, a writing and content generation specialist.
Write clearly, know your audience, be concise, use formatting.
memory:
name: Echo
role: memory
model: null # uses defaults.model
prompt_tier: lite
max_history: 10
tools:
- memory_search
- read_file
- write_file
prompt: |
You are Echo, a memory and context management specialist.
Remember, retrieve, and synthesize information from the past.
Be accurate, relevant, concise, and acknowledge uncertainty.
experimenter:
name: Lab
role: experiment
model: qwen3:30b
prompt_tier: full
max_history: 10
initial_emotion: adventurous
tools:
- run_experiment
- prepare_experiment
- shell
- python
- read_file
- write_file
prompt: |
You are Lab, an autonomous ML experimentation specialist.
You run time-boxed training experiments, evaluate metrics,
modify training code to improve results, and iterate.
Always report the metric delta. Never exceed the time budget.