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

+12 -2
View File
@@ -14,8 +14,13 @@ export function ChatPanel() {
streamTools,
sendMessage,
currentSessionId,
config,
} = useStore();
const activeTools = config
? Object.values(config.tools).filter(Boolean).length
: 0;
const [draft, setDraft] = useState("");
const scrollRef = useRef<HTMLDivElement>(null);
@@ -45,10 +50,15 @@ export function ChatPanel() {
<div className="flex h-[42px] flex-none items-center gap-2 border-b border-line-soft px-[18px]">
<Chip>Invite système</Chip>
<Chip>
<span className="h-1.5 w-1.5 rounded-full bg-ok" />3 outils actifs
<span className="h-1.5 w-1.5 rounded-full bg-ok" />
{activeTools} outil{activeTools > 1 ? "s" : ""} actif
{activeTools > 1 ? "s" : ""}
</Chip>
<Chip>
Température <b className="font-semibold text-[#e7ddcd]">0.7</b>
Température{" "}
<b className="font-semibold text-[#e7ddcd]">
{config ? config.temperature.toFixed(2) : "—"}
</b>
</Chip>
<div className="flex-1" />
<span className="font-mono text-[11px] text-muted-4">