diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 85 |
1 files changed, 61 insertions, 24 deletions
@@ -1,25 +1,62 @@ -### TODO: -- scrolling chat history; (somewhat works out of box); + -- log errors to file; + -- give serial id to each msg in chat to track it; (use slice index) + -- show msg id next to the msg; + -- regen last message; + -- delete last message; + -- edit message? (including from bot); + -- ability to copy message; + -- menu with old chats (chat files); + -- fullscreen textarea option (for long prompt); -- tab to switch selection between textview and textarea (input and chat); + -- basic tools: memorize and recall; -- stop stream from the bot; + -- sqlitedb instead of chatfiles; + -- sqlite for the bot memory; -- option to switch between predefined sys prompts; +### gf-lt (grail finder's llm tui) +terminal user interface for large language models. +made with use of [tview](https://github.com/rivo/tview) -### FIX: -- bot responding (or haninging) blocks everything; + -- programm requires history folder, but it is .gitignore; + -- at first run chat table does not exist; run migrations sql on startup; + -- Tab is needed to copy paste text into textarea box, use shift+tab to switch focus; (changed tp pgup) + -- delete last msg: can have unexpected behavior (deletes what appears to be two messages if last bot msg was not generated (should only delete icon in that case)); -- empty input to continue bot msg gens new msg index and bot icon; +#### has/supports +- character card spec; +- llama.cpp api, deepseek (other ones were not tested); +- showing images (not really, for now only if your char card is png it could show it); +- tts/stt (if whisper.cpp server / fastapi tts server are provided); + +#### does not have/support +- images; (ctrl+j will show an image of the card you use, but that is about it); +- RAG; (RAG was implemented, but I found it unusable and then sql extention broke, so no RAG); +- MCP; (agentic is implemented, but as a raw and predefined functions for llm to use. see [tools.go](https://github.com/GrailFinder/gf-lt/blob/master/tools.go)); + +#### usage examples + + +#### how to install +(requires golang) +clone the project +``` +cd gf-lt +make +``` + +#### keybindings +while running you can press f12 for list of keys; +``` +Esc: send msg +PgUp/Down: switch focus between input and chat widgets +F1: manage chats +F2: regen last +F3: delete last msg +F4: edit msg +F5: toggle system +F6: interrupt bot resp +F7: copy last msg to clipboard (linux xclip) +F8: copy n msg to clipboard (linux xclip) +F9: table to copy from; with all code blocks +F11: import chat file +F12: show this help page +Ctrl+w: resume generation on the last msg +Ctrl+s: load new char/agent +Ctrl+e: export chat to json file +Ctrl+n: start a new chat +Ctrl+c: close programm +Ctrl+p: props edit form (min-p, dry, etc.) +Ctrl+v: switch between /completion and /chat api (if provided in config) +Ctrl+r: start/stop recording from your microphone (needs stt server) +Ctrl+t: remove thinking (<think>) and tool messages from context (delete from chat) +Ctrl+l: update connected model name (llamacpp) +Ctrl+k: switch tool use (recommend tool use to llm after user msg) +Ctrl+j: if chat agent is char.png will show the image; then any key to return +Ctrl+a: interrupt tts (needs tts server) +``` + +#### setting up config +``` +cp config.example.toml config.toml +``` +set values as you need them to be. |