---
url: /wave-agent/specs/ui/history-search-prompt.md
description: Ctrl+R 历史搜索，复用 `~/.wave/history.jsonl` 中的历史提示
---

# 功能规格说明：历史搜索提示

**创建日期**：2026-02-02

## 用户场景与测试 *（必填）*

### 用户故事：搜索和重用之前的提示（优先级：P1）

作为用户，我希望能够快速找到并重用之前发送给 agent 的提示，这样就不必重新输入复杂的指令。

**为什么是这个优先级**：这是该功能的核心价值，能够加快交互速度并减少重复输入。

**独立测试**：可以通过按 Ctrl+R、输入搜索词并选择之前的提示来填充输入框来进行完整测试。

**验收场景**：

1. **假设**我在 `~/.wave/history.jsonl` 中有提示历史记录，**当**我在 agent 的输入框中按 `Ctrl+R` 时，**则**搜索界面出现，显示我之前的提示。
2. **假设**搜索界面已打开，**当**我输入搜索查询时，**则**提示列表被过滤以匹配我的查询。
3. **假设**有过滤后的提示列表，**当**我使用方向键选择一个并按 `Enter` 时，**则**所选提示被放入主输入框，搜索界面关闭。
4. **假设**搜索界面已打开，**当**我按 `Esc` 时，**则**搜索界面关闭，主输入框不变。

***

### 用户故事：从 Bash 历史迁移（优先级：P2）

作为用户，我希望 agent 使用自己专用的历史文件，而不是依赖系统的 bash 历史，这样我的 agent 交互可以保持独立和整洁。

**为什么是这个优先级**：通过将 agent 提示与常规 shell 命令分离，提高了隐私性和组织性。

**独立测试**：可以通过验证新提示被保存到 JSONL 历史文件并且不出现在系统的 `.bash_history` 中来进行测试。

**验收场景**：

1. **假设**我向 agent 发送了一个新提示，**当**提示被处理时，**则**它被追加到 `~/.wave/history.jsonl`。
2. **假设**我已发送了多个提示，**当**我检查系统的 bash 历史（例如 `history` 命令）时，**则**agent 提示不在其中。

***

### 边界情况

* **空历史**：当 `~/.wave/history.jsonl` 不存在或为空时会发生什么？（系统应显示"无历史记录"消息或简单地不打开搜索界面）。
* **大历史文件**：系统如何处理非常大的历史文件？（搜索应保持响应；可能需要限制显示结果的数量）。
* **损坏的 JSONL**：系统如何处理格式错误的 `history.jsonl` 文件？（应优雅地失败，可能通过忽略格式错误的行或显示错误消息）。
* **重复提示**：搜索界面是否应显示重复的提示？（理想情况下，应显示唯一的提示或提示的最近实例）。
