# v0.9.0 Release Notes

> v0.8.0 -> v0.9.0

## Summary

Adds file injection, image input, error memory, and web search caching as new user-facing capabilities, alongside a remove command and public API refactor that exposes session/agent selection for library consumers.

<details>
<summary>翻譯</summary>
新增檔案注入、圖片輸入、錯誤記憶與網路搜尋快取等使用者功能，同時新增 remove 指令並重構公開 API，將 Session / Agent 選取邏輯開放給函式庫使用者直接呼叫。
</details>

## Changes

### FEAT

- Add `--file <path>` flag to inject local file content into prompts as embedded text blocks
- Add `--image <path>` flag with multi-part message encoding for vision-capable providers
- Add `remember_error` and `search_errors` tools for persistent cross-session error memory
- Add file-based web search cache with SHA-256 keying and 1-hour TTL to reduce redundant DDG requests
- Add `remove` command for interactively removing configured providers from the keychain
- Split `list` into `list` (models) and `list skills` subcommands for clearer output

<details>
<summary>翻譯</summary>

- 新增 `--file <path>` 旗標，將本機檔案內容以嵌入文字區塊形式注入 prompt
- 新增 `--image <path>` 旗標，支援視覺模型的多部分訊息編碼
- 新增 `remember_error` 與 `search_errors` 工具，實現跨 Session 的持久化錯誤記憶
- 新增以 SHA-256 為 key、TTL 一小時的檔案型網路搜尋快取，減少重複 DDG 請求
- 新增 `remove` 指令，互動式移除已設定的 Provider
- 將 `list` 拆分為 `list`（模型）與 `list skills`（技能）子指令，輸出更清晰

</details>

### REFACTOR

- Expose `GetSession`, `SelectAgent`, `SelectSkill` as public API; add `Name()` method to `Agent` interface
- Set HTTP timeouts on browser fetch and API requests to prevent indefinite hangs
- Truncate oversized tool results before appending to session messages to avoid context overflow
- Rename `ExecData.Input` → `ExecData.Content`, `ExecData.Images` → `ExecData.ImageInputs`; add `ExecData.FileInputs`
- Deduplicate repeated identical tool calls via `alreadyCall` cache map in the execution loop

<details>
<summary>翻譯</summary>

- 將 `GetSession`、`SelectAgent`、`SelectSkill` 開放為公開 API；在 `Agent` 介面新增 `Name()` 方法
- 為瀏覽器擷取與 API 請求設定 HTTP 逾時，防止無限等待
- 在將工具結果附加至 Session 訊息前截斷過大內容，避免 context 溢出
- 將 `ExecData.Input` 重新命名為 `ExecData.Content`、`ExecData.Images` 為 `ExecData.ImageInputs`，並新增 `ExecData.FileInputs`
- 在執行迴圈中以 `alreadyCall` map 去重重複的工具呼叫

</details>

### UPDATE

- Refine agent/skill selector prompts to produce more deterministic routing decisions
- Simplify system prompt rules to reduce token usage while preserving behavioral constraints
- Support multi-word CLI input via joined args with `\n` escape support; add `run-allow` subcommand
- Increase conversation history limit and improve summary prompt formatting

<details>
<summary>翻譯</summary>

- 優化 Agent / Skill Selector 提示，提升路由決策的確定性
- 精簡系統提示規則，降低 token 用量，同時維持行為約束
- CLI 輸入支援多詞 arg 自動串接與 `\n` 跳脫；新增 `run-allow` 子指令
- 提高對話歷史保留上限，改善摘要提示格式

</details>

***

## Files Changed

| File | Status | Tag |
|------|--------|-----|
| `cmd/cli/main.go` | Modified | FEAT |
| `cmd/cli/removeProvider.go` | Added | FEAT |
| `cmd/cli/runEvents.go` | Modified | UPDATE |
| `internal/agents/exec/execute.go` | Modified | REFACTOR |
| `internal/agents/exec/getSession.go` | Modified | FEAT |
| `internal/agents/exec/run.go` | Modified | REFACTOR |
| `internal/agents/exec/selectAgent.go` | Modified | REFACTOR |
| `internal/agents/exec/selectSkill.go` | Modified | REFACTOR |
| `internal/agents/exec/toolCall.go` | Modified | REFACTOR |
| `internal/agents/exec/writeHistory.go` | Modified | REFACTOR |
| `internal/agents/exec/prompt/systemPrompt.md` | Modified | UPDATE |
| `internal/agents/exec/prompt/agentSelector.md` | Modified | UPDATE |
| `internal/agents/exec/prompt/skillSelector.md` | Modified | UPDATE |
| `internal/agents/exec/prompt/skillExtension.md` | Modified | UPDATE |
| `internal/agents/exec/prompt/summaryPrompt.md` | Modified | UPDATE |
| `internal/agents/provider/*/new.go` | Modified | REFACTOR |
| `internal/agents/provider/*/send.go` | Modified | REFACTOR |
| `internal/agents/types/agent.go` | Modified | REFACTOR |
| `internal/agents/types/message.go` | Modified | FEAT |
| `internal/tools/file/errorMemory.go` | Added | FEAT |
| `internal/tools/file/routes.go` | Modified | FEAT |
| `internal/tools/embed/tools.json` | Modified | FEAT |
| `internal/tools/apis/searchWeb/SearchWeb.go` | Modified | FEAT |
| `internal/tools/browser/load.go` | Modified | REFACTOR |
| `internal/tools/executor.go` | Modified | REFACTOR |
| `internal/skill/scanner.go` | Modified | REFACTOR |
| `internal/skill/parser_test.go` | Modified | CHORE |
| `internal/utils/utils.go` | Modified | REFACTOR |
| `go.mod` / `go.sum` | Modified | CHORE |
| `.gitignore` | Modified | CHORE |
| `README.md` / `doc/*.md` | Modified | DOC |

***

Generated by [SKILL](https://github.com/pardnchiu/skill-version-generate)

**Full Changelog**: https://github.com/pardnchiu/agenvoy/compare/v0.8.0...v0.9.0