mirror of
https://github.com/aaif-goose/goose.git
synced 2026-07-03 14:10:03 +02:00
docs: sessions reorg and conversation features (#4462)
Co-authored-by: Rizel Scarlett <rizel@squareup.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 <URL>`**: Add remote extensions over Streaming HTTP (can be used multiple times in the same command)
|
||||
- **`--with-builtin <n>`**: 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 <NUMBER>`**: [Maximum number of turns](/docs/guides/smart-context-management#maximum-turns) allowed without user input (default: 1000)
|
||||
- **`--max-turns <NUMBER>`**: [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 <NUMBER>`**: Limit the maximum number of turns the agent can take before asking for user input to continue (default: 1000)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
sidebar_position: 6
|
||||
title: Goose Permission Modes
|
||||
sidebar_label: Goose Permissions
|
||||
---
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"label": "Rich Interactive Chat",
|
||||
"position": 6,
|
||||
"position": 8,
|
||||
"link": {
|
||||
"type": "doc",
|
||||
"id": "guides/interactive-chat/index"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
sidebar_position: 3
|
||||
title: Managing Projects
|
||||
sidebar_label: Managing Projects
|
||||
---
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"label": "Managing Tools",
|
||||
"position": 2,
|
||||
"position": 4,
|
||||
"link": {
|
||||
"type": "doc",
|
||||
"id": "guides/managing-tools/index"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"label": "Recipes",
|
||||
"position": 1,
|
||||
"position": 2,
|
||||
"link": {
|
||||
"type": "doc",
|
||||
"id": "guides/recipes/index"
|
||||
|
||||
@@ -55,7 +55,7 @@ You can turn your current Goose session into a reusable recipe that includes the
|
||||
</TabItem>
|
||||
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
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:
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"label": "Managing Sessions",
|
||||
"position": 1,
|
||||
"link": {
|
||||
"type": "doc",
|
||||
"id": "guides/sessions/index"
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
|
||||
1. Hover over any of your previous messages to reveal the edit button
|
||||
2. Click the <Edit2 className="inline" size={16} /> 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.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
Message editing is not available in the Goose CLI.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## 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.
|
||||
:::
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
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 <GripVertical className="inline" size={16} /> button, then grab it and drag the message up or down
|
||||
- **Send a message**: Click the <Send className="inline" size={16} /> button to send a message immediately and interrupt the current task
|
||||
- **Delete a message**: Click the <X className="inline" size={16} /> button to delete the message
|
||||
- **Clear the queue**: Click `Clear All` on the **Message Queue** card
|
||||
- **Collapse or expand the queue**: Click the <ChevronUp className="inline" size={16} /> or <ChevronDown className="inline" size={16} /> 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.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
Message queuing is not available in the Goose CLI.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## 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
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
|
||||
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
|
||||
:::
|
||||
|
||||
<details>
|
||||
<summary>Interruption Keywords List</summary>
|
||||
|
||||
**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)
|
||||
|
||||
</details>
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
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.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Voice Dictation
|
||||
Speak to Goose directly instead of typing your prompts.
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
To enable voice dictation:
|
||||
1. Click the <PanelLeft className="inline" size={16} /> 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
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
Voice dictation is not available in the Goose CLI.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Share Files in Session
|
||||
|
||||
Provide Goose with context from your codebase, documents, and other files to get more relevant and accurate assistance.
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
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 <Paperclip className="inline" size={16} /> 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
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
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<tab>
|
||||
|
||||
# Use shell expansion
|
||||
Review these test files: ./tests/*.rs
|
||||
```
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -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';
|
||||
|
||||
<h1 className={styles.pageTitle}>Managing Sessions</h1>
|
||||
<p className={styles.pageDescription}>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<div className={styles.categorySection}>
|
||||
<h2 className={styles.categoryTitle}>📚 Documentation & Guides</h2>
|
||||
<div className={styles.cardGrid}>
|
||||
<Card
|
||||
title="Session Management"
|
||||
description="Learn how to start, resume, or search sessions, and perform other session management tasks."
|
||||
link="/docs/guides/sessions/session-management"
|
||||
/>
|
||||
<Card
|
||||
title="In-Session Actions"
|
||||
description="Discover features you can use to share information and communicate with Goose during sessions."
|
||||
link="/docs/guides/sessions/in-session-actions"
|
||||
/>
|
||||
<Card
|
||||
title="Smart Context Management"
|
||||
description="Maintain productive sessions using features that help manage context and conversation limits."
|
||||
link="/docs/guides/sessions/smart-context-management"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className={styles.categorySection}>
|
||||
<h2 className={styles.categoryTitle}>📝 Featured Blog Posts</h2>
|
||||
<div className={styles.cardGrid}>
|
||||
<Card
|
||||
title="6 Essential Tips for Working with Goose"
|
||||
description="Learn how focused sessions, step-by-step guidance, and refining your prompts can lead to more productive sessions."
|
||||
link="/blog/2025/03/06/goose-tips"
|
||||
/>
|
||||
<Card
|
||||
title="AI Prompting 101: How to Get the Best Responses from Your AI Agent"
|
||||
description="Make your sessions more effective by adding structure to your prompts."
|
||||
link="/blog/2025/03/19/better-ai-prompting"
|
||||
/>
|
||||
<Card
|
||||
title="The AI Skeptic’s Guide to Context Windows"
|
||||
description="Learn how context windows, tokens, and Goose help you manage memory and long conversations."
|
||||
link="/blog/2025/08/18/understanding-context-windows"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
+14
-76
@@ -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).
|
||||
:::
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
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.
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="same-directory" label="Same Directory" default>
|
||||
|
||||
To start a session in the same window:
|
||||
To start a session in the same Goose window:
|
||||
1. Click the <PanelLeft className="inline" size={16} /> 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 <AppWindow className="inline" size={16} /> 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
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
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
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
:::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
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
@@ -282,7 +283,7 @@ You can resume a CLI session in Desktop.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Project-Based Sessions
|
||||
### Resume Project-Based Sessions
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
@@ -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).
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Voice Dictation
|
||||
Speak to Goose directly instead of typing your prompts.
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
To enable voice dictation:
|
||||
1. Click the <PanelLeft className="inline" size={16} /> 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.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
Voice dictation is not available in the Goose CLI.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Share Files in Session
|
||||
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
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 <Paperclip className="inline" size={16} /> 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.
|
||||
</TabItem>
|
||||
<TabItem value="cli" label="Goose CLI">
|
||||
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<tab>
|
||||
|
||||
# Use shell expansion
|
||||
Review these test files: ./tests/*.rs
|
||||
```
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
+3
-2
@@ -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
|
||||
<Tabs groupId="interface">
|
||||
<TabItem value="ui" label="Goose Desktop" default>
|
||||
|
||||
1. Click the scroll text icon <ScrollText className="inline" size={16} /> 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 <ScrollText className="inline" size={16} /> `Summarize now` in the context window that appears
|
||||
2. Confirm the summarization in the modal
|
||||
3. View or edit the generated summary if needed
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
sidebar_position: 5
|
||||
title: Updating Goose
|
||||
sidebar_label: Updating Goose
|
||||
---
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Providing Hints to Goose
|
||||
sidebar_position: 4
|
||||
sidebar_position: 7
|
||||
sidebar_label: Using Goosehints
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user