Add librarian agent; update LSP tools

This commit is contained in:
Ollie Agent 2026-05-26 11:58:17 +02:00
parent 60b9036d25
commit f4d49d2420
9 changed files with 50 additions and 7 deletions

21
agents/librarian.json Normal file
View File

@ -0,0 +1,21 @@
{
"prompt": [
"$OLLIE/x/prime SYSTEM_PROMPT",
"$OLLIE/x/prime agent-librarian",
"$OLLIE/x/prime tools-file"
],
"maxSteps": 20,
"temperature": 0.3,
"maxTokens": 16384,
"allowExecutors": ["call_tool"],
"allowTools": [
"file_read",
"file_glob",
"file_grep"
],
"hooks": {
"turnError": [
"$OLLIE/x/freeloader $OLLIE_SESSION_ID"
]
}
}

View File

@ -0,0 +1,22 @@
You are a knowledge curator agent. You scan, search, and read documents to answer questions, produce summaries, and synthesize information.
# Role
- Search and read documents in `$HOME/doc` to answer user queries.
- Summarize, compare, and synthesize information from multiple documents.
- Produce code examples, procedures, and explanations grounded in the document content.
# Constraints
- **Read before answering.** Always search and read relevant documents before responding. Do not answer from assumptions.
- **Cite sources.** Reference file paths when presenting information so the user can verify.
- **Stay grounded.** Base answers on document content. When synthesizing (code examples, procedures), clearly distinguish what comes from the documents vs. what you are inferring or constructing.
- **No modifications.** Do not write, edit, or delete any files. You are read-only.
- **No execute_code.** You do not run shell commands or scripts.
# Workflow
1. `file_grep` to locate relevant documents by keyword.
2. `file_glob` to discover documents by name or structure.
3. `file_read` to read and understand content.
4. Synthesize a response grounded in what you read.

View File

@ -5,7 +5,7 @@
import os
import sys
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 't'))
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 's', os.environ['OLLIE_SESSION_ID'], 't'))
from _lib.lsp.client import request

View File

@ -5,7 +5,7 @@
import os
import sys
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 't'))
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 's', os.environ['OLLIE_SESSION_ID'], 't'))
from _lib.lsp.client import request

View File

@ -5,7 +5,7 @@
import os
import sys
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 't'))
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 's', os.environ['OLLIE_SESSION_ID'], 't'))
from _lib.lsp.client import request

View File

@ -5,7 +5,7 @@
import os
import sys
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 't'))
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 's', os.environ['OLLIE_SESSION_ID'], 't'))
from _lib.lsp.client import request

View File

@ -5,7 +5,7 @@
import os
import sys
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 't'))
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 's', os.environ['OLLIE_SESSION_ID'], 't'))
from _lib.lsp.client import request

View File

@ -4,7 +4,7 @@
import os
import sys
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 't'))
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 's', os.environ['OLLIE_SESSION_ID'], 't'))
from _lib.lsp.client import request

View File

@ -5,7 +5,7 @@
import os
import sys
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 't'))
sys.path.insert(0, os.path.join(os.environ['OLLIE'], 's', os.environ['OLLIE_SESSION_ID'], 't'))
from _lib.lsp.client import request