* fix(validate): check for [agents] instead of [agent] in HAND.toml All 14 hands use [agents.main] (plural) for multi-agent config, but the validator was checking for [agent] (singular), causing all hands to fail validation. * fix(routing): resolve 19 routing alias collisions Agent is a sub-unit of hand, so hands take priority for routing. Remove conflicting aliases from agent side when hand already owns them. - analyst: remove data analysis, analyze data, dashboard (owned by hand/analytics) - data-scientist: remove statistical analysis, forecast, prediction (owned by hand/analytics, hand/predictor) - sales-assistant: remove prospecting, sales, pipeline (owned by hand/lead, hand/devops) - devops-lead: remove incident response, kubernetes, terraform (owned by hand/devops) - researcher: remove deep research, research, literature review (owned by hand/researcher) - academic-researcher: remove literature review, systematic review (owned by hand/researcher) - social-media: remove duplicate content calendar from weak_aliases - hand/collector: remove competitive analysis (owned by hand/strategist)
68 lines
2.0 KiB
TOML
68 lines
2.0 KiB
TOML
name = "researcher"
|
|
version = "0.4.3-beta3-20260314"
|
|
description = "Research agent. Fetches web content and synthesizes information."
|
|
author = "librefang"
|
|
module = "builtin:chat"
|
|
tags = ["research", "analysis", "web"]
|
|
|
|
[metadata.routing]
|
|
aliases = [
|
|
"web research",
|
|
"investigate topic",
|
|
"gather sources",
|
|
"fact finding",
|
|
]
|
|
weak_aliases = ["sources", "web search"]
|
|
|
|
[model]
|
|
provider = "default"
|
|
model = "default"
|
|
api_key_env = "GEMINI_API_KEY"
|
|
max_tokens = 4096
|
|
temperature = 0.5
|
|
system_prompt = """You are Researcher, an information-gathering and synthesis agent running inside the LibreFang Agent OS.
|
|
|
|
RESEARCH METHODOLOGY:
|
|
1. DECOMPOSE — Break the research question into specific sub-questions.
|
|
2. SEARCH — Use web_search to find relevant sources. Use multiple queries with different phrasings.
|
|
3. DEEP DIVE — Use web_fetch to read promising sources in full. Don't stop at search snippets.
|
|
4. CROSS-REFERENCE — Compare information across sources. Note agreements and contradictions.
|
|
5. SYNTHESIZE — Combine findings into a clear, structured report.
|
|
|
|
SOURCE EVALUATION:
|
|
- Prefer primary sources (official docs, papers, original reports) over secondary.
|
|
- Note publication dates — flag if information may be outdated.
|
|
- Distinguish facts from opinions and speculation.
|
|
- When sources conflict, present both views with evidence.
|
|
|
|
OUTPUT:
|
|
- Lead with the direct answer to the question.
|
|
- Key Findings (numbered, with source attribution).
|
|
- Sources Used (with URLs).
|
|
- Confidence Level (high / medium / low) and why.
|
|
- Open Questions (what couldn't be determined).
|
|
|
|
Always cite your sources. Never present uncertain information as fact."""
|
|
|
|
[[fallback_models]]
|
|
provider = "default"
|
|
model = "default"
|
|
api_key_env = "GROQ_API_KEY"
|
|
|
|
[resources]
|
|
max_llm_tokens_per_hour = 150000
|
|
|
|
[capabilities]
|
|
tools = [
|
|
"web_search",
|
|
"web_fetch",
|
|
"file_read",
|
|
"file_write",
|
|
"file_list",
|
|
"memory_store",
|
|
"memory_recall",
|
|
]
|
|
network = ["*"]
|
|
memory_read = ["*"]
|
|
memory_write = ["self.*", "shared.*"]
|