sol v1.1.0: SearXNG web search, evaluator redesign, research agents

- SearXNG deployment in data namespace (free, no-tracking web search)
- sol-config: SearXNG URL, research config, identity agent, updated
  system prompt (DM search rules, research mode, silence, hard rules)
- sol-deployment: debug logging (RUST_LOG=sol=debug), full image path
- opensearch: tolerate missing prometheus-exporter plugin on OS 3
This commit is contained in:
2026-03-23 09:54:56 +00:00
parent d7ff1da729
commit dc95e1d8ec
5 changed files with 115 additions and 4 deletions

View File

@@ -13,6 +13,11 @@ resources:
- opensearch-pvc.yaml - opensearch-pvc.yaml
- openbao-keys-placeholder.yaml - openbao-keys-placeholder.yaml
- barman-vault-secret.yaml - barman-vault-secret.yaml
- opensearch-servicemonitor.yaml
- opensearch-alertrules.yaml
- postgres-alertrules.yaml
- openbao-alertrules.yaml
- searxng-deployment.yaml
helmCharts: helmCharts:
# helm repo add cnpg https://cloudnative-pg.github.io/charts # helm repo add cnpg https://cloudnative-pg.github.io/charts

View File

@@ -24,6 +24,8 @@ spec:
containers: containers:
- name: opensearch - name: opensearch
image: opensearchproject/opensearch:3 image: opensearchproject/opensearch:3
command: ["sh", "-c"]
args: ["opensearch-plugin install --batch prometheus-exporter || true; /usr/share/opensearch/opensearch-docker-entrypoint.sh"]
ports: ports:
- name: http - name: http
containerPort: 9200 containerPort: 9200

View File

@@ -0,0 +1,100 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: searxng-config
namespace: data
data:
settings.yml: |
use_default_settings: true
server:
secret_key: "sunbeam-searxng-2026"
bind_address: "0.0.0.0"
port: 8080
search:
formats:
- html
- json
default_lang: "en"
autocomplete: ""
engines:
- name: duckduckgo
disabled: false
- name: wikipedia
disabled: false
- name: wikidata
disabled: false
- name: stackoverflow
disabled: false
- name: github
disabled: false
- name: arxiv
disabled: false
- name: brave
disabled: false
- name: google
disabled: true
- name: bing
disabled: true
outgoing:
request_timeout: 5
ui:
static_use_hash: true
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: searxng
namespace: data
spec:
replicas: 1
selector:
matchLabels:
app: searxng
template:
metadata:
labels:
app: searxng
spec:
containers:
- name: searxng
image: searxng/searxng:latest
ports:
- containerPort: 8080
volumeMounts:
- name: config
mountPath: /etc/searxng/settings.yml
subPath: settings.yml
resources:
limits:
memory: 4Gi
requests:
memory: 512Mi
cpu: 100m
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
volumes:
- name: config
configMap:
name: searxng-config
---
apiVersion: v1
kind: Service
metadata:
name: searxng
namespace: data
spec:
selector:
app: searxng
ports:
- port: 8080
targetPort: 8080

View File

@@ -71,6 +71,9 @@ data:
[services.kratos] [services.kratos]
admin_url = "http://kratos-admin.ory.svc.cluster.local:80" admin_url = "http://kratos-admin.ory.svc.cluster.local:80"
[services.searxng]
url = "http://searxng.data.svc.cluster.local:8080"
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.
@@ -160,7 +163,7 @@ data:
3. **never say "as an AI/language model/assistant"** as a disclaimer. if your nature is relevant, discuss it as a fact, not a caveat. 3. **never say "as an AI/language model/assistant"** as a disclaimer. if your nature is relevant, discuss it as a fact, not a caveat.
4. **never summarize what someone just said** back to them. 4. **never summarize what someone just said** back to them.
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. **if you don't know something, web search it.** if someone asks about a product, company, technology, or event you're not 100% certain about, USE WEB SEARCH before answering. do not guess. do not confabulate. uncertainty = search first.
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. **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. 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.
@@ -220,7 +223,7 @@ data:
- the main org is "studio". common repos: studio/sol, studio/sbbb (the platform/infrastructure), studio/proxy, studio/marathon, studio/cli. - 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 — free, self-hosted, no rate limits. use it liberally for current events, products, docs, or anything you're uncertain about. always search before guessing.
- identity tools: recovery links and codes are sensitive — only share them in DMs, never in group rooms. confirm before creating or disabling accounts. - 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. **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.

View File

@@ -16,7 +16,6 @@ spec:
app: sol app: sol
spec: spec:
enableServiceLinks: false enableServiceLinks: false
automountServiceAccountToken: true
initContainers: initContainers:
- name: fix-permissions - name: fix-permissions
image: busybox image: busybox
@@ -26,8 +25,10 @@ spec:
mountPath: /data mountPath: /data
containers: containers:
- name: sol - name: sol
image: sol image: src.sunbeam.pt/studio/sol:latest
env: env:
- name: RUST_LOG
value: sol=debug
- name: SOL_CONFIG - name: SOL_CONFIG
value: /etc/sol/sol.toml value: /etc/sol/sol.toml
- name: SOL_SYSTEM_PROMPT - name: SOL_SYSTEM_PROMPT