80 lines
2.7 KiB
Markdown
80 lines
2.7 KiB
Markdown
**FIDO** a minimal coding assistant.
|
|
|
|
Fido is a console REPL assistant that inspects files, lists directories, finds files
|
|
and directories by name, searches file contents, applies changes, and runs shell
|
|
commands (with user approval).
|
|
|
|
## Install
|
|
|
|
Installs into `~/.fido` and adds a `fido` launcher to your `PATH` via `~/.bashrc`:
|
|
|
|
```sh
|
|
git clone <this-repo> ~/src/fidoca
|
|
cd ~/src/fidoca
|
|
./install.sh
|
|
source ~/.bashrc
|
|
```
|
|
|
|
The installer needs the sibling `llmorbiter` checkout (this project depends on it
|
|
via `file:../llmorbiter`); it is bundled into `~/.fido/llmorbiter`. Override its
|
|
location with `LLMORBITER_SRC=/path/to/llmorbiter`.
|
|
|
|
Then, from any project directory:
|
|
|
|
```sh
|
|
fido # work on the current directory
|
|
fido /path/to/project # work on a specific directory
|
|
```
|
|
|
|
Set `OPENROUTER_API_KEY` (and optionally `TAVILY_API_KEY`) in `~/.fido/.env`.
|
|
|
|
### File mentions
|
|
|
|
While typing a message, press **`Ctrl+O`** to open an in-prompt file browser.
|
|
It is `.gitignore`-aware and hides dot-directories, just like `list_files`.
|
|
|
|
| Key | Action |
|
|
| ----------- | -------------------------------------------------- |
|
|
| `↑` / `↓` | Move the highlight |
|
|
| `Enter` | Descend into a directory, or open the line selector|
|
|
| `Tab` | Mention the highlighted file (whole file) |
|
|
| `Backspace` | Go to the parent directory |
|
|
| `Esc` | Cancel back to the prompt |
|
|
|
|
In the line selector, `↑`/`↓` move the cursor, `v` starts/ends a range, `g`/`G`
|
|
jump to the first/last line, and `Enter` inserts the mention.
|
|
|
|
The mention is plain text spliced in at the cursor; the model reads the file
|
|
itself via `read_file` (it is a *reference*, not embedded contents):
|
|
|
|
| Selection | Inserted text |
|
|
| ----------- | ----------------------- |
|
|
| Whole file | `@src/fido.js` |
|
|
| Line range | `@src/fido.js:120-145` |
|
|
| Single line | `@src/fido.js:120` |
|
|
|
|
Paths are relative to the workspace root with forward slashes; line numbers are
|
|
1-based (the model maps them to `read_file`'s 0-indexed `seek`).
|
|
|
|
### Layout
|
|
|
|
```
|
|
~/.fido/
|
|
app/ the fido app (this repo)
|
|
llmorbiter/ bundled dependency
|
|
bin/fido the launcher (added to PATH)
|
|
.env your config / API keys
|
|
state/<workspace>/ per-workspace state
|
|
undo.json
|
|
suspends/
|
|
```
|
|
|
|
Undo and `/suspend` state is stored **per workspace** under `~/.fido/state/`, so it
|
|
never mixes between projects and never litters your repositories.
|
|
|
|
To remove everything: `./install.sh --uninstall`.
|
|
|
|
## License
|
|
|
|
[0BSD](https://opensource.org/license/0bsd)
|