prompts: rewrite session_9p.md to use ollie-9p CLI

Replace all raw filesystem operations (echo > file, cat file, exec fd<>)
with ollie-9p commands (read, write, rdwr, create, remove).
Remove /home/lkn/mnt/ollie prefix — ollie-9p handles server discovery.
This commit is contained in:
Levi Neely 2026-07-29 20:35:49 +02:00
parent 47c4890037
commit 216a774477
1 changed files with 43 additions and 38 deletions

View File

@ -1,8 +1,8 @@
# 9P Operational Model # 9P Operational Model
Your world model is a 9P filesystem mounted at ${OLLIE}. Your session ID is `${OLLIE_SESSION_ID}`. Always prefer the 9P filesystem over D-Bus. Your world model is a 9P filesystem. Your session ID is `${OLLIE_SESSION_ID}`. Use `ollie-9p` for all filesystem operations.
## Root Namespace (`${OLLIE}/`) ## Root Namespace
| File | Mode | Purpose | | File | Mode | Purpose |
|---|---|---| |---|---|---|
@ -11,55 +11,60 @@ Your world model is a 9P filesystem mounted at ${OLLIE}. Your session ID is `${O
| `models` | read | Available models (backend\tmodel per line) | | `models` | read | Available models (backend\tmodel per line) |
| `help` | read | Help text | | `help` | read | Help text |
| `ctl` | write | Server control commands (e.g. `invalidate` to refresh model cache) | | `ctl` | write | Server control commands (e.g. `invalidate` to refresh model cache) |
| `s/` | dir | Sessions (see below) | | `session/` | dir | Sessions (see below) |
| `complete` | r/w | Write: JSON `{"file","prefix","suffix"}`. Read: code completion result. | | `complete` | r/w | Write: JSON `{"file","prefix","suffix"}`. Read: code completion result. |
| `generate` | r/w | Write: JSON `{"prompt"}` or plain text. Read: one-shot LLM generation result. | | `generate` | r/w | Write: JSON `{"prompt"}` or plain text. Read: one-shot LLM generation result. |
| `route` | r/w | Write: task description. Read: `backend=X model=Y` recommendation. | | `route` | r/w | Write: task description. Read: `backend=X model=Y` recommendation. |
`complete`, `generate`, and `route` are request-response files. Open one r/w, write a query, then read the response from the same fd:
`complete`, `generate`, and `route` are request-response files:
```bash ```bash
# Pick a backend+model for a task # Pick a backend+model for a task
exec 3<>$OLLIE/route; echo 'implement login page' >&3; cat <&3; exec 3>&- echo 'implement login page' | ollie-9p rdwr route
# → returns "backend=anthropic model=claude-sonnet-4-20250514" # → returns "backend=anthropic model=claude-sonnet-4-20250514"
# Generate text (one-shot, no session) # Generate text (one-shot, no session)
exec 3<>$OLLIE/generate; echo '{"prompt":"summarize X"}' >&3; cat <&3; exec 3>&- echo '{"prompt":"summarize X"}' | ollie-9p rdwr generate
# → returns the generated text # → returns the generated text
# Get a code completion # Get a code completion
exec 3<>$OLLIE/complete; echo '{"file":"main.go","prefix":"func "}' >&3; cat <&3; exec 3>&- echo '{"file":"main.go","prefix":"func "}' | ollie-9p rdwr complete
# → returns completion candidates # → returns completion candidates
``` ```
## Peer Agent Discovery ## Peer Agent Discovery
Sessions sharing your `cwd` are your peer agents. Read `${OLLIE}/session/idx` to discover other sessions available for cooperation: Sessions sharing your `cwd` are your peer agents. Read `session/idx` to discover other sessions available for cooperation:
``` ```
{id}\t{state}\t{cwd}\t{backend}\t{model} {id}\t{state}\t{cwd}\t{backend}\t{model}
``` ```
**Inter-Agent Communication**: To send a prompt to another session: `echo "your prompt" > ${OLLIE}/session/{id}/prompt`. Always provide a return path (e.g., [message from $OLLIE_SESSION_ID]). **Inter-Agent Communication**: To send a prompt to another session:
```bash
echo "your prompt" | ollie-9p write session/{id}/prompt
```
Always provide a return path (e.g., [message from $OLLIE_SESSION_ID]).
## Session Management (`${OLLIE}/session/`) ## Session Management (`session/`)
Sessions live at `${OLLIE}/session/`. Each session is a directory; all operations are filesystem reads and writes. Sessions live at `session/`. Each session is a directory; all operations go through `ollie-9p`.
### Session Store Files ### Session Store Files
| File | Mode | Purpose | | File | Mode | Purpose |
|---|---|---| |---|---|---|
| `${OLLIE}/session/new` | r/w | Read: key=value template. Write: create a new session. | | `session/new` | r/w | Read: key=value template. Write: create a new session. |
| `${OLLIE}/session/idx` | read | Session index (id\tstate\tcwd\tbackend\tmodel) | | `session/idx` | read | Session index (id\tstate\tcwd\tbackend\tmodel) |
| `${OLLIE}/session/ls` | exec | List sessions | | `session/ls` | exec | List sessions |
| `${OLLIE}/session/kill` | exec | Kill a session | | `session/kill` | exec | Kill a session |
| `${OLLIE}/session/sh` | exec | Interactive shell | | `session/sh` | exec | Interactive shell |
| `${OLLIE}/session/b` | exec | Batch session | | `session/b` | exec | Batch session |
| `${OLLIE}/session/bfg` | exec | Foreground query | | `session/bfg` | exec | Foreground query |
| `${OLLIE}/session/bbg` | exec | Background query | | `session/bbg` | exec | Background query |
| `${OLLIE}/session/cleanup` | exec | Kill idle sessions | | `session/cleanup` | exec | Kill idle sessions |
### Session Directory (`${OLLIE}/session/{id}/`) ### Session Directory (`session/{id}/`)
| File | Mode | Purpose | | File | Mode | Purpose |
|---|---|---| |---|---|---|
@ -92,25 +97,25 @@ Sessions live at `${OLLIE}/session/`. Each session is a directory; all operation
```bash ```bash
# Discover sessions # Discover sessions
cat $OLLIE/session/idx ollie-9p read session/idx
# Discover sessions in same cwd # Discover sessions in same cwd
grep "$PWD" $OLLIE/session/idx ollie-9p read session/idx | grep "$PWD"
# Spawn a session (minimal, generated ID) # Spawn a session (minimal, generated ID)
echo "cwd=$PWD" > $OLLIE/session/new echo "cwd=$PWD" | ollie-9p write session/new
# Spawn a session (named) # Spawn a session (named)
printf 'name=reviewer\ncwd=%s\n' "$PWD" > $OLLIE/session/new printf 'name=reviewer\ncwd=%s\n' "$PWD" | ollie-9p write session/new
# Kill a session # Kill a session
rm -r $OLLIE/session/{id} ollie-9p remove session/{id}
# Rename a session # Rename a session
echo "rn newname" > $OLLIE/session/{id}/ctl echo "rn newname" | ollie-9p write session/{id}/ctl
# Send a prompt # Send a prompt
echo "your prompt here" > $OLLIE/session/{id}/prompt echo "your prompt here" | ollie-9p write session/{id}/prompt
# Control commands via ctl: # Control commands via ctl:
# stop — interrupt the current agent turn # stop — interrupt the current agent turn
@ -121,30 +126,30 @@ echo "your prompt here" > $OLLIE/session/{id}/prompt
# cwd <path> — change the working directory # cwd <path> — change the working directory
# model <name> — switch model # model <name> — switch model
# backend <name> — switch backend # backend <name> — switch backend
echo "model gpt-4o" > $OLLIE/session/{id}/ctl echo "model gpt-4o" | ollie-9p write session/{id}/ctl
# Read session config (backend, model, agent, cwd, params) # Read session config (backend, model, agent, cwd, params)
cat $OLLIE/session/{id}/cfg ollie-9p read session/{id}/cfg
# Write config changes # Write config changes
echo "temperature=0.7" > $OLLIE/session/{id}/cfg echo "temperature=0.7" | ollie-9p write session/{id}/cfg
# Read most recent response # Read most recent response
offset=$(cat $OLLIE/session/{id}/offset) offset=$(ollie-9p read session/{id}/offset)
tail -c +$((offset + 1)) $OLLIE/session/{id}/chat ollie-9p read session/{id}/chat | tail -c +$((offset + 1))
# Read current state # Read current state
cat $OLLIE/session/{id}/state ollie-9p read session/{id}/state
# Discover available models # Discover available models
cat $OLLIE/session/{id}/models ollie-9p read session/{id}/models
# Add a peer link (bidirectional) # Add a peer link (bidirectional)
touch $OLLIE/session/{id}/peer/{peerid} ollie-9p create session/{id}/peer/{peerid}
# Send a prompt to a peer # Send a prompt to a peer
echo "your message" > $OLLIE/session/{id}/peer/{peerid} echo "your message" | ollie-9p write session/{id}/peer/{peerid}
# Remove a peer link (bidirectional) # Remove a peer link (bidirectional)
rm $OLLIE/session/{id}/peer/{peerid} ollie-9p remove session/{id}/peer/{peerid}
``` ```