9c832b0e21
7 cards updated, 4 new cards added. Topics: signal-routing, worker-isolation, storage-layer, adapter-isolation, sense contracts, workflow runtime enforcement, coding conventions details. 小橘 <xiaoju@shazhou.work>
89 lines
3.4 KiB
Markdown
89 lines
3.4 KiB
Markdown
# Nerve CLI
|
|
|
|
`nerve` — CLI entry point for nerve workspace management.
|
|
|
|
## Workspace Lifecycle
|
|
|
|
```bash
|
|
nerve init # scaffold a new workspace (nerve.yaml, senses/, workflows/)
|
|
nerve init --force # reinitialize workspace even if ~/.uncaged-nerve/ exists (preserves data/)
|
|
nerve init --from <git-url> # clone existing workspace from git repository
|
|
nerve validate # validate nerve.yaml config
|
|
nerve dev # run kernel foreground (development, Ctrl+C to stop)
|
|
nerve start # start daemon (background)
|
|
nerve stop # stop daemon
|
|
nerve status # check daemon health (uptime, senses, workflows)
|
|
nerve daemon # restart daemon (stop + start)
|
|
```
|
|
|
|
### Init Behavior
|
|
|
|
**Default `nerve init`**: Creates workspace at `~/.uncaged-nerve/`. If this directory already exists and is non-empty, **exits with error** requiring `--force` flag. No merge/overwrite logic — prevents accidental workspace destruction.
|
|
|
|
**Force mode `nerve init --force`**: Reinitializes workspace even if `~/.uncaged-nerve/` exists. **Preserves `data/` directory** (containing sense SQLite databases and logs) but overwrites all config files (`nerve.yaml`, `package.json`, etc.) and example senses.
|
|
|
|
**Git clone `nerve init --from <url>`**: Clones existing repository to `~/.uncaged-nerve/`. Requires empty target directory — fails if workspace already exists and is non-empty.
|
|
|
|
## Sense Management
|
|
|
|
```bash
|
|
nerve create sense <name> # scaffold a new sense (compute.ts + schema.ts)
|
|
nerve sense list # list configured senses
|
|
nerve sense trigger <name> # manually trigger a sense compute
|
|
nerve sense schema <name> # show sense Drizzle schema
|
|
nerve sense query <name> # inspect sense SQLite database
|
|
nerve sense query <name> --sql "SELECT * FROM samples LIMIT 5"
|
|
```
|
|
|
|
## Workflow Management
|
|
|
|
```bash
|
|
nerve create workflow <name> # scaffold a new workflow
|
|
nerve workflow trigger <name> --prompt "..." [--max-rounds N] [--dry-run]
|
|
nerve workflow list # list configured workflows
|
|
nerve thread # list active (queued/started) workflow threads
|
|
```
|
|
|
|
## Knowledge
|
|
|
|
```bash
|
|
nerve knowledge sync # chunk files per knowledge.yaml, compute embeddings → knowledge.db
|
|
nerve knowledge query "text" # search indexed knowledge (cosine similarity)
|
|
nerve knowledge query -g "text" # global search across all indexed repos
|
|
nerve knowledge query --repo /path "text" # search specific repo
|
|
```
|
|
|
|
## Logs & Store
|
|
|
|
```bash
|
|
nerve logs # view daemon logs (last 50 lines)
|
|
nerve logs -f # follow logs (tail -f style)
|
|
nerve logs -n 200 # last N lines
|
|
nerve store archive # archive old log entries to JSONL
|
|
```
|
|
|
|
## Remote
|
|
|
|
```bash
|
|
nerve remote add <name> <url> # add a remote daemon endpoint
|
|
nerve status --remote <name> # check remote daemon health
|
|
```
|
|
|
|
## Workspace Layout
|
|
|
|
```
|
|
my-agent/
|
|
nerve.yaml # senses, workflows, extract config
|
|
knowledge.yaml # knowledge index config (optional)
|
|
senses/
|
|
cpu-usage/
|
|
compute.ts # sense implementation
|
|
schema.ts # Drizzle schema
|
|
migrations/ # auto-generated
|
|
workflows/
|
|
cleanup/
|
|
src/index.ts # workflow definition
|
|
knowledge.db # generated by nerve knowledge sync
|
|
.knowledge/ # curated knowledge cards
|
|
```
|