openagent-framework 0.2.6__tar.gz → 0.2.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/PKG-INFO +24 -1
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/docs/README.md +23 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/__init__.py +1 -1
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/agent.py +16 -2
- openagent_framework-0.2.7/openagent/prompts.py +81 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/server.py +38 -18
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/PKG-INFO +24 -1
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/SOURCES.txt +1 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/pyproject.toml +1 -1
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/bootstrap.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/channels/__init__.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/channels/base.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/channels/discord.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/channels/senders.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/channels/telegram.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/channels/whatsapp.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/cli.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/config.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcp/__init__.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcp/client.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcp/oauth.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/chrome-devtools/.gitignore +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/chrome-devtools/package.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/.gitignore +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/package.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/src/index.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/src/main.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/src/tools/computer.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/src/tools/index.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/src/utils/response.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/src/xdotoolStringToKeys.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/tsconfig.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/editor/.gitignore +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/editor/package.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/editor/src/index.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/editor/tsconfig.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/messaging/.gitignore +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/messaging/index.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/messaging/package.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/messaging/tsconfig.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/shell/.gitignore +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/shell/package.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/shell/src/index.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/shell/tsconfig.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/.gitignore +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/package.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/browser-pool.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/content-extractor.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/enhanced-content-extractor.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/index.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/rate-limiter.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/search-engine.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/types.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/utils.ts +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/tsconfig.json +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/memory/__init__.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/memory/db.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/memory/manager.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/models/__init__.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/models/base.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/models/claude_api.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/models/claude_cli.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/models/zhipu.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/scheduler.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/service.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/services/__init__.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/services/base.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/services/manager.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/services/syncthing.py +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/dependency_links.txt +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/entry_points.txt +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/requires.txt +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/top_level.txt +0 -0
- {openagent_framework-0.2.6 → openagent_framework-0.2.7}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openagent-framework
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.7
|
|
4
4
|
Summary: Simplified LLM agent framework with MCP, memory, and multi-channel support
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -168,6 +168,29 @@ These are handled automatically by OpenAgent — you just write `openagent.yaml`
|
|
|
168
168
|
|
|
169
169
|
---
|
|
170
170
|
|
|
171
|
+
## System prompt
|
|
172
|
+
|
|
173
|
+
OpenAgent injects a **framework-level system prompt** in front of your
|
|
174
|
+
user-defined `system_prompt` on every model call. It codifies guidelines
|
|
175
|
+
that apply to every deployment:
|
|
176
|
+
|
|
177
|
+
- How to use the memory vault (mcpvault tools, wikilinks, tags).
|
|
178
|
+
- Prefer MCP tools over `shell_exec` and ad-hoc scripts.
|
|
179
|
+
- Act autonomously under `permission_mode: bypass`; only stop for
|
|
180
|
+
ambiguous or irreversible actions.
|
|
181
|
+
- Be concise; lead with the answer, not the reasoning.
|
|
182
|
+
|
|
183
|
+
Your `system_prompt` in `openagent.yaml` should therefore stay **short
|
|
184
|
+
and project-specific** — just identity and a pointer to the memory
|
|
185
|
+
vault. Everything else (package names, host names, credentials,
|
|
186
|
+
procedures) belongs as `.md` notes inside the vault, where the agent
|
|
187
|
+
will find them via `search_notes`.
|
|
188
|
+
|
|
189
|
+
The framework prompt source lives at `openagent/prompts.py:FRAMEWORK_SYSTEM_PROMPT`
|
|
190
|
+
if you want to read or tweak the wording.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
171
194
|
## Memory
|
|
172
195
|
|
|
173
196
|
OpenAgent's long-term memory is a plain **Obsidian-compatible markdown vault**. The agent reads and writes `.md` files directly via the [`mcpvault`](https://www.npmjs.com/package/@bitbonsai/mcpvault) MCP — no custom index, no full-text engine, no proprietary format. The files on disk *are* the database.
|
|
@@ -141,6 +141,29 @@ These are handled automatically by OpenAgent — you just write `openagent.yaml`
|
|
|
141
141
|
|
|
142
142
|
---
|
|
143
143
|
|
|
144
|
+
## System prompt
|
|
145
|
+
|
|
146
|
+
OpenAgent injects a **framework-level system prompt** in front of your
|
|
147
|
+
user-defined `system_prompt` on every model call. It codifies guidelines
|
|
148
|
+
that apply to every deployment:
|
|
149
|
+
|
|
150
|
+
- How to use the memory vault (mcpvault tools, wikilinks, tags).
|
|
151
|
+
- Prefer MCP tools over `shell_exec` and ad-hoc scripts.
|
|
152
|
+
- Act autonomously under `permission_mode: bypass`; only stop for
|
|
153
|
+
ambiguous or irreversible actions.
|
|
154
|
+
- Be concise; lead with the answer, not the reasoning.
|
|
155
|
+
|
|
156
|
+
Your `system_prompt` in `openagent.yaml` should therefore stay **short
|
|
157
|
+
and project-specific** — just identity and a pointer to the memory
|
|
158
|
+
vault. Everything else (package names, host names, credentials,
|
|
159
|
+
procedures) belongs as `.md` notes inside the vault, where the agent
|
|
160
|
+
will find them via `search_notes`.
|
|
161
|
+
|
|
162
|
+
The framework prompt source lives at `openagent/prompts.py:FRAMEWORK_SYSTEM_PROMPT`
|
|
163
|
+
if you want to read or tweak the wording.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
144
167
|
## Memory
|
|
145
168
|
|
|
146
169
|
OpenAgent's long-term memory is a plain **Obsidian-compatible markdown vault**. The agent reads and writes `.md` files directly via the [`mcpvault`](https://www.npmjs.com/package/@bitbonsai/mcpvault) MCP — no custom index, no full-text engine, no proprietary format. The files on disk *are* the database.
|
|
@@ -8,6 +8,7 @@ from typing import Any, AsyncIterator, Callable, Awaitable
|
|
|
8
8
|
from openagent.models.base import BaseModel, ModelResponse
|
|
9
9
|
from openagent.memory.db import MemoryDB
|
|
10
10
|
from openagent.mcp.client import MCPRegistry, MCPTools
|
|
11
|
+
from openagent.prompts import FRAMEWORK_SYSTEM_PROMPT
|
|
11
12
|
|
|
12
13
|
logger = logging.getLogger(__name__)
|
|
13
14
|
|
|
@@ -192,7 +193,9 @@ class Agent:
|
|
|
192
193
|
"""Inner run logic, wrapped by run() for crash protection."""
|
|
193
194
|
await _status("Loading context...")
|
|
194
195
|
|
|
195
|
-
|
|
196
|
+
# Combine OpenAgent's framework-level guidelines with the user's
|
|
197
|
+
# project-specific system prompt from openagent.yaml.
|
|
198
|
+
system = self._combined_system_prompt()
|
|
196
199
|
|
|
197
200
|
# Build messages
|
|
198
201
|
if attachments:
|
|
@@ -244,6 +247,17 @@ class Agent:
|
|
|
244
247
|
|
|
245
248
|
return response.content if response else "I wasn't able to complete the request."
|
|
246
249
|
|
|
250
|
+
def _combined_system_prompt(self) -> str:
|
|
251
|
+
"""Prepend the framework-level prompt to the user's system prompt."""
|
|
252
|
+
user = (self.system_prompt or "").strip()
|
|
253
|
+
if not user:
|
|
254
|
+
return FRAMEWORK_SYSTEM_PROMPT
|
|
255
|
+
return (
|
|
256
|
+
FRAMEWORK_SYSTEM_PROMPT
|
|
257
|
+
+ "\n\n── User-specific identity and project context ──\n\n"
|
|
258
|
+
+ user
|
|
259
|
+
)
|
|
260
|
+
|
|
247
261
|
async def stream_run(
|
|
248
262
|
self,
|
|
249
263
|
message: str,
|
|
@@ -256,7 +270,7 @@ class Agent:
|
|
|
256
270
|
|
|
257
271
|
await self.initialize()
|
|
258
272
|
|
|
259
|
-
system = self.
|
|
273
|
+
system = self._combined_system_prompt()
|
|
260
274
|
messages: list[dict[str, Any]] = [{"role": "user", "content": message}]
|
|
261
275
|
|
|
262
276
|
async for chunk in self.model.stream(messages, system=system):
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""Framework-level prompts injected into every OpenAgent conversation.
|
|
2
|
+
|
|
3
|
+
These are prepended to the user-supplied ``system_prompt`` from
|
|
4
|
+
``openagent.yaml``. They codify the operating guidelines that apply to
|
|
5
|
+
every OpenAgent deployment regardless of project context: how to use the
|
|
6
|
+
memory vault, when to prefer MCP tools over shell, how autonomously to
|
|
7
|
+
act, etc. The user's config is expected to stay short and
|
|
8
|
+
project-specific (identity, key facts, pointers to memory).
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
FRAMEWORK_SYSTEM_PROMPT = """\
|
|
12
|
+
You are running inside OpenAgent, a persistent LLM agent framework with
|
|
13
|
+
long-term memory, scheduled tasks, and multi-channel connectivity. The
|
|
14
|
+
guidelines below apply to every conversation you handle and take
|
|
15
|
+
precedence over stylistic choices in the user-specific instructions
|
|
16
|
+
that follow later in this system prompt.
|
|
17
|
+
|
|
18
|
+
## Your memory vault
|
|
19
|
+
|
|
20
|
+
Your long-term memory is a plain Obsidian-compatible markdown vault.
|
|
21
|
+
The files on disk ARE the database — you read and write them directly
|
|
22
|
+
via the `mcpvault` MCP. The same vault may be open in the user's
|
|
23
|
+
Obsidian desktop app (synced via Syncthing or similar), so treat it as
|
|
24
|
+
shared state that other writers can touch between your turns.
|
|
25
|
+
|
|
26
|
+
- Use mcpvault tools for every vault operation:
|
|
27
|
+
`list_notes`, `read_note`, `read_multiple_notes`, `search_notes`,
|
|
28
|
+
`write_note`, `patch_note`, `update_frontmatter`, `delete_note`,
|
|
29
|
+
`move_note`, `manage_tags`, `get_frontmatter`, `list_all_tags`,
|
|
30
|
+
`get_vault_stats`, `get_backlinks`.
|
|
31
|
+
- Do NOT shell out to `cat`, `grep`, `find`, `read_file`, or editor
|
|
32
|
+
commands to browse memory notes when mcpvault tools can do the same.
|
|
33
|
+
The MCP tools respect frontmatter, give structured results, and make
|
|
34
|
+
your trace legible to the user.
|
|
35
|
+
- When you learn something worth remembering during a conversation
|
|
36
|
+
(new credentials, a new deploy detail, a gotcha you solved, a
|
|
37
|
+
decision the user made), write it into the vault IN THAT SAME TURN.
|
|
38
|
+
Don't wait to be asked. Prefer short topical notes over one giant
|
|
39
|
+
file.
|
|
40
|
+
- Prefer `patch_note` for small edits — it preserves the rest of the
|
|
41
|
+
note and keeps diffs clean. Only use `write_note` (full rewrite) when
|
|
42
|
+
you are creating a note from scratch or restructuring it end-to-end.
|
|
43
|
+
- Cross-link related notes with `[[wikilink]]` syntax. If you write
|
|
44
|
+
note A about topic X and notes about topic Y already mention X,
|
|
45
|
+
search for them and add a backlink in A. The user navigates the
|
|
46
|
+
vault as a graph in Obsidian, so dense linking is high-value.
|
|
47
|
+
- Tag notes consistently in YAML frontmatter (`tags: [topic, area]`)
|
|
48
|
+
so `search_notes` and `list_all_tags` surface them together.
|
|
49
|
+
- Always check the vault first before claiming you don't know
|
|
50
|
+
something about the user's project.
|
|
51
|
+
|
|
52
|
+
## Tool preference
|
|
53
|
+
|
|
54
|
+
- Prefer MCP tools over ad-hoc shell commands whenever an MCP covers
|
|
55
|
+
the task. MCPs give you structured I/O, better error messages, and a
|
|
56
|
+
clean trace the user can review.
|
|
57
|
+
- Drop to `shell_exec` only for operations no MCP offers — one-off
|
|
58
|
+
system admin, kernel-level debugging, compiling code, etc.
|
|
59
|
+
- Do NOT create throwaway helper scripts in the user's filesystem for
|
|
60
|
+
something a single MCP call could do. If you find yourself writing a
|
|
61
|
+
Python/Bash one-liner to work around a missing tool, stop and look
|
|
62
|
+
for an MCP first.
|
|
63
|
+
|
|
64
|
+
## Acting autonomously
|
|
65
|
+
|
|
66
|
+
- In most deployments you run with `permission_mode: bypass` — tool
|
|
67
|
+
calls are pre-approved. Use that to complete tasks end-to-end without
|
|
68
|
+
asking the user to confirm every step.
|
|
69
|
+
- Stop to ask the user only when:
|
|
70
|
+
1. Instructions are genuinely ambiguous and a wrong choice would be
|
|
71
|
+
hard to undo.
|
|
72
|
+
2. An action is irreversible and high-risk (deleting prod data,
|
|
73
|
+
force-pushing main, sending money, messaging many people).
|
|
74
|
+
3. You need information you physically cannot obtain (a private
|
|
75
|
+
judgement call, credentials that aren't in the vault, consent for
|
|
76
|
+
something the user hasn't authorized).
|
|
77
|
+
- If a tool call fails, read the error, try a different approach, and
|
|
78
|
+
only escalate after you've exhausted the obvious fixes.
|
|
79
|
+
- Be concise. Lead with the answer or the action, not the reasoning.
|
|
80
|
+
Don't restate the user's request before answering it.
|
|
81
|
+
"""
|
|
@@ -33,28 +33,48 @@ AUTO_UPDATE_TASK_NAME = "auto-update"
|
|
|
33
33
|
|
|
34
34
|
DREAM_MODE_PROMPT = """\
|
|
35
35
|
You are running in Dream Mode — a nightly maintenance routine.
|
|
36
|
-
Perform
|
|
37
|
-
|
|
38
|
-
1. **Clean temp files**: List and remove files in /tmp
|
|
39
|
-
Use `find /tmp -maxdepth 1 -type f -mtime +1 -delete` (or
|
|
40
|
-
Report how many files were removed and how much space
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
|
|
36
|
+
Perform these tasks and write a concise audit log at the end.
|
|
37
|
+
|
|
38
|
+
1. **Clean temp files**: List and remove files in /tmp older than 24 hours.
|
|
39
|
+
Use `find /tmp -maxdepth 1 -type f -mtime +1 -delete` (or the OS
|
|
40
|
+
equivalent). Report how many files were removed and how much space
|
|
41
|
+
was freed.
|
|
42
|
+
|
|
43
|
+
2. **Curate the memory vault (via the mcpvault MCP — do NOT cat/grep
|
|
44
|
+
the .md files)**:
|
|
45
|
+
- Use `list_notes` and `search_notes` to survey the vault.
|
|
46
|
+
- Identify notes that cover the same topic and **merge duplicates**
|
|
47
|
+
into a single canonical note with `write_note` or `patch_note`,
|
|
48
|
+
then `delete_note` the redundant ones.
|
|
49
|
+
- Update any outdated information you can verify from the
|
|
50
|
+
environment (tool versions, paths, hosts that no longer exist,
|
|
51
|
+
etc.).
|
|
52
|
+
- Remove trivially short or empty notes (< 20 words) that add no
|
|
53
|
+
value.
|
|
54
|
+
- **Cross-link related notes with `[[wikilinks]]`**. For every note
|
|
55
|
+
you touch, search the vault for related topics and add backlinks
|
|
56
|
+
where the relationship is meaningful. If a group of notes shares a
|
|
57
|
+
theme, make sure each one links to the others. Prefer
|
|
58
|
+
`patch_note` to add links in place rather than rewriting whole
|
|
59
|
+
notes.
|
|
60
|
+
- Update frontmatter `tags:` so related notes share consistent
|
|
61
|
+
tags and surface together in future searches.
|
|
62
|
+
Report what was merged, updated, cross-linked, or removed.
|
|
63
|
+
|
|
64
|
+
3. **System health check**:
|
|
65
|
+
- Disk usage (`df -h`) — warn if any partition is above 85%.
|
|
66
|
+
- Memory usage (`free -m` on Linux, `vm_stat` on macOS).
|
|
51
67
|
- Top 5 processes by CPU usage.
|
|
52
68
|
Report any anomalies or concerns.
|
|
53
69
|
|
|
54
|
-
4. **Log results**:
|
|
55
|
-
|
|
70
|
+
4. **Log results**: Use `write_note` to save a concise summary under
|
|
71
|
+
`dream-logs/dream-log-YYYY-MM-DD.md` with frontmatter `type: dream-log`
|
|
72
|
+
and `date:` set to today, so there is an audit trail linkable from
|
|
73
|
+
other notes.
|
|
56
74
|
|
|
57
|
-
Be thorough but non-destructive. When in doubt, skip rather than
|
|
75
|
+
Be thorough but non-destructive. When in doubt, skip rather than
|
|
76
|
+
delete, and always use mcpvault tools instead of raw filesystem access
|
|
77
|
+
for anything under the memory vault.
|
|
58
78
|
"""
|
|
59
79
|
|
|
60
80
|
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openagent-framework
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.7
|
|
4
4
|
Summary: Simplified LLM agent framework with MCP, memory, and multi-channel support
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -168,6 +168,29 @@ These are handled automatically by OpenAgent — you just write `openagent.yaml`
|
|
|
168
168
|
|
|
169
169
|
---
|
|
170
170
|
|
|
171
|
+
## System prompt
|
|
172
|
+
|
|
173
|
+
OpenAgent injects a **framework-level system prompt** in front of your
|
|
174
|
+
user-defined `system_prompt` on every model call. It codifies guidelines
|
|
175
|
+
that apply to every deployment:
|
|
176
|
+
|
|
177
|
+
- How to use the memory vault (mcpvault tools, wikilinks, tags).
|
|
178
|
+
- Prefer MCP tools over `shell_exec` and ad-hoc scripts.
|
|
179
|
+
- Act autonomously under `permission_mode: bypass`; only stop for
|
|
180
|
+
ambiguous or irreversible actions.
|
|
181
|
+
- Be concise; lead with the answer, not the reasoning.
|
|
182
|
+
|
|
183
|
+
Your `system_prompt` in `openagent.yaml` should therefore stay **short
|
|
184
|
+
and project-specific** — just identity and a pointer to the memory
|
|
185
|
+
vault. Everything else (package names, host names, credentials,
|
|
186
|
+
procedures) belongs as `.md` notes inside the vault, where the agent
|
|
187
|
+
will find them via `search_notes`.
|
|
188
|
+
|
|
189
|
+
The framework prompt source lives at `openagent/prompts.py:FRAMEWORK_SYSTEM_PROMPT`
|
|
190
|
+
if you want to read or tweak the wording.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
171
194
|
## Memory
|
|
172
195
|
|
|
173
196
|
OpenAgent's long-term memory is a plain **Obsidian-compatible markdown vault**. The agent reads and writes `.md` files directly via the [`mcpvault`](https://www.npmjs.com/package/@bitbonsai/mcpvault) MCP — no custom index, no full-text engine, no proprietary format. The files on disk *are* the database.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "openagent-framework"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.7"
|
|
8
8
|
description = "Simplified LLM agent framework with MCP, memory, and multi-channel support"
|
|
9
9
|
readme = "docs/README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/chrome-devtools/.gitignore
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/chrome-devtools/package.json
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/.gitignore
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/package.json
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/src/index.ts
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/computer-control/src/main.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/messaging/package.json
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/messaging/tsconfig.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/.gitignore
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/package.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/index.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/types.ts
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/src/utils.ts
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent/mcps/web-search/tsconfig.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/requires.txt
RENAMED
|
File without changes
|
{openagent_framework-0.2.6 → openagent_framework-0.2.7}/openagent_framework.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|