v0.0.1: agentu mvp
Add OpenAI-compatible providers, TUI, slash commands, and model switching. Add local file tools plus optional yolo shell execution. Document config, usage, and development workflow.
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
# agentu
|
||||
|
||||
agentu is a small local agent written in Go. The current MVP is a terminal chat
|
||||
UI with OpenAI-compatible providers, streaming responses, session-level
|
||||
model/provider switching, and local tools.
|
||||
|
||||
## Current MVP
|
||||
|
||||
- TUI-first chat experience with a light theme by default.
|
||||
- OpenAI-compatible `/v1/chat/completions` provider support.
|
||||
- Multiple providers from `~/.agentu/config.yaml`.
|
||||
- Session-only provider, model, and thinking-level switching.
|
||||
- Read-only project tools enabled by default.
|
||||
- `--yolo` mode for file writes and shell execution.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```sh
|
||||
mkdir -p ~/.agentu
|
||||
cp agentu.example.yaml ~/.agentu/config.yaml
|
||||
export AGENTU_API_KEY='your-api-key'
|
||||
go run ./cmd/agentu
|
||||
```
|
||||
|
||||
Use `--yolo` only when you want agentu to write files or run shell commands:
|
||||
|
||||
```sh
|
||||
go run ./cmd/agentu --yolo
|
||||
```
|
||||
|
||||
## Config
|
||||
|
||||
By default, agentu reads:
|
||||
|
||||
```text
|
||||
~/.agentu/config.yaml
|
||||
```
|
||||
|
||||
Use `--config <path>` to load another file.
|
||||
|
||||
```yaml
|
||||
providers:
|
||||
loveuer:
|
||||
base_url: https://ai.loveuer.com
|
||||
api_key: ${AGENTU_API_KEY}
|
||||
model: deepseek-v4-flash
|
||||
models:
|
||||
- deepseek-v4-flash
|
||||
thinking: none
|
||||
thinking_param: thinking
|
||||
|
||||
agent:
|
||||
system_prompt: |
|
||||
You are agentu, a concise local agent. Answer simple conversation directly.
|
||||
Use tools only when the user's request needs local project context or local
|
||||
command execution.
|
||||
working_dir: .
|
||||
tool_timeout: 30s
|
||||
```
|
||||
|
||||
Provider names are the keys under `providers`. At startup, agentu selects the
|
||||
first provider by name. Use `/model provider <name>` to switch providers for the
|
||||
current session.
|
||||
|
||||
`models` is optional. If present, `/model model <name>` is restricted to that
|
||||
list. If omitted, any model name is accepted for that provider.
|
||||
|
||||
`thinking` is optional. Supported values are:
|
||||
|
||||
```text
|
||||
none, middle, high, xhigh, max
|
||||
```
|
||||
|
||||
When configured or changed with `/model thinking ...`, the value is sent as a
|
||||
top-level OpenAI-compatible request field. `thinking_param` controls that field
|
||||
name and defaults to `thinking`.
|
||||
|
||||
## CLI Flags
|
||||
|
||||
```sh
|
||||
go run ./cmd/agentu [flags]
|
||||
```
|
||||
|
||||
- `--config <path>` loads a YAML config file. Default: `~/.agentu/config.yaml`.
|
||||
- `--theme light|dark` selects the TUI theme. Default: `light`.
|
||||
- `--plain` uses the simple line-based REPL instead of the TUI.
|
||||
- `--yolo` enables automatic file writes and shell execution.
|
||||
|
||||
## TUI Controls
|
||||
|
||||
- `enter` sends the message.
|
||||
- `ctrl+j` or `alt+enter` inserts a newline.
|
||||
- The input starts at one line and grows up to six lines.
|
||||
- `page up` / `page down` scrolls the transcript.
|
||||
- `esc` cancels a running response.
|
||||
- Type `/` to show available commands.
|
||||
|
||||
Slash commands:
|
||||
|
||||
- `/clear` resets conversation history.
|
||||
- `/model` shows current provider, model, thinking, and switch usage.
|
||||
- `/model provider <name>` switches provider for the current session.
|
||||
- `/model model <name>` or `/model <name>` switches model for the current session.
|
||||
- `/model thinking <none|middle|high|xhigh|max>` changes thinking for the current session.
|
||||
- `/exit` or `/quit` exits.
|
||||
|
||||
## Local Tools
|
||||
|
||||
Read-only tools are available by default:
|
||||
|
||||
- `file_read`
|
||||
- `file_list`
|
||||
- `file_search`
|
||||
|
||||
`--yolo` additionally enables:
|
||||
|
||||
- `file_write`
|
||||
- `shell_run`
|
||||
|
||||
Use `--yolo` for prompts that ask agentu to run or inspect local commands, for
|
||||
example:
|
||||
|
||||
```text
|
||||
请帮我运行 `go test ./...` 并总结结果
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
Run the verification suite:
|
||||
|
||||
```sh
|
||||
go test ./...
|
||||
go vet ./...
|
||||
go build ./cmd/agentu
|
||||
```
|
||||
|
||||
Local config and build outputs are intentionally ignored by git.
|
||||
|
||||
## Notes
|
||||
|
||||
- Provider/model/thinking changes are session-only; agentu does not write them
|
||||
back to `~/.agentu/config.yaml`.
|
||||
- The config schema is intentionally strict during MVP development. Deprecated
|
||||
fields such as `provider` or `active_provider` are rejected.
|
||||
Reference in New Issue
Block a user