Phase 6 : configuration de l'agent fonctionnelle

Backend :
- agent_config.py : profil persisté (invite système, génération, outils actifs)
  avec valeurs par défaut et fusion robuste
- routes/config.py : GET/PUT /api/config
- db.py : table config clé/valeur (get/set JSON)
- agent.py : run_agent filtre les outils selon enabled_tools
- routes/chat.py : utilise l'invite système, les options de génération et les
  outils actifs issus de la config sauvegardée

Frontend :
- api/client.ts + store : getConfig/saveConfig, état config
- SettingsView : sliders interactifs (température, top-p, top-k, jetons max),
  toggles d'outils réels, éditeur d'invite système, bouton Enregistrer
- ChatPanel : la barre de contexte reflète température et outils actifs réels

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
This commit is contained in:
MichaelandClaude Opus 4.8 committed 2026-06-29 21:03:14 +00:00
1 parent b6bf4edf97
commit 2db6beea5c
11 files changed
+499 -206

No files matched your search

+23
View File
@@ -54,6 +54,10 @@ def init_db() -> None:
cols = {r["name"] for r in conn.execute("PRAGMA table_info(messages)")}
if "meta" not in cols:
conn.execute("ALTER TABLE messages ADD COLUMN meta TEXT")
# Table clé/valeur pour la configuration de l'agent.
conn.execute(
"CREATE TABLE IF NOT EXISTS config (key TEXT PRIMARY KEY, value TEXT)"
)
def _now() -> float:
@@ -160,3 +164,22 @@ def list_messages_for_model(sid: str) -> list[dict]:
{"role": m["role"], "content": m["content"]}
for m in list_messages(sid)
]
# ── Configuration (clé/valeur JSON) ──────────────────────────────────────
def get_config_value(key: str) -> dict | None:
with _LOCK, _connect() as conn:
row = conn.execute(
"SELECT value FROM config WHERE key = ?", (key,)
).fetchone()
return json.loads(row["value"]) if row else None
def set_config_value(key: str, value: dict) -> None:
payload = json.dumps(value, ensure_ascii=False)
with _LOCK, _connect() as conn:
conn.execute(
"INSERT INTO config (key, value) VALUES (?, ?)"
" ON CONFLICT(key) DO UPDATE SET value = excluded.value",
(key, payload),
)