**OpenCode 的对话归档功能主要通过项目级配置、持久化存储、版本控制及导出工具实现,支持选择性保存对话内容并纳入版本管理,确保长期项目的上下文连贯性。**以下是具体功能与实现方式:
### 对话归档的核心机制
1. **项目级上下文保存**
OpenCode 允许通过项目配置文件(如 `opencode.json`)启用上下文保存功能。用户可指定保存的对话类型(如代码片段、技术决策、架构讨论等),归档内容会与项目结构关联,确保每次返回项目时 AI 能基于完整上下文提供建议。
**示例配置**:
```json
{
"context_management": {
"enabled": true,
"retention_priorities": ["code_context", "technical_decisions", "project_structure"]
}
}
```
2. **持久化存储支持**
- **本地存储**:默认将对话保存在项目目录下的 `./opencode_conversations` 中,支持设置保留天数(如 `retention_days: 30`)。
- **数据库存储**:通过 SQLite 或 Redis 实现结构化存储,支持复杂查询(如按关键词搜索历史对话)。
**配置示例**:
```json
{
"storage": {
"enabled": true,
"type": "sqlite",
"path": "./opencode.db"
}
}
```
3. **版本控制集成**
归档的对话文件可纳入 Git 等版本控制系统,团队成员通过共享配置文件同步上下文,避免“对话失忆”。例如,技术决策的修改历史会随代码提交记录保留,便于追溯。
### 对话归档的操作方式
1. **手动导出**
- **命令行工具**:使用 `opencode export <session-id> --format json` 将指定会话导出为 JSON 或 Markdown 文件。
- **TUI 界面**:在终端交互界面中按 `Ctrl+E` 调出导出菜单,选择格式并指定保存路径。
2. **自动归档策略**
通过配置文件设置自动保存规则,例如:
- **定时保存**:每 5 分钟自动缓存对话到临时目录。
- **事件触发**:在完成关键任务(如代码生成、Bug 修复)后自动归档。
**配置示例**:
```json
{
"storage": {
"autoSave": true,
"interval": 300,
"backupCount": 10
}
}
```
3. **批量管理工具**
使用 `opencode-replay --all --format md` 导出所有会话至指定目录,支持统一归档或备份。
### 对话归档的应用场景
1. **长期项目维护**
在持续数月或数年的项目中,归档功能确保 AI 能记住历史架构决策和技术选型。例如,开发 React 项目时,AI 可基于归档的组件设计讨论提供一致建议。
2. **团队协作与知识共享**
团队成员通过共享归档文件同步上下文,避免重复沟通。例如,新成员加入时,通过导入历史会话快速理解项目背景。
3. **合规与审计需求**
在金融、医疗等敏感领域,归档的对话记录可作为审计日志,满足合规要求。
### 性能优化与最佳实践
1. **合理设置保存粒度**
- 频繁变更的代码片段采用增量保存,减少存储开销。
- 稳定内容(如项目配置)采用全量保存,确保完整性。
2. **定期清理历史数据**
使用 `opencode session prune --days=30` 清理 30 天前的归档文件,避免磁盘占用过高。
3. **监控存储状态**
通过 `src/tool/storage/monitor.ts` 工具监控存储使用情况,及时调整配置。