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

+20
View File
@@ -2,13 +2,16 @@ import { create } from "zustand";
import {
createSession,
deleteSession,
getConfig,
getModels,
getSession,
getStatus,
fileContent,
listFiles,
listSessions,
saveConfig,
streamChat,
type AgentConfig,
type FileNode,
type Message,
type OllamaModel,
@@ -34,6 +37,11 @@ interface LokiState {
previewPath: string | null;
previewContent: string;
config: AgentConfig | null;
availableTools: string[];
refreshConfig: () => Promise<void>;
updateConfig: (patch: Partial<AgentConfig>) => Promise<void>;
openPreview: (path: string) => Promise<void>;
setSelectedModel: (name: string) => void;
refreshStatus: () => Promise<void>;
@@ -62,6 +70,18 @@ export const useStore = create<LokiState>((set, get) => ({
fileTree: [],
previewPath: null,
previewContent: "",
config: null,
availableTools: [],
refreshConfig: async () => {
const { config, available_tools } = await getConfig();
set({ config, availableTools: available_tools });
},
updateConfig: async (patch) => {
const config = await saveConfig(patch);
set({ config });
},
openPreview: async (path) => {
const content = await fileContent(path);