项目文件夹

文件
wehub-resource-sync 8a21a212f8
Deploy Documentation / deploy (push) Has been cancelled
Canary / build-cli (push) Has been skipped
Canary / Upload Install Script (push) Has been skipped
Canary / bundle-desktop (push) Has been skipped
Canary / bundle-desktop-intel (push) Has been skipped
Canary / bundle-desktop-linux (push) Has been skipped
Canary / bundle-desktop-windows (push) Has been skipped
Canary / bundle-desktop-windows-cuda (push) Has been skipped
Canary / Release (push) Has been skipped
Cargo Deny / deny (push) Has been skipped
Unused Dependencies / machete (push) Has been skipped
Canary / Prepare Version (push) Failing after 1s
Live Provider Tests / check-fork (push) Failing after 0s
Create Minor Release PR / check-version-bump-pr (push) Has been skipped
Publish Ask AI Bot Docker Image / docker (push) Failing after 1s
Live Provider Tests / changes (push) Has been skipped
Scorecard supply-chain security / Scorecard analysis (push) Has been skipped
Publish Docker Image / docker (push) Failing after 1s
CI / changes (push) Failing after 8s
Create Minor Release PR / release (push) Has been skipped
Live Provider Tests / Smoke Tests (push) Has been cancelled
Live Provider Tests / Smoke Tests (Code Execution) (push) Has been cancelled
Live Provider Tests / Compaction Tests (push) Has been cancelled
CI / Build Rust Project on Windows (push) Has been cancelled
Live Provider Tests / Build Binary (push) Has been cancelled
CI / Lint Rust Code (push) Has been cancelled
CI / Check Generated Schemas are Up-to-Date (push) Has been cancelled
CI / Test and Lint Electron Desktop App (push) Has been cancelled
CI / Check Rust Code Format (push) Has been cancelled
CI / Build and Test Rust Project (push) Has been cancelled
CI / Check MSRV (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:04:08 +08:00

1.8 KiB

title
title
Error Handling

Error Handling in goose

Error handling is a key performance-driving part of goose. There are many ways that the non-determinism in the LLM can introduce an error that it can in turn recover from. In a typical goose session, it's expected for there to be several agent errors that the model can see directly and correct, perhaps entirely behind the scenes.

Traditional Errors

While the agent is operating, there can be intermittent issues in the network, availability of the foundational model, etc. These are raised as errors in the agent API to the caller, who can decide how to handle that. We generally handle these with anyhow::Error.

Agent Errors

There are several types of errors where everything is working correctly, but the model generations themselves are somehow causing errors. Things like generating an unknown tool name, incorrect parameters, or a well formed tool call that results in an error in the tool itself. All of these can be surfaced to the LLM to have it attempt to recover.

The error messages are in some ways prompting - they give instructions to the LLM on how it might go about recovering. We handle these with thiserror::Error and carefully maintain a collection.

To cover all these cases, both ToolUse and ToolResult are typically passed through the API as part of a Result<T, AgentError>. An error in a ToolUse will immediately become an error in a ToolResult and passed back to the LLM. A valid ToolUse might still end up in an error ToolResult, which is also passed back to the LLM.

The providers then handle translating the agent errors into the various API specs as valid messages.