Update plan
This commit is contained in:
parent
1c1b9c1510
commit
1f876a00c8
19
plan/done/menubar.md
Normal file
19
plan/done/menubar.md
Normal file
@ -0,0 +1,19 @@
|
||||
Ganti shortcut key dan buatkan menubar untuk fitur TUI berikut:
|
||||
- Session > New Session : Ctrl+N
|
||||
- Session > Open Session : Ctrl+O
|
||||
- Session > Rename Session : F2
|
||||
- Session > Exit : Ctrl+C
|
||||
- Agent > Send Prompt : Ctrl+Enter (Hanya disaat ready)
|
||||
- Agent > Cancel Inference : Esc (Hanya disaat progess)
|
||||
- Model > Select Model : F4
|
||||
- Workspace > Change Workspace : F6
|
||||
|
||||
F10 untuk fokus/aktifkan menu bar.
|
||||
|
||||
Mnemonic:
|
||||
Alt+S → [S]ession
|
||||
Alt+A → [A]gent
|
||||
Alt+M → [M]odel
|
||||
Alt+W → [W]orkspace
|
||||
|
||||
Pastikan kode-nya modular, sehingga mudah di baca dan maintenance oleh developer.
|
||||
44
plan/moop.md
Normal file
44
plan/moop.md
Normal file
@ -0,0 +1,44 @@
|
||||
Fitur moop (Model Option) untuk TUI: Pindahkan penyimpanan model dari config yaml ke database sqlite.
|
||||
db_path default "~/.config/hendrik/moop.sqlite3" dan bisa di ubah di yaml. Jika db moop tidak ada di db_path, maka create baru.
|
||||
referensi query ada di `plan/moop.sql` dan referensi diagram plantuml ada di `plan/moop.puml`.
|
||||
List model yang sudah ada di default-config.yaml kalau mau di bersihin silahkan aja. Default list model-nya kosong aja.
|
||||
Tipe-nya untuk saat ini baru `llm`, `embedding`, `imagegen`, `imagevision` aja.
|
||||
|
||||
Apa aja yang di migrasikan dari config yaml ke sqlite:
|
||||
- LLM
|
||||
- Image Vision
|
||||
- Image Generate
|
||||
- RAG (Embedding)
|
||||
|
||||
Use case:
|
||||
- Bisa setting Providers, Model name, dan API Keys yang di bundle dalam 1 set
|
||||
- Bisa milih default model set pada tipe tertentu. sekarang baru ada `llm`, `embedding`, `imagegen`, `imagevision` aja. Kalau default dari type tersebut kosong, masukin set+type pertama kali artinya otomatis default, supaya ga kosong.
|
||||
- Nampilin opsi model set yang ingin dipakai untuk switch model yang dipakai AI Agent
|
||||
|
||||
Tujuan utama:
|
||||
- Bisa switch alternative API Key, Provider secara otomatis kalau gagal connect (bergantung pada priority) berdasarkan model set yang di gunakan.
|
||||
|
||||
Kapan itu switch?
|
||||
- Koneksi gagal
|
||||
- timeout
|
||||
- Server error
|
||||
- rate limit
|
||||
- auth gagal
|
||||
- 404
|
||||
|
||||
Apa prioritas auto switch-nya di model set:
|
||||
- Key. setelah semua key gabisa baru deh:
|
||||
- Model provider-nya
|
||||
|
||||
Aturan-aturan lainnya:
|
||||
- Pengelolaan setting add edit delete untuk Providers dan Opsi model set-nya ada di TUI
|
||||
- Service (XMPP, dan Telegram) pakai Default yang di sqlite itu.
|
||||
- 1 set bisa multi-type (apalagi jika model-nya memungkinkan dan support banyak type)
|
||||
- jika error 401/403 maka coba key berikutnya dulu (rotasi key)
|
||||
- jika error lain (koneksi/timeout/5xx/429/404) maka langsung pindah ke model/provider berikutnya. skip sisa key, biar tidak timeout berulang di api yang sama.
|
||||
|
||||
Karena imagevision bisa termasuk di llm umum atau bisa tidak termasuk di llm umum, ekspektasi alur untuk imagevision sebagai berikut:
|
||||
- pas panggil tools vision (imagevision model)
|
||||
- result dapat dari tools tanpa fallback dari model imagevision
|
||||
- switch ke model llm umum
|
||||
- llm memberi fallback
|
||||
73
plan/moop.sql
Normal file
73
plan/moop.sql
Normal file
@ -0,0 +1,73 @@
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- OPTION
|
||||
|
||||
CREATE TABLE moop_model_set (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
name TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE moop_model_type (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
type TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE moop_model_set_type (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
"set" BLOB NOT NULL,
|
||||
type BLOB NOT NULL,
|
||||
FOREIGN KEY ("set") REFERENCES moop_model_set(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
FOREIGN KEY (type) REFERENCES moop_model_type(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
UNIQUE ("set", type) -- Prevent duplicate entries
|
||||
);
|
||||
|
||||
CREATE TABLE moop_model_type_default (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
type BLOB NOT NULL UNIQUE,
|
||||
set_type BLOB NOT NULL UNIQUE,
|
||||
FOREIGN KEY (type) REFERENCES moop_model_type(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
FOREIGN KEY (set_type) REFERENCES moop_model_set_type(id) ON UPDATE CASCADE ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- PROVIDER
|
||||
|
||||
CREATE TABLE moop_api (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
baseurl TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE moop_key (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
key TEXT NOT NULL,
|
||||
priority INTEGER NULL,
|
||||
api BLOB NOT NULL,
|
||||
FOREIGN KEY (api) REFERENCES moop_api(id) ON UPDATE CASCADE ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE moop_model (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
api BLOB NOT NULL,
|
||||
"set" BLOB NOT NULL,
|
||||
model TEXT NOT NULL,
|
||||
priority INTEGER NULL,
|
||||
FOREIGN KEY (api) REFERENCES moop_api(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
FOREIGN KEY ("set") REFERENCES moop_model_set(id) ON UPDATE CASCADE ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- INDEXES
|
||||
|
||||
CREATE INDEX idx_moop_key_api ON moop_key(api);
|
||||
CREATE INDEX idx_moop_key_api_priority ON moop_key(api, priority);
|
||||
|
||||
CREATE INDEX idx_moop_model_api ON moop_model(api);
|
||||
CREATE INDEX idx_moop_model_set ON moop_model("set");
|
||||
|
||||
CREATE INDEX idx_moop_model_api_priority ON moop_model(api, priority);
|
||||
|
||||
CREATE INDEX idx_moop_model_set_type_set ON moop_model_set_type("set");
|
||||
CREATE INDEX idx_moop_model_set_type_type ON moop_model_set_type(type);
|
||||
|
||||
COMMIT;
|
||||
@ -1,105 +0,0 @@
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- OPTION
|
||||
|
||||
CREATE TABLE moop_model_set (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
name TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE moop_model_type (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
type TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE moop_model_set_type (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
"set" BLOB NOT NULL,
|
||||
type BLOB NOT NULL,
|
||||
FOREIGN KEY ("set")
|
||||
REFERENCES moop_model_set(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
FOREIGN KEY (type)
|
||||
REFERENCES moop_model_type(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
UNIQUE ("set", type),
|
||||
UNIQUE (id, type)
|
||||
);
|
||||
|
||||
CREATE TABLE moop_model_type_default (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
type BLOB NOT NULL UNIQUE,
|
||||
set_type BLOB NOT NULL UNIQUE,
|
||||
FOREIGN KEY (type)
|
||||
REFERENCES moop_model_type(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
FOREIGN KEY (set_type, type)
|
||||
REFERENCES moop_model_set_type(id, type)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- PROVIDER
|
||||
|
||||
CREATE TABLE moop_api (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
baseurl TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE moop_key (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
key TEXT NOT NULL,
|
||||
priority INTEGER NULL,
|
||||
api BLOB NOT NULL,
|
||||
FOREIGN KEY (api)
|
||||
REFERENCES moop_api(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE moop_model (
|
||||
id BLOB PRIMARY KEY NOT NULL,
|
||||
api BLOB NOT NULL,
|
||||
"set" BLOB NOT NULL,
|
||||
model TEXT NOT NULL,
|
||||
priority INTEGER NULL,
|
||||
FOREIGN KEY (api)
|
||||
REFERENCES moop_api(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
FOREIGN KEY ("set")
|
||||
REFERENCES moop_model_set(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- INDEXES
|
||||
|
||||
CREATE INDEX idx_moop_key_api
|
||||
ON moop_key(api);
|
||||
|
||||
CREATE INDEX idx_moop_key_api_priority
|
||||
ON moop_key(api, priority);
|
||||
|
||||
CREATE INDEX idx_moop_model_api
|
||||
ON moop_model(api);
|
||||
|
||||
CREATE INDEX idx_moop_model_set
|
||||
ON moop_model("set");
|
||||
|
||||
CREATE INDEX idx_moop_model_api_priority
|
||||
ON moop_model(api, priority);
|
||||
|
||||
CREATE INDEX idx_moop_model_set_type_set
|
||||
ON moop_model_set_type("set");
|
||||
|
||||
CREATE INDEX idx_moop_model_set_type_type
|
||||
ON moop_model_set_type(type);
|
||||
|
||||
COMMIT;
|
||||
Loading…
Reference in New Issue
Block a user