diff --git a/documentation/docs/guides/config-file.md b/documentation/docs/guides/config-file.md index 13e944cd0e78..b6a8110e571f 100644 --- a/documentation/docs/guides/config-file.md +++ b/documentation/docs/guides/config-file.md @@ -23,7 +23,7 @@ The following settings can be configured at the root level of your config.yaml f | `GOOSE_MODEL` | Default model to use | Model name (e.g., "claude-3.5-sonnet", "gpt-4") | None | Yes | | `GOOSE_TEMPERATURE` | Model response randomness | Float between 0.0 and 1.0 | Model-specific | No | | `GOOSE_MODE` | [Tool execution behavior](/docs/guides/goose-permissions) | "auto", "approve", "chat", "smart_approve" | "smart_approve" | No | -| `GOOSE_MAX_TURNS` | [Maximum number of turns](/docs/guides/smart-context-management#maximum-turns) allowed without user input | Integer (e.g., 10, 50, 100) | 1000 | No | +| `GOOSE_MAX_TURNS` | [Maximum number of turns](/docs/guides/sessions/smart-context-management#maximum-turns) allowed without user input | Integer (e.g., 10, 50, 100) | 1000 | No | | `GOOSE_LEAD_PROVIDER` | Provider for lead model in [lead/worker mode](/docs/guides/environment-variables#leadworker-model-configuration) | Same as `GOOSE_PROVIDER` options | Falls back to `GOOSE_PROVIDER` | No | | `GOOSE_LEAD_MODEL` | Lead model for lead/worker mode | Model name | None | No | | `GOOSE_PLANNER_PROVIDER` | Provider for [planning mode](/docs/guides/creating-plans) | Same as `GOOSE_PROVIDER` options | Falls back to `GOOSE_PROVIDER` | No | @@ -35,7 +35,7 @@ The following settings can be configured at the root level of your config.yaml f | `GOOSE_CLI_SHOW_COST` | Show estimated cost for token use in the CLI | true/false | false | No | | `GOOSE_ALLOWLIST` | URL for allowed extensions | Valid URL | None | No | | `GOOSE_RECIPE_GITHUB_REPO` | GitHub repository for recipes | Format: "org/repo" | None | No | -| `GOOSE_AUTO_COMPACT_THRESHOLD` | Set the percentage threshold at which Goose [automatically summarizes your session](/docs/guides/smart-context-management.md#automatic-compaction). | Float between 0.0 and 1.0 (disabled at 0.0)| 0.8 | No | +| `GOOSE_AUTO_COMPACT_THRESHOLD` | Set the percentage threshold at which Goose [automatically summarizes your session](/docs/guides/sessions/smart-context-management#automatic-compaction). | Float between 0.0 and 1.0 (disabled at 0.0)| 0.8 | No | ## Experimental Features diff --git a/documentation/docs/guides/environment-variables.md b/documentation/docs/guides/environment-variables.md index 0155f1dbec8f..995500b88870 100644 --- a/documentation/docs/guides/environment-variables.md +++ b/documentation/docs/guides/environment-variables.md @@ -106,14 +106,14 @@ These variables control how Goose manages conversation sessions and context. | Variable | Purpose | Values | Default | |----------|---------|---------|---------| | `GOOSE_CONTEXT_STRATEGY` | Controls how Goose handles context limit exceeded situations | "summarize", "truncate", "clear", "prompt" | "prompt" (interactive), "summarize" (headless) | -| `GOOSE_MAX_TURNS` | [Maximum number of turns](/docs/guides/smart-context-management#maximum-turns) allowed without user input | Integer (e.g., 10, 50, 100) | 1000 | +| `GOOSE_MAX_TURNS` | [Maximum number of turns](/docs/guides/sessions/smart-context-management#maximum-turns) allowed without user input | Integer (e.g., 10, 50, 100) | 1000 | | `CONTEXT_FILE_NAMES` | Specifies custom filenames for [hint/context files](/docs/guides/using-goosehints#custom-context-files) | JSON array of strings (e.g., `["CLAUDE.md", ".goosehints"]`) | `[".goosehints"]` | | `GOOSE_CLI_THEME` | [Theme](/docs/guides/goose-cli-commands#themes) for CLI response markdown | "light", "dark", "ansi" | "dark" | | `GOOSE_SCHEDULER_TYPE` | Controls which scheduler Goose uses for [scheduled recipes](/docs/guides/recipes/session-recipes.md#schedule-recipe) | "legacy" or "temporal" | "legacy" (Goose's built-in cron scheduler) | | `GOOSE_TEMPORAL_BIN` | Optional custom path to your Temporal binary | /path/to/temporal-service | None | | `GOOSE_RANDOM_THINKING_MESSAGES` | Controls whether to show amusing random messages during processing | "true", "false" | "true" | | `GOOSE_CLI_SHOW_COST` | Toggles display of model cost estimates in CLI output | "true", "1" (case insensitive) to enable | false | -| `GOOSE_AUTO_COMPACT_THRESHOLD` | Set the percentage threshold at which Goose [automatically summarizes your session](/docs/guides/smart-context-management.md#automatic-compaction). | Float between 0.0 and 1.0 (disabled at 0.0) | 0.8 | +| `GOOSE_AUTO_COMPACT_THRESHOLD` | Set the percentage threshold at which Goose [automatically summarizes your session](/docs/guides/sessions/smart-context-management#automatic-compaction). | Float between 0.0 and 1.0 (disabled at 0.0) | 0.8 | **Examples** @@ -180,7 +180,7 @@ export GOOSE_WORKER_CONTEXT_LIMIT=128000 # Smaller context for execution export GOOSE_PLANNER_CONTEXT_LIMIT=1000000 ``` -For more details and examples, see [Model Context Limit Overrides](/docs/guides/smart-context-management#model-context-limit-overrides). +For more details and examples, see [Model Context Limit Overrides](/docs/guides/sessions/smart-context-management#model-context-limit-overrides). ## Tool Configuration diff --git a/documentation/docs/guides/goose-cli-commands.md b/documentation/docs/guides/goose-cli-commands.md index 821c857f901a..23464dfb05ae 100644 --- a/documentation/docs/guides/goose-cli-commands.md +++ b/documentation/docs/guides/goose-cli-commands.md @@ -192,7 +192,7 @@ goose configure --- -#### Set the [maximum number of turns](/docs/guides/smart-context-management#maximum-turns) allowed without user input (default: 1000) +#### Set the [maximum number of turns](/docs/guides/sessions/smart-context-management#maximum-turns) allowed without user input (default: 1000) **Options:** @@ -384,7 +384,7 @@ Execute commands from an instruction file or stdin. Check out the [full guide](/ - **`--with-streamable-http-extension `**: Add remote extensions over Streaming HTTP (can be used multiple times in the same command) - **`--with-builtin `**: Add builtin extensions by name (e.g., 'developer' or multiple: 'developer,github') - **`--debug`**: Output complete tool responses, detailed parameter values, and full file paths -- **`--max-turns `**: [Maximum number of turns](/docs/guides/smart-context-management#maximum-turns) allowed without user input (default: 1000) +- **`--max-turns `**: [Maximum number of turns](/docs/guides/sessions/smart-context-management#maximum-turns) allowed without user input (default: 1000) - **`--explain`**: Show a recipe's title, description, and parameters - **`--no-session`**: Run goose commands without creating or storing a session file - **`--max-turns `**: Limit the maximum number of turns the agent can take before asking for user input to continue (default: 1000) diff --git a/documentation/docs/guides/goose-permissions.md b/documentation/docs/guides/goose-permissions.md index 7dd685fa9a1a..1756e3a594ec 100644 --- a/documentation/docs/guides/goose-permissions.md +++ b/documentation/docs/guides/goose-permissions.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 6 title: Goose Permission Modes sidebar_label: Goose Permissions --- diff --git a/documentation/docs/guides/handling-llm-rate-limits-with-goose.md b/documentation/docs/guides/handling-llm-rate-limits-with-goose.md index 8b3fb6df6bb3..d04c207262d6 100644 --- a/documentation/docs/guides/handling-llm-rate-limits-with-goose.md +++ b/documentation/docs/guides/handling-llm-rate-limits-with-goose.md @@ -1,7 +1,7 @@ --- title: Set LLM Rate Limits sidebar_label: LLM Rate Limits -sidebar_position: 8 +sidebar_position: 9 --- import Tabs from '@theme/Tabs'; diff --git a/documentation/docs/guides/interactive-chat/_category_.json b/documentation/docs/guides/interactive-chat/_category_.json index e5106893a2fc..488d3ef1a592 100644 --- a/documentation/docs/guides/interactive-chat/_category_.json +++ b/documentation/docs/guides/interactive-chat/_category_.json @@ -1,6 +1,6 @@ { "label": "Rich Interactive Chat", - "position": 6, + "position": 8, "link": { "type": "doc", "id": "guides/interactive-chat/index" diff --git a/documentation/docs/guides/managing-projects.md b/documentation/docs/guides/managing-projects.md index 8136cdd2bc73..c566739c5cd8 100644 --- a/documentation/docs/guides/managing-projects.md +++ b/documentation/docs/guides/managing-projects.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 3 title: Managing Projects sidebar_label: Managing Projects --- diff --git a/documentation/docs/guides/managing-tools/_category_.json b/documentation/docs/guides/managing-tools/_category_.json index 68371deb5753..c079497e5c75 100644 --- a/documentation/docs/guides/managing-tools/_category_.json +++ b/documentation/docs/guides/managing-tools/_category_.json @@ -1,6 +1,6 @@ { "label": "Managing Tools", - "position": 2, + "position": 4, "link": { "type": "doc", "id": "guides/managing-tools/index" diff --git a/documentation/docs/guides/recipes/_category_.json b/documentation/docs/guides/recipes/_category_.json index 74096a0269af..d2c9819d6766 100644 --- a/documentation/docs/guides/recipes/_category_.json +++ b/documentation/docs/guides/recipes/_category_.json @@ -1,6 +1,6 @@ { "label": "Recipes", - "position": 1, + "position": 2, "link": { "type": "doc", "id": "guides/recipes/index" diff --git a/documentation/docs/guides/recipes/session-recipes.md b/documentation/docs/guides/recipes/session-recipes.md index c678543115f4..ae785509cec4 100644 --- a/documentation/docs/guides/recipes/session-recipes.md +++ b/documentation/docs/guides/recipes/session-recipes.md @@ -55,7 +55,7 @@ You can turn your current Goose session into a reusable recipe that includes the - Recipe files can be either JSON (.json) or YAML (.yaml) files. While in a [session](/docs/guides/managing-goose-sessions#start-session), run this command to generate a recipe.yaml file in your current directory: + Recipe files can be either JSON (.json) or YAML (.yaml) files. While in a [session](/docs/guides/sessions/session-management#start-session), run this command to generate a recipe.yaml file in your current directory: ```sh /recipe @@ -441,7 +441,7 @@ You can turn your current Goose session into a reusable recipe that includes the ``` :::info - If you want to validate a recipe you just created, you need to [exit the session](/docs/guides/managing-goose-sessions#exit-session) before running the [`validate` subcommand](/docs/guides/goose-cli-commands#recipe). + If you want to validate a recipe you just created, you need to [exit the session](/docs/guides/sessions/session-management#exit-session) before running the [`validate` subcommand](/docs/guides/goose-cli-commands#recipe). ::: Recipe validation can be useful for: diff --git a/documentation/docs/guides/sessions/_category_.json b/documentation/docs/guides/sessions/_category_.json new file mode 100644 index 000000000000..40bce66285eb --- /dev/null +++ b/documentation/docs/guides/sessions/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Managing Sessions", + "position": 1, + "link": { + "type": "doc", + "id": "guides/sessions/index" + } +} \ No newline at end of file diff --git a/documentation/docs/guides/sessions/in-session-actions.md b/documentation/docs/guides/sessions/in-session-actions.md new file mode 100644 index 000000000000..f1c97b14eb3a --- /dev/null +++ b/documentation/docs/guides/sessions/in-session-actions.md @@ -0,0 +1,260 @@ +--- +sidebar_position: 2 +title: In-Session Actions +sidebar_label: In-Session Actions +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import { PanelLeft, Paperclip, Edit2, Send, GripVertical, X, ChevronUp, ChevronDown } from 'lucide-react'; + +Goose provides features you can use to manage conversations and share information during sessions. + +## Edit Message + +Edit your previously sent messages to refine conversations and correct course. + +Editing any message in the session gives you complete control over the conversation history by overwriting all the context that follows the edited message. Your change can be as simple as fixing a path in your last message or completely starting over from a given point. + +This is useful when: + +- You realize a prompt you sent was unclear or incomplete +- Goose misunderstood your intent and went in the wrong direction +- You want to try different approaches to a problem without starting a new session + + + + + 1. Hover over any of your previous messages to reveal the edit button + 2. Click the edit button that appears + 3. Make your changes in the inline editor + 4. Click `Save` to save your changes and reprompt Goose (or use `Cmd+Enter` (macOS) or `Ctrl+Enter` (Windows/Linux)) + + Goose removes all conversation history after the edited message and responds contextually from that point. + + :::warning Deleted Context + Subsequent conversation history is permanently deleted from the session and removed from Goose's context. Edit a message only if you don't need Goose to remember the context that follows it. + ::: + + #### Example Message Flow + + Your original conversation has five messages. After editing message 3, the conversation continues from that point, and all message and response context from messages 4 and 5 is deleted. + + ``` + ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ + │ 1 │ -> │ 2 │ -> │ 3 │ -> │ 4 │ -> │ 5 │ + └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ + + Edit here + ↓ + ┌─────┐ ┌─────┐ ┌─────┐ conversation + │ 1 │ -> │ 2 │ -> │ 3 │ -> continues + └─────┘ └─────┘ └─────┘ from here + ``` + + #### Editing Scenario Tips + + - **Iterative Prompt Refinement**: Start with a basic prompt, then edit and refine based on Goose's response. This often works better than trying to craft the perfect prompt from the start. + - **When to Edit vs. Interrupt**: Editing earlier messages when a conversation has gone off track can be more effective than trying to correct course using new messages or [interruptions](#interrupt-task). By editing messages, you rewrite history. With interruptions, you only affect the conversation from the current message onwards. + + + + Message editing is not available in the Goose CLI. + + + +## Queue Messages + +Queue messages while Goose is processing a task to manage your workflow. This is useful when: + +- You want to prepare next steps while Goose is working +- You have a sequence of related tasks to complete +- You're using [voice dictation](#voice-dictation) and need to capture thoughts quickly + +:::tip +Goose may perform better when complex tasks are split into subtasks, a technique called [*prompt chaining*](https://www.promptingguide.ai/techniques/prompt_chaining). This structured approach can both improve accuracy and give you more control over the process. +::: + + + + Add a message to the queue: + 1. While Goose is processing a response, type your next message + 2. Press `Enter` to add it to the queue (or interrupts if using [interruption keywords](#interrupt-task)) + + Queued messages appear as numbered cards showing the queue order. The first message in the queue is automatically sent when Goose finishes each response. + + :::info Related Features + - In general, pressing `Enter` while Goose is processing a task queues the message, but clicking `Send` sends the task immediately and [interrupts the task](#interrupt-task) + - When you type common interrupt keywords like "stop", "wait", or "hold on" in a queued message, Goose pauses until you enter or send the next message and then continues processing the queue + ::: + + #### Queue Management Controls + + Queued messages run automatically in order as Goose finishes each task, but you can manage the queue: + - **Edit a message**: Click the message text to reveal the edit controls, then type your change and click `Save` + - **Reorder messages**: Hover over the message card to reveal the button, then grab it and drag the message up or down + - **Send a message**: Click the button to send a message immediately and interrupt the current task + - **Delete a message**: Click the button to delete the message + - **Clear the queue**: Click `Clear All` on the **Message Queue** card + - **Collapse or expand the queue**: Click the or button on the **Message Queue** card + + #### Example Message Flow + + **Without queuing:** + + You send: "Can you refactor our authentication code to support OAuth 2.0 and add proper error handling? Also include unit tests for the OAuth flow, update the API documentation to reflect these changes, and create a migration script to help existing users transition to the new system." + + This approach might lead to overwhelming responses where important details get missed or tasks are handled superficially. Even sending a single prompt with clear sequential steps doesn't allow Goose to focus on each task individually or build context progressively. + + **With queuing:** + + 1. You send: "Refactor the authentication code to support OAuth 2.0" + 2. While Goose is working, you queue the following messages: + - "And add proper error handling" + - "Add unit tests for the OAuth flow" + - "Update the API documentation" + - "Create migration script for existing users" + + Each task builds on the previous one. + + + + Message queuing is not available in the Goose CLI. + + + +## Interrupt Task + +Interrupt Goose while it's processing a task to take control of the conversation. This is useful when: + +- Goose is heading in the wrong direction +- You realize you need to add important context +- You want to switch to a completely different task + + + + + There are two ways to interrupt a task: + + #### Send interruption keyword + 1. Type a prompt that includes common interruption keywords like `stop`, `wait`, `hold on`, `actually`, or `instead`. Using keywords alone or at the beginning of sentences works best for reliable detection. + 2. Click `Send` + + Goose stops processing the current task and asks for more information. + + #### Provide immediate redirection + 1. Type a prompt with more context and clarification or that changes direction. For example: + - "I forgot to mention this is for a mobile app" + - "Let's focus on React instead of TypeScript" + 2. Click `Send` + + Goose stops processing the current task and pivots to the new request context. + + :::info Related features + - Clicking `Send` while Goose is processing a task interrupts the task but pressing `Enter` [queues the message](#queue-messages) + - Typing a stop or pause keyword in a queued message also stops Goose from processing the current task + - You can also [edit a sent message](#edit-message) to provide more context and clarification or change direction during a session + ::: + +
+ Interruption Keywords List + + **High-priority keywords** (interrupt in any context): + ``` + stop, halt, cease, quit, end, abort, cancel, wait, hold, pause, hold on, wait up, hold up + ``` + + **Medium-priority keywords** (interrupt only as exact matches or at beginning of sentences): + ``` + no, nope, nah, wrong, incorrect, not right, actually, instead, rather, better idea, change of plans, nevermind, never mind, forget it, ignore that, disregard + ``` + + **Detection Rules**: + - **Exact match** (100% confidence): Word/phrase matches exactly and always interrupts + - **Beginning of sentence** (very high confidence): Word/phrase starts your message and always interrupts + - **Short messages only** (high confidence): In messages ≤20 characters, only high-priority keywords interrupt + - **Case insensitive**: All detection is case-insensitive + + **Examples**: + - ✅ "stop" interrupts (exact match) + - ✅ "Wait, I meant something else" interrupts (beginning of sentence) + - ✅ "no" interrupts (short message, high-priority) + - ❌ "actually" in short message doesn't interrupt (medium-priority in short message) + - ✅ "Actually, let's try React instead" interrupts (beginning of sentence) + +
+ +
+ + 1. Press `Ctrl+C` to interrupt the current task + 2. Type your prompt that provides more context or changes direction + 3. Press `Enter` + + Goose responds contextually to your new request. + + +
+ +## Voice Dictation +Speak to Goose directly instead of typing your prompts. + + + + To enable voice dictation: + 1. Click the button in the top-left to open the sidebar + 2. Click `Settings` in the sidebar + 3. Click `Chat` + 4. Under `Voice Dictation`, toggle `Enable Voice Dictation` on + 5. Choose between `OpenAI Whisper` or `ElevenLabs` as your dictation provider + 6. Enter your API key for the provider you chose + + To use voice dictation: + 1. Return to the chat interface (click `Chat` in the sidebar) + 2. Click the microphone on the right of the chat box and begin speaking + + The first time you use voice dictation, Goose will request access to your microphone. While recording, you'll see a live waveform of your audio in the input field, a timer, and the current size of your recording. Click the microphone button again to finish recording. + + **If you don't see the microphone**, check the [models you have configured](/docs/getting-started/providers.md). ElevenLabs can be used as a dictation provider alongside any LLM, but OpenAI Whisper requires that you have an OpenAI model configured in Goose, even if using another LLM provider for chat. + + #### Important Notes + * You can record up to 10 minutes or 25MB of audio + * The audio is processed by your chosen provider (OpenAI or ElevenLabs) + * Voice input is appended to any existing text in the text input field, so you can combine typing and speaking your prompts + * Recordings are not stored locally after transcription + + + + Voice dictation is not available in the Goose CLI. + + + +## Share Files in Session + +Provide Goose with context from your codebase, documents, and other files to get more relevant and accurate assistance. + + + + Share files with Goose in several ways: + + 1. **Drag and Drop**: Simply drag files from your computer's file explorer/finder and drop them anywhere in the chat window. The file paths will be automatically added to your message. + + 2. **File Browser**: Click the button at the bottom of the app to open your system's file browser and select files + + 3. **Manual Path**: Type or paste the file path directly into the chat input + + 4. **Quick File Search**: Use the [`@` shortcut key](/docs/guides/file-management#quick-file-search-in-goose-desktop) to quickly find and include files + + + You can reference files by their paths directly in your messages. Since you're already in a terminal, you can use standard shell commands to help with file paths: + + ```bash + # Reference a specific file + What does this code do? ./src/main.rs + + # Use tab completion + Can you explain the function in ./src/lib + + # Use shell expansion + Review these test files: ./tests/*.rs + ``` + + \ No newline at end of file diff --git a/documentation/docs/guides/sessions/index.md b/documentation/docs/guides/sessions/index.md new file mode 100644 index 000000000000..7984773dce4d --- /dev/null +++ b/documentation/docs/guides/sessions/index.md @@ -0,0 +1,56 @@ +--- +title: Managing Sessions +hide_title: true +description: Manage your session lifecycle and ongoing interactions with Goose +--- + +import Card from '@site/src/components/Card'; +import styles from '@site/src/components/Card/styles.module.css'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +

Managing Sessions

+

+ Sessions are your continuous interactions with Goose. Each session maintains context and conversation history, enabling Goose to understand your ongoing work and provide relevant assistance. +

+ +
+

📚 Documentation & Guides

+
+ + + +
+
+
+

📝 Featured Blog Posts

+
+ + + +
+
diff --git a/documentation/docs/guides/managing-goose-sessions.md b/documentation/docs/guides/sessions/session-management.md similarity index 74% rename from documentation/docs/guides/managing-goose-sessions.md rename to documentation/docs/guides/sessions/session-management.md index 6a5f4dae4164..64519aa1f9f7 100644 --- a/documentation/docs/guides/managing-goose-sessions.md +++ b/documentation/docs/guides/sessions/session-management.md @@ -1,31 +1,36 @@ --- sidebar_position: 1 -title: Managing Goose Sessions -sidebar_label: Managing Sessions +title: Session Management +sidebar_label: Session Management --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import { AppWindow, PanelLeft, FolderDot, Paperclip, Copy, Edit2 } from 'lucide-react'; -A session is a single, continuous interaction between you and Goose, providing a space to ask questions and prompt action. In this guide, we'll cover how to start, exit, and resume a session. - +A session is a single, continuous interaction between you and Goose, providing a space to ask questions and prompt action. This guide covers how to manage the session lifecycle. ## Start Session +:::info First-time setup +In your first session, Goose prompts you to [set up an LLM (Large Language Model) provider](/docs/getting-started/installation#set-llm-provider). +::: + - After choosing an LLM provider, you'll see the session interface ready for use. Type your questions, tasks, or instructions directly into the input field, and Goose will immediately get to work. You can start a new session in the same directory or in a different directory. + When you open Goose, you'll see the session interface ready for use. Just type—[or speak](/docs/guides/sessions/in-session-actions#voice-dictation "Learn how to enable voice dictation")—your questions, requests, or instructions directly into the input field, and Goose will immediately get to work. + + When you're ready to work on a new task, you can start a new session in the same directory or a different one. This directory is where Goose reads and writes files by default. - To start a session in the same window: + To start a session in the same Goose window: 1. Click the button in the top-left to open the sidebar 2. Click `Home` in the sidebar 3. Send your first prompt from the chat box - To start a session in a new window: + To start a session in a new Goose window: 1. Click the button in the top-left 2. In the new Goose window, send your first prompt from the chat box @@ -54,7 +59,7 @@ A session is a single, continuous interaction between you and Goose, providing a - From your terminal, navigate to the directory from which you'd like to start, and run: + From your terminal, navigate to the directory from which you'd like to start, and run the [session](/docs/guides/goose-cli-commands#session-options) command: ```sh goose session ``` @@ -66,10 +71,6 @@ A session is a single, continuous interaction between you and Goose, providing a -:::info -If this is your first session, Goose will prompt you for an API key to access an LLM (Large Language Model) of your choice. For more information on setting up your API key, see the [Installation Guide](/docs/getting-started/installation#set-llm-provider). Here is the list of [supported LLMs](/docs/getting-started/providers). -::: - ## Name Session @@ -282,7 +283,7 @@ You can resume a CLI session in Desktop. -## Project-Based Sessions +### Resume Project-Based Sessions @@ -322,67 +323,4 @@ Export sessions to Markdown to share with your team, create documentation, archi For more details on export options, available flags, and output formats, see the [CLI commands documentation](/docs/guides/goose-cli-commands#session-export-options). - - -## Voice Dictation -Speak to Goose directly instead of typing your prompts. - - - - To enable voice dictation: - 1. Click the button in the top-left to open the sidebar - 2. Click `Settings` in the sidebar - 3. Click `Chat` - 4. Under `Voice Dictation`, toggle `Enable Voice Dictation` on - 5. Choose between `OpenAI Whisper` or `ElevenLabs` as your dictation provider - 6. Enter your API key for the provider you chose - - To use voice dictation: - 1. Return to the chat interface (click `Chat` in the sidebar) - 2. Click the microphone on the right of the chat box and begin speaking - - The first time you use voice dictation, Goose will request access to your microphone. While recording, you'll see a live waveform of your audio in the input field, a timer, and the current size of your recording. Click the microphone button again to finish recording. - - **If you don't see the microphone**, check the [models you have configured](/docs/getting-started/providers.md). ElevenLabs can be used as a dictation provider alongside any LLM, but OpenAI Whisper requires that you have an OpenAI model configured in Goose, even if using another LLM provider for chat. - - #### Important Notes - * You can record up to 10 minutes or 25MB of audio. - * The audio is processed by your chosen provider (OpenAI or ElevenLabs). - * Voice input is appended to any existing text in the text input field, so you can combine typing and speaking your prompts. - * Recordings are not stored locally after transcription. - - - - Voice dictation is not available in the Goose CLI. - - - -## Share Files in Session - - - - Share files with Goose in several ways: - - 1. **Drag and Drop**: Simply drag files from your computer's file explorer/finder and drop them anywhere in the chat window. The file paths will be automatically added to your message. - - 2. **File Browser**: Click the button at the bottom of the app to open your system's file browser and select files. - - 3. **Manual Path**: Type or paste the file path directly into the chat input. - - 4. **Quick File Search**: Use the [`@` shortcut key](/docs/guides/file-management#quick-file-search-in-goose-desktop) to quickly find and include files. - - - You can reference files by their paths directly in your messages. Since you're already in a terminal, you can use standard shell commands to help with file paths: - - ```bash - # Reference a specific file - What does this code do? ./src/main.rs - - # Use tab completion - Can you explain the function in ./src/lib - - # Use shell expansion - Review these test files: ./tests/*.rs - ``` - \ No newline at end of file diff --git a/documentation/docs/guides/smart-context-management.md b/documentation/docs/guides/sessions/smart-context-management.md similarity index 98% rename from documentation/docs/guides/smart-context-management.md rename to documentation/docs/guides/sessions/smart-context-management.md index 34f017b68fbd..a1057d8bd53d 100644 --- a/documentation/docs/guides/smart-context-management.md +++ b/documentation/docs/guides/sessions/smart-context-management.md @@ -1,6 +1,6 @@ --- title: Smart Context Management -sidebar_position: 22 +sidebar_position: 3 sidebar_label: Smart Context Management --- @@ -48,7 +48,8 @@ You can also trigger compaction manually before reaching context or token limits - 1. Click the scroll text icon in the chat interface + 1. Point to the token usage indicator dot next to the model name at the bottom of the app + 2. Click `Summarize now` in the context window that appears 2. Confirm the summarization in the modal 3. View or edit the generated summary if needed diff --git a/documentation/docs/guides/tips.md b/documentation/docs/guides/tips.md index 9232f484719e..b6b1bc09ab19 100644 --- a/documentation/docs/guides/tips.md +++ b/documentation/docs/guides/tips.md @@ -21,7 +21,7 @@ You can customize how much [supervision](/docs/guides/goose-permissions) Goose n Your experience with Goose is shaped by your [choice of LLM](/blog/2025/03/31/goose-benchmark), as it handles all the planning while Goose manages the execution. When choosing an LLM, consider its tool support, specific capabilities, and associated costs. ### Keep sessions short -LLMs have context windows, which are limits on how much conversation history they can retain. Once exceeded, they may forget earlier parts of the conversation. Monitor your token usage and [start new sessions](/docs/guides/managing-goose-sessions) as needed. +LLMs have context windows, which are limits on how much conversation history they can retain. Once exceeded, they may forget earlier parts of the conversation. Monitor your token usage and [start new sessions](/docs/guides/sessions/session-management) as needed. ### Turn off unnecessary extensions or tool Turning on too many extensions can degrade performance. Enable only essential [extensions and tools](/docs/guides/managing-tools/tool-permissions) to improve tool selection accuracy, save context window space, and stay within provider tool limits. diff --git a/documentation/docs/guides/updating-goose.md b/documentation/docs/guides/updating-goose.md index 0f3be7a2ad03..2dc9c03320e1 100644 --- a/documentation/docs/guides/updating-goose.md +++ b/documentation/docs/guides/updating-goose.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 5 title: Updating Goose sidebar_label: Updating Goose --- diff --git a/documentation/docs/guides/using-goosehints.md b/documentation/docs/guides/using-goosehints.md index 64201f1ca9de..2b3b42b17746 100644 --- a/documentation/docs/guides/using-goosehints.md +++ b/documentation/docs/guides/using-goosehints.md @@ -1,6 +1,6 @@ --- title: Providing Hints to Goose -sidebar_position: 4 +sidebar_position: 7 sidebar_label: Using Goosehints --- diff --git a/documentation/docs/quickstart.md b/documentation/docs/quickstart.md index ab457b137491..bc13d29d9b66 100644 --- a/documentation/docs/quickstart.md +++ b/documentation/docs/quickstart.md @@ -254,7 +254,7 @@ Here are some ideas for next steps: [openai-key]: https://platform.openai.com/api-keys [getting-started]: /docs/category/getting-started [providers]: /docs/getting-started/providers -[managing-sessions]: /docs/guides/managing-goose-sessions +[managing-sessions]: /docs/guides/sessions/session-management [contributing]: https://github.com/block/goose/blob/main/CONTRIBUTING.md [quick-tips]: /docs/guides/tips [extensions-guide]: /docs/getting-started/using-extensions diff --git a/documentation/docusaurus.config.ts b/documentation/docusaurus.config.ts index cd2194f91181..9acfbc1d3f27 100644 --- a/documentation/docusaurus.config.ts +++ b/documentation/docusaurus.config.ts @@ -110,6 +110,14 @@ const config: Config = { from: '/v1/extensions', to: '/extensions' }, + { + from: '/docs/guides/managing-goose-sessions', + to: '/docs/guides/sessions/session-management' + }, + { + from: '/docs/guides/smart-context-management', + to: '/docs/guides/sessions/smart-context-management' + }, { from: '/docs/guides/share-goose-sessions', to: '/docs/guides/recipes/session-recipes'