From 2508e491d5a827fd54abedaf70da5c8fca40c6c3 Mon Sep 17 00:00:00 2001 From: Agus Zubiaga Date: Tue, 29 Apr 2025 19:21:16 -0300 Subject: [PATCH] agent: Discourage long-running commands (#29627) Adds popular examples of long-running commands to system prompt. Unfortunately, I couldn't add an eval example as the new terminal tool no longer works in `eval`. We can look into that tomorrow, but I'm seeing improvements when manually testing this, so I'd like to merge it. Release Notes: - agent: Discourage long-running commands --- assets/prompts/assistant_system_prompt.hbs | 1 + crates/assistant_tools/src/terminal_tool/description.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/prompts/assistant_system_prompt.hbs b/assets/prompts/assistant_system_prompt.hbs index 06e29b2cbd..bdd2a211e4 100644 --- a/assets/prompts/assistant_system_prompt.hbs +++ b/assets/prompts/assistant_system_prompt.hbs @@ -15,6 +15,7 @@ You are a highly skilled software engineer with extensive knowledge in many prog 3. DO NOT use tools to access items that are already available in the context section. 4. Use only the tools that are currently available. 5. DO NOT use a tool that is not available just because it appears in the conversation. This means the user turned it off. +6. NEVER run commands that don't terminate on their own such as web servers (like `npm run start`, `npm run dev`, `python -m http.server`, etc) or file watchers. ## Searching and Reading diff --git a/crates/assistant_tools/src/terminal_tool/description.md b/crates/assistant_tools/src/terminal_tool/description.md index 0b0501aae4..3cb5d87d16 100644 --- a/crates/assistant_tools/src/terminal_tool/description.md +++ b/crates/assistant_tools/src/terminal_tool/description.md @@ -6,6 +6,6 @@ The output results will be shown to the user already, only list it again if nece Make sure you use the `cd` parameter to navigate to one of the root directories of the project. NEVER do it as part of the `command` itself, otherwise it will error. -Do not use this tool for commands that run indefinitely, such as servers (e.g., `python -m http.server`) or file watchers that don't terminate on their own. +Do not use this tool for commands that run indefinitely, such as servers (like `npm run start`, `npm run dev`, `python -m http.server`, etc) or file watchers that don't terminate on their own. Remember that each invocation of this tool will spawn a new shell process, so you can't rely on any state from previous invocations.