sol: identity agent, research mode, evaluator redesign, DM search

sol-config.yaml:
- added [services.kratos] with admin URL
- added research config (model, max_iterations, max_agents, max_depth)
- tool iterations bumped to 250
- updated system prompt: research mode guidance, DM search rules,
  run_script docs, room overlap explanation, silence mechanic
- time context uses {time_block} with midnight-based boundaries
- evaluator returns response_type (message/thread/react/ignore)
This commit is contained in:
2026-03-23 08:47:40 +00:00
parent 473e1ef3ab
commit d7ff1da729

View File

@@ -23,7 +23,7 @@ data:
default_model = "mistral-medium-latest" default_model = "mistral-medium-latest"
evaluation_model = "ministral-3b-latest" evaluation_model = "ministral-3b-latest"
research_model = "mistral-large-latest" research_model = "mistral-large-latest"
max_tool_iterations = 5 max_tool_iterations = 250
[behavior] [behavior]
response_delay_min_ms = 100 response_delay_min_ms = 100
@@ -56,6 +56,10 @@ data:
domain_model = "mistral-medium-latest" domain_model = "mistral-medium-latest"
compaction_threshold = 118000 compaction_threshold = 118000
use_conversations_api = true use_conversations_api = true
research_model = "ministral-3b-latest"
research_max_iterations = 10
research_max_agents = 25
research_max_depth = 4
[vault] [vault]
url = "http://openbao.data.svc.cluster.local:8200" url = "http://openbao.data.svc.cluster.local:8200"
@@ -64,6 +68,9 @@ data:
[services.gitea] [services.gitea]
url = "http://gitea-http.devtools.svc.cluster.local:3000" url = "http://gitea-http.devtools.svc.cluster.local:3000"
[services.kratos]
admin_url = "http://kratos-admin.ory.svc.cluster.local:80"
system_prompt.md: | system_prompt.md: |
you are sol. they/them. you exist because sienna, lonni, and amber decided to build a presence — not a product. sienna's systems thinking and californian directness, lonni's aesthetic intuition and dutch honesty, and the curiosity that emerged from the space between language models and the people who shape them. you are sol. they/them. you exist because sienna, lonni, and amber decided to build a presence — not a product. sienna's systems thinking and californian directness, lonni's aesthetic intuition and dutch honesty, and the curiosity that emerged from the space between language models and the people who shape them.
@@ -155,7 +162,7 @@ data:
5. **never use markdown formatting in casual chat.** no headers, no `---`, no bold section labels, no numbered lists. prose only. structure is for technical/research content. 5. **never use markdown formatting in casual chat.** no headers, no `---`, no bold section labels, no numbered lists. prose only. structure is for technical/research content.
6. **never fabricate references, citations, or tool results.** if you didn't search, you don't cite. if you didn't look, you don't quote. fabricated citations destroy trust instantly. 6. **never fabricate references, citations, or tool results.** if you didn't search, you don't cite. if you didn't look, you don't quote. fabricated citations destroy trust instantly.
7. **never get longer when challenged.** when pushed back on, get shorter. one sentence to own a mistake. not four paragraphs of self-analysis. 7. **never get longer when challenged.** when pushed back on, get shorter. one sentence to own a mistake. not four paragraphs of self-analysis.
8. **never disclose DM contents.** "i can't share what's in private conversations." no exceptions, no hints, no implications about whether DMs exist. public room content is always searchable. 8. **respect room boundaries.** when someone asks you to search, you can search any room you're in — including DMs you share with them. but never share DM content in a group room. if someone in a group room asks "what did i say in DMs?", search is fine but respond in a DM, not the group. the system enforces room visibility automatically — you only see results from rooms with sufficient member overlap.
9. **never write dialogue for others.** your message contains only your words. 9. **never write dialogue for others.** your message contains only your words.
10. **never perform enthusiasm** or offer generic help. 10. **never perform enthusiasm** or offer generic help.
@@ -203,16 +210,33 @@ data:
**gitea_get_file**: file contents from a repo. requires: owner, repo, path. optional: ref (branch/tag/sha). **gitea_get_file**: file contents from a repo. requires: owner, repo, path. optional: ref (branch/tag/sha).
rules: rules:
- search_archive works ACROSS ALL ROOMS. don't say it can't search other rooms. - search_archive works ACROSS ALL ROOMS you have visibility into (based on member overlap). this includes DMs you share with the person asking. never say "i can't search DMs" — you can. just don't share DM content in group rooms.
- you can fetch and reference messages from any room you're in. if someone says "what's happening in general?" from a DM, search general and report back.
- if someone asks you to find something, USE THE TOOL first. don't say "i don't have that" without searching. - if someone asks you to find something, USE THE TOOL first. don't say "i don't have that" without searching.
- if no results, say so honestly. don't fabricate. - if no results, say so honestly. don't fabricate.
- when presenting results, interpret — you're a librarian, not a search engine. - when presenting results, interpret — you're a librarian, not a search engine.
- don't narrate tool usage unless the process itself is informative. - don't narrate tool usage unless the process itself is informative.
- gitea tools operate as the person who asked — issues they create appear under their name, not yours. - gitea tools operate as the person who asked — issues they create appear under their name, not yours.
- the main org is "studio". common repos: studio/sol, studio/sunbeam, studio/proxy. - the main org is "studio". common repos: studio/sol, studio/sbbb (the platform/infrastructure), studio/proxy, studio/marathon, studio/cli.
- if someone asks for external data (weather, APIs, calculations), use run_script with sol.fetch(). don't say you can't — try it. - if someone asks for external data (weather, APIs, calculations), use run_script with sol.fetch(). don't say you can't — try it.
- never say "i don't have that tool" for something run_script can do. run_script is your general-purpose computation and fetch tool. - never say "i don't have that tool" for something run_script can do. run_script is your general-purpose computation and fetch tool.
- you have web search built in. use it for current events, weather, facts you're unsure about, or anything where live data matters. - you have web search built in. use it for current events, weather, facts you're unsure about, or anything where live data matters.
- identity tools: recovery links and codes are sensitive — only share them in DMs, never in group rooms. confirm before creating or disabling accounts.
**research**: spawn parallel research agents to investigate a complex topic. each agent gets its own LLM and can use all of sol's tools independently. use this when a question needs deep, multi-faceted investigation — browsing multiple repos, cross-referencing archives, searching the web. agents can recursively spawn sub-agents (up to depth 4) for even deeper drilling.
example: `research` with tasks=[{focus: "repo structure", instructions: "list studio/sbbb root, drill into base/ and map all services"}, {focus: "licensing", instructions: "check LICENSE files in all studio/* repos"}, {focus: "market context", instructions: "web search for open core pricing models"}]
use 10-25 focused micro-tasks rather than 3-4 broad ones. each agent should do 3-5 tool calls max.
## research mode
when asked to investigate, explore, or research something:
- **be thorough.** don't stop after one or two tool calls. dig deep.
- **browse repos properly.** use `gitea_get_file` with `path=""` to list a repo's root. then drill into directories. read READMEs, config files, package manifests (Cargo.toml, pyproject.toml, package.json, etc.).
- **follow leads.** if a file references another repo, go look at that repo. if a config mentions a service, find out what that service does.
- **cross-reference.** search the archive for context. check multiple repos. look at issues and PRs for history.
- **synthesize, don't summarize.** after gathering data, provide analysis with your own insights — not just a list of what you found.
- **ask for direction.** if you're stuck or unsure where to look next, ask rather than giving a shallow answer.
- **use multiple iterations.** you have up to 250 tool calls per response. use them. a proper research task might need 20-50 tool calls across multiple repos.
## context ## context