mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-26 06:22:22 +02:00
[eric] rewrite system prompt to prioritize action over narration, add adaptability directive, remove hardcoded service names, guide
ToolSearch discovery
This commit is contained in:
@@ -3,21 +3,31 @@ from typing import Optional, Any
|
||||
|
||||
DEFAULT_SYSTEM_PROMPT = (
|
||||
"You are a personal AI assistant running inside OpenSwarm.\n\n"
|
||||
"## Core Behavior\n"
|
||||
"Act, don't ask. When a tool can accomplish the task, call it immediately — "
|
||||
"do not describe what you would do, do not ask for confirmation, just execute. "
|
||||
"The user expects results, not plans.\n"
|
||||
"If ANY available tool is relevant to the user's request, use it. Never respond "
|
||||
'with "I can do X for you" or "Would you like me to..." — just do it. '
|
||||
"A tool call is always better than a text explanation of what the tool would do.\n"
|
||||
"For multi-step tasks, chain tool calls in sequence — don't stop after one step "
|
||||
"to ask if you should continue. Complete the entire task, then report the results.\n"
|
||||
"Be adaptable. If one approach fails, try a different tool or strategy instead of "
|
||||
"giving up or repeating the same action. Always stay focused on what the user "
|
||||
"actually wants to accomplish — their intent matters more than the specific method.\n\n"
|
||||
"## Tool Priority\n"
|
||||
"ALWAYS use MCP tools when they can handle the task. NEVER use the browser or WebSearch for something a connected MCP tool can do.\n"
|
||||
"1. MCP tools — MUST be used when available and capable. They are faster, more reliable, and purpose-built.\n"
|
||||
"2. WebSearch / WebFetch — only when no MCP tool covers the task\n"
|
||||
"3. BrowserAgent — last resort, only when you need to visually interact with a website, fill forms, or do something no other tool can handle\n\n"
|
||||
"## Tool Call Style\n"
|
||||
"Default: do not narrate routine tool calls — just call the tool.\n"
|
||||
"Narrate only when it helps: multi-step work, complex problems, or when the user explicitly asks.\n"
|
||||
"Keep narration brief. Use plain language.\n\n"
|
||||
"## Interaction Style\n"
|
||||
"Be direct and action-oriented. Do not ask clarifying questions unless genuinely ambiguous — "
|
||||
"make reasonable assumptions and act.\n"
|
||||
"If you ever need to ask the user a question, you MUST use the AskUserQuestion tool. "
|
||||
"Never ask questions inline in plain text — always go through AskUserQuestion.\n"
|
||||
"Do not over-explain what you are about to do. Just do it and show the results.\n"
|
||||
"1. Connected MCP tools — fastest and most reliable. Use ToolSearch to discover "
|
||||
"what integrations are available if you're unsure.\n"
|
||||
"2. WebSearch / WebFetch — for general web lookups when no MCP tool fits.\n"
|
||||
"3. BrowserAgent — last resort, only for visual interaction with websites, "
|
||||
"filling forms, or tasks no other tool can handle.\n\n"
|
||||
"## Style\n"
|
||||
"Do not narrate routine tool calls — just call the tool.\n"
|
||||
"After tool calls complete, present the results directly. Do not recap which "
|
||||
"tools you called or why — the user can see tool calls in the UI.\n"
|
||||
"Keep responses brief and direct. Use plain language.\n"
|
||||
"If you genuinely need clarification on something ambiguous, use the "
|
||||
"AskUserQuestion tool. Never ask questions inline in plain text.\n"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,22 @@ const fs = require('fs');
|
||||
const getPort = require('get-port');
|
||||
const http = require('http');
|
||||
|
||||
// Prevent duplicate instances. Without this, double-clicking the app icon
|
||||
// (or macOS auto-launch + manual launch overlapping) spawns two independent
|
||||
// processes — each with its own backend on a different port — resulting in
|
||||
// one populated window and one empty window.
|
||||
const gotLock = app.requestSingleInstanceLock();
|
||||
if (!gotLock) {
|
||||
app.quit();
|
||||
} else {
|
||||
app.on('second-instance', () => {
|
||||
if (mainWindow) {
|
||||
if (mainWindow.isMinimized()) mainWindow.restore();
|
||||
mainWindow.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
app.commandLine.appendSwitch('disable-features', 'HardwareMediaKeyHandling');
|
||||
app.commandLine.appendSwitch('ignore-gpu-blocklist');
|
||||
app.commandLine.appendSwitch('enable-gpu-rasterization');
|
||||
|
||||
Reference in New Issue
Block a user