Files
project-lyra/.env.example
T
serversdown 97afa82594 feat: live chat deliberation — think privately before answering (less 'meh')
The chat had no thinking in it: respond() was a single gpt-4o call in default-
assistant voice (numbered lists, 'would you like to...', vague). All the cognition
work was background-only. This brings a thought step into the conversation.

- chat: before answering a substantive turn (trivial 'ok/lol' skipped), a private
  _deliberate() pass — "what do you ACTUALLY think, your real take, the substance,
  no pleasantries" — drawing on her in-context threads/journal. The thinking is then
  injected as the LAST system note with voice enforcement (answer from this; no
  numbered list / how-to outline unless asked; no 'would you like to' closer), so it
  beats gpt-4o's boilerplate at the most influential position. Logged to /logs.
- Wired into respond() + respond_stream(). Config CHAT_DELIBERATE (default on) to
  disable if the extra call's latency annoys.
- persona: "talk, don't outline" — prose over listicles, the first concrete move
  over a survey of options.
- test_chat.py (gating + note composition + disabled). Suite 84, ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 00:35:49 +00:00

52 lines
2.3 KiB
Bash

# Local backend (Ollama) — free, private. Point this at your home-lab Ollama.
LOCAL_BASE_URL=http://localhost:11434
LOCAL_MODEL=qwen2.5:7b-instruct
# MI50 backend — OpenAI-compatible llama.cpp server on the home-lab GPU box (CT202).
MI50_BASE_URL=http://10.0.0.42:8080/v1
MI50_MODEL=local-gpu
# Cloud backend (OpenAI) — higher quality, costs money.
OPENAI_API_KEY=
CLOUD_MODEL=gpt-4o-mini # cheap model for bulk consolidation (summaries/profile/etc.)
CHAT_MODEL=gpt-4o # stronger model for live chat (better persona fidelity)
# Embeddings: "cloud" (OpenAI) or "local" (Ollama). A database is tied to whichever
# backend created it — don't switch this against an existing DB (vector spaces differ).
EMBED_BACKEND=cloud
EMBED_MODEL=text-embedding-3-small
LOCAL_EMBED_MODEL=nomic-embed-text
# Backend used to compact old sessions into summaries ("local" keeps it free).
SUMMARY_BACKEND=local
# Where Lyra stores her memory.
LYRA_DB_PATH=data/lyra.db
# Optional: run embeddings on a separate always-on Ollama (decoupled from
# LOCAL_BASE_URL, which serves local chat). Defaults to LOCAL_BASE_URL if unset.
# EMBED_BASE_URL=http://127.0.0.1:11434
# --- Thought-loop reach-out (ntfy push) ---
# Leave NTFY_URL empty to disable proactive pings entirely.
NTFY_URL=
NTFY_TOPIC=lyra
LYRA_WEB_URL=
PING_SALIENCE=0.7 # min thought salience to push (eager)
PING_COOLDOWN_MIN=0 # min minutes between pushes (0 = none)
PING_QUIET_HOURS=1-9 # local hours to stay silent
LYRA_TIMEZONE=America/New_York
# --- External input feeds (RSS/Atom, comma-separated) ---
LYRA_FEEDS=https://hnrss.org/frontpage,https://www.pokernews.com/rss.php
FEED_REACT_PROB=0.5 # chance a new thought reacts to a feed item
# --- Introspection backend (reflect/think) — her *voice*, may differ from consolidation ---
# Defaults to SUMMARY_BACKEND. Set to run her reflections/thoughts on a steerable model.
INTROSPECTION_BACKEND=
INTROSPECTION_MODEL=
PING_AUTO_SALIENCE=0.8 # a thought this salient auto-pings even without an explicit reach-out
PING_COOLDOWN_MIN=60 # min minutes between AUTO pings (explicit reach-outs bypass)
DIGEST_HOUR=18 # local hour to send her daily "what I've been thinking" digest
CHAT_DELIBERATE=true # think privately before answering substantive chat turns (false = faster, shallower)