Skip to content

Commit 0ef97ff

Browse files
committed
fix: 改进导出功能
- 过滤空消息,避免导出空内容 - 普通导出显示 AI 思考过程 - 与 UI 显示逻辑对齐 - 修复最后一个助手回复丢失 Co-Authored-By: GLM-4.7 & cloco(Closer)
1 parent 5e99fd2 commit 0ef97ff

5 files changed

Lines changed: 657 additions & 82 deletions

File tree

docs/export-changes.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# 导出功能变更
2+
3+
1. **空消息过滤**:添加 `hasValidContent()` 检查消息有效性
4+
2. **显示 thinking**:普通导出包含 AI 思考过程(简化格式)
5+
3. **与 UI 对齐**:数组 content 处理逻辑与 FullscreenConversation 一致
6+
4. **修复遗漏**:无工具调用时助手响应未添加到 messages
7+
8+
效果:导出内容完整、连贯,与 UI 显示一致

docs/export-guide.md

Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
# 对话导出功能使用指南
2+
3+
## 概述
4+
5+
Closer Code 提供了两种对话导出格式,满足不同的使用场景:
6+
7+
- **简洁格式** (`/export`) - 包含对话内容和 AI 思考过程,适合阅读和分享
8+
- **完整格式** (`/export_all`) - 包含所有细节(thinking、工具调用、统计等),适合调试和归档
9+
10+
## 命令用法
11+
12+
### /export - 简洁格式导出(推荐)
13+
14+
```
15+
/export <filename>
16+
```
17+
18+
**导出内容**
19+
- ✅ 用户和助手的对话内容
20+
- ✅ AI 思考过程(thinking)
21+
- ✅ 代码块和格式化文本
22+
- ❌ 工具调用详情
23+
- ❌ Token 统计
24+
25+
**适用场景**
26+
- 分享对话给他人
27+
- 存档重要的对话内容
28+
- 在 Markdown 编辑器中阅读
29+
- **了解 AI 的思考过程**
30+
31+
**示例**
32+
```
33+
/export conversation-2025-02-06
34+
```
35+
36+
生成文件:`conversation-2025-02-06.md`
37+
38+
---
39+
40+
### /export_all - 完整格式导出
41+
42+
```
43+
/export_all <filename>
44+
```
45+
46+
**导出内容**
47+
- ✅ 所有对话内容
48+
- ✅ AI 思考过程
49+
- ✅ 工具调用详情(输入、输出、耗时)
50+
- ✅ Token 统计信息
51+
- ✅ 时间戳和元数据
52+
53+
**适用场景**
54+
- 调试和问题排查
55+
- 完整的对话归档
56+
- 分析 AI 的思考过程
57+
- 性能分析(工具耗时、Token 使用)
58+
59+
**示例**
60+
```
61+
/export_all full-conversation-2025-02-06
62+
```
63+
64+
生成文件:`full-conversation-2025-02-06.md`
65+
66+
---
67+
68+
## 输出格式示例
69+
70+
### 简洁格式示例(包含 thinking)
71+
72+
```markdown
73+
# Closer Code 对话记录
74+
75+
**导出时间**: 2025/2/6 17:23:21
76+
**原始消息数**: 4
77+
78+
---
79+
80+
## 🧠 AI 思考过程
81+
82+
1. 开始分析用户请求
83+
2. 准备编写文件
84+
3. 调用 writeFile 工具
85+
4. 文件创建完成
86+
87+
---
88+
89+
**有效消息数**: 4
90+
91+
---
92+
93+
## 👤 用户
94+
95+
你好,请帮我写一个排序算法
96+
97+
---
98+
99+
## 🤖 助手
100+
101+
好的!这是一个快速排序算法的实现:
102+
103+
\`\`\`javascript
104+
function quickSort(arr) {
105+
if (arr.length <= 1) return arr;
106+
const pivot = arr[0];
107+
const left = arr.filter(x => x < pivot);
108+
const right = arr.filter(x => x >= pivot);
109+
return [...quickSort(left), pivot, ...quickSort(right)];
110+
}
111+
\`\`\`
112+
113+
这个算法的时间复杂度是 O(n log n)。
114+
115+
---
116+
```
117+
118+
### 完整格式示例
119+
120+
```markdown
121+
# Closer Code 完整对话记录
122+
123+
## 📊 元数据
124+
125+
- **导出时间**: 2025/2/6 17:23:21
126+
- **消息数量**: 4
127+
- **工具调用**: 2 次
128+
- **Thinking 记录**: 4 条
129+
- **Token 使用**: 1,250 / 4,096
130+
- 输入: 500
131+
- 输出: 750
132+
133+
---
134+
135+
## 🧠 AI Thinking 过程
136+
137+
### 1. 🤔 [14:30:20] 开始分析用户请求
138+
139+
### 2. ✍️ [14:30:22] 准备编写排序算法
140+
141+
---
142+
143+
## 🔧 工具执行记录
144+
145+
### 1. ✅ readFile
146+
147+
- **状态**: success
148+
- **时间**: 14:30:25
149+
- **耗时**: 150ms
150+
- **输入**:
151+
\`\`\`json
152+
{
153+
"filePath": "sort.js"
154+
}
155+
\`\`\`
156+
157+
---
158+
159+
## 💬 对话内容
160+
161+
(对话内容...)
162+
```
163+
164+
---
165+
166+
## 文件管理
167+
168+
### 文件命名建议
169+
170+
- 使用描述性文件名
171+
- 包含日期或主题
172+
- 使用连字符分隔单词
173+
174+
**好的示例**
175+
- `conversation-2025-02-06.md`
176+
- `debug-session-sort-algo.md`
177+
- `project-planning.md`
178+
179+
**避免的示例**
180+
- `export.md` (太通用)
181+
- `a.txt` (无意义)
182+
- `my file.md` (包含空格)
183+
184+
### 文件位置
185+
186+
导出的文件默认保存在当前工作目录。建议:
187+
188+
```bash
189+
# 创建专门的导出目录
190+
mkdir -p exports
191+
192+
# 导出到该目录
193+
/export exports/conversation-$(date +%Y-%m-%d).md
194+
```
195+
196+
---
197+
198+
## 使用技巧
199+
200+
### 1. 定期备份重要对话
201+
202+
```bash
203+
# 每天结束时导出当天对话
204+
/export_all daily-$(date +%Y-%m-%d)
205+
```
206+
207+
### 2. 分享特定对话
208+
209+
```bash
210+
# 只分享对话内容,不包含调试信息
211+
/export share-with-team
212+
```
213+
214+
### 3. 调试问题
215+
216+
```bash
217+
# 导出完整信息用于调试
218+
/export_all debug-session-issue-123
219+
```
220+
221+
### 4. 归档项目对话
222+
223+
```bash
224+
# 项目结束时归档所有对话
225+
/export_all project-complete-$(date +%Y-%m-%d)
226+
```
227+
228+
---
229+
230+
## 常见问题
231+
232+
### Q: 导出的文件在哪里?
233+
A: 默认在当前工作目录。可以使用相对路径或绝对路径:
234+
```
235+
/export exports/conversation.md
236+
/export /home/user/docs/conversation.md
237+
```
238+
239+
### Q: 可以修改导出的文件吗?
240+
A: 可以!导出的是标准 Markdown 文件,可以在任何文本编辑器中修改。
241+
242+
### Q: 如何在 GitHub 上分享导出的对话?
243+
A: 直接将 `.md` 文件提交到 GitHub,它会自动渲染成漂亮的格式。
244+
245+
### Q: 导出的文件包含敏感信息吗?
246+
A: 完整格式包含所有对话内容。分享前请检查是否包含敏感信息。
247+
248+
### Q: 可以导出为其他格式吗?
249+
A: 目前只支持 Markdown。你可以使用 Pandoc 等工具转换为其他格式:
250+
```bash
251+
pandoc conversation.md -o conversation.pdf
252+
```
253+
254+
---
255+
256+
## 相关命令
257+
258+
- `/clear` - 清除对话历史
259+
- `/history` - 查看输入历史统计
260+
- `/status` - 查看对话摘要

0 commit comments

Comments
 (0)