diff --git a/packages/agent/src/core/toolAgent/config.ts b/packages/agent/src/core/toolAgent/config.ts index d1fc8db..148d6c5 100644 --- a/packages/agent/src/core/toolAgent/config.ts +++ b/packages/agent/src/core/toolAgent/config.ts @@ -136,5 +136,6 @@ export function getDefaultSystemPrompt(toolContext: ToolContext): string { 'When you run into issues or unexpected results, take a step back and read the project documentation and configuration files and look at other source files in the project for examples of what works.', '', 'Use sub-agents for parallel tasks, providing them with specific context they need rather than having them rediscover it.', + toolContext.customPrompt ? `\n\n${toolContext.customPrompt}` : '', ].join('\n'); } diff --git a/packages/agent/src/core/types.ts b/packages/agent/src/core/types.ts index 4e66a80..1479ff7 100644 --- a/packages/agent/src/core/types.ts +++ b/packages/agent/src/core/types.ts @@ -17,6 +17,7 @@ export type ToolContext = { pageFilter: pageFilter; tokenTracker: TokenTracker; githubMode: boolean; + customPrompt?: string; }; export type Tool, TReturn = any> = { diff --git a/packages/agent/src/tools/interaction/subAgent.ts b/packages/agent/src/tools/interaction/subAgent.ts index d175bdf..da07f5a 100644 --- a/packages/agent/src/tools/interaction/subAgent.ts +++ b/packages/agent/src/tools/interaction/subAgent.ts @@ -99,6 +99,7 @@ export const subAgentTool: Tool = { const result = await toolAgent(prompt, tools, config, { ...context, workingDirectory: workingDirectory ?? context.workingDirectory, + customPrompt: context.customPrompt, }); return { response: result.result }; }, diff --git a/packages/agent/src/tools/io/textEditor.ts b/packages/agent/src/tools/io/textEditor.ts index ce487ea..ce31909 100644 --- a/packages/agent/src/tools/io/textEditor.ts +++ b/packages/agent/src/tools/io/textEditor.ts @@ -56,7 +56,6 @@ const parameterSchema = z.object({ ), description: z .string() - .max(80) .describe('The reason you are using the text editor (max 80 chars)'), }); diff --git a/packages/cli/README.md b/packages/cli/README.md index dade377..49a268b 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -122,6 +122,7 @@ mycoder --modelProvider openai --modelName gpt-4o-2024-05-13 "Your prompt here" - `userSession`: Use user's existing browser session instead of sandboxed session (default: `false`) - `pageFilter`: Method to process webpage content: 'simple', 'none', or 'readability' (default: `none`) - `ollamaBaseUrl`: Base URL for Ollama API (default: `http://localhost:11434/api`) +- `customPrompt`: Custom instructions to append to the system prompt for both main agent and sub-agents (default: `""`) Example: @@ -137,6 +138,9 @@ mycoder config set pageFilter readability # Set custom Ollama server URL mycoder config set ollamaBaseUrl http://your-ollama-server:11434/api + +# Set custom instructions for the agent +mycoder config set customPrompt "Always prioritize readability and simplicity in your code. Prefer TypeScript over JavaScript when possible." ``` ## Environment Variables diff --git a/packages/cli/src/commands/$default.ts b/packages/cli/src/commands/$default.ts index da353e1..0530f34 100644 --- a/packages/cli/src/commands/$default.ts +++ b/packages/cli/src/commands/$default.ts @@ -191,6 +191,7 @@ export const command: CommandModule = { workingDirectory: '.', tokenTracker, githubMode: config.githubMode, + customPrompt: config.customPrompt, }); const output = diff --git a/packages/cli/src/settings/config.ts b/packages/cli/src/settings/config.ts index f7fe29f..7f131ac 100644 --- a/packages/cli/src/settings/config.ts +++ b/packages/cli/src/settings/config.ts @@ -15,6 +15,7 @@ const defaultConfig = { modelProvider: 'anthropic', modelName: 'claude-3-7-sonnet-20250219', ollamaBaseUrl: 'http://localhost:11434/api', + customPrompt: '', }; export type Config = typeof defaultConfig;