1. 为什么需要清理Kimi历史会话
Kimi作为一款新兴的AI对话助手,在日常使用中会积累大量历史会话记录。这些记录可能包含敏感的工作内容、个人隐私信息或测试数据。手动逐条删除不仅效率低下,而且在会话量较大时(超过50条)容易出现页面卡顿。
我在实际使用中发现三个典型场景:
- 开发调试时产生的临时会话(占总量60%以上)
- 包含API密钥等敏感信息的测试对话
- 需要定期归档的重要工作记录
注意:Kimi网页版目前没有提供批量删除功能,当会话列表超过3页时,手动操作极易误删重要会话。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 脚本实现原理与技术选型
2.1 网页端操作逆向分析
通过Chrome开发者工具监测到:
- 删除操作触发
POST /api/conversation/delete请求 - 请求体包含
conversation_id和_csrf_token - 响应为JSON格式
{"status":"success"}
关键参数获取方式:
javascript复制// 从会话列表元素提取ID
document.querySelectorAll('[data-conversation-id]').forEach(el => {
console.log(el.dataset.conversationId)
})
2.2 脚本技术方案对比
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 浏览器控制台脚本 | 无需安装 | 需手动复制粘贴 | 临时使用 |
| Tampermonkey脚本 | 可持久化 | 需要插件支持 | 高频需求 |
| Python+selenium | 功能强大 | 环境复杂 | 企业级应用 |
最终选择纯前端方案原因:
- Kimi的CSRF防护机制较简单
- 不需要处理登录态维持
- 零依赖且跨平台
3. 完整脚本代码与使用指南
3.1 基础版脚本(控制台直接运行)
javascript复制(async function() {
const sleep = ms => new Promise(r => setTimeout(r, ms));
const items = Array.from(
document.querySelectorAll('[data-conversation-id]')
).reverse();
for (const item of items) {
const id = item.dataset.conversationId;
const deleteBtn = item.querySelector('[aria-label="删除会话"]');
if (deleteBtn) {
deleteBtn.click();
await sleep(300);
const confirmBtn = document.querySelector(
'.modal-footer button:last-child'
);
confirmBtn?.click();
await sleep(500);
}
}
console.log(`已清理 ${items.length} 条会话`);
})();
3.2 增强版特性
- 错误重试机制:
javascript复制let retryCount = 0;
while(retryCount < 3) {
try {
// 操作代码
break;
} catch(e) {
await sleep(1000);
retryCount++;
}
}
- 进度显示:
javascript复制const progress = document.createElement('div');
progress.style.position = 'fixed';
progress.style.top = '20px';
progress.style.right = '20px';
document.body.appendChild(progress);
// 在循环内更新
progress.textContent = `处理中 ${index+1}/${total}`;
4. 常见问题排查指南
4.1 元素选择器失效
症状:脚本运行后无任何反应
解决方案:
- 检查Kimi页面是否更新了DOM结构
- 使用新选择器:
javascript复制document.querySelectorAll('div[role="button"][aria-label*="删除"]')
4.2 速率限制触发
现象:删除到一定数量后操作失败
优化方案:
javascript复制// 随机延迟避免风控
await sleep(300 + Math.random() * 700);
4.3 会话残留问题
可能原因:
- 网络波动导致请求失败
- 页面动态加载未完成
处理建议:
javascript复制// 滚动加载更多
window.scrollTo(0, document.body.scrollHeight);
await sleep(2000);
5. 进阶开发方向
5.1 基于官方API的实现
获取授权token后:
bash复制curl -X DELETE \
-H "Authorization: Bearer $TOKEN" \
"https://api.kimi.com/v1/conversations/$CONV_ID"
5.2 本地历史备份
在删除前保存记录:
python复制import json
from datetime import datetime
history = []
for conv in conversations:
history.append({
'id': conv.id,
'title': conv.title,
'timestamp': datetime.now().isoformat()
})
with open('kimi_backup.json', 'w') as f:
json.dump(history, f)
5.3 自动化部署方案
使用Chrome扩展manifest:
json复制{
"name": "Kimi Cleaner",
"version": "1.0",
"manifest_version": 3,
"content_scripts": [{
"matches": ["*://kimi.com/*"],
"js": ["cleaner.js"]
}]
}
6. 安全注意事项
- 敏感信息防护:
- 避免在公共电脑运行脚本
- 不要分享包含个人token的脚本
- 脚本审计原则:
- 检查所有网络请求目标域名
- 警惕要求输入密码的脚本
- 企业环境建议:
bash复制# 使用沙盒环境测试
docker run --rm -it node:18-alpine sh
我在实际使用中总结的最佳实践是:每周五下班前执行清理,保留最近3天的关键会话。对于重要对话,建议手动导出为Markdown后再清理。脚本运行时保持浏览器窗口在前台,避免系统休眠导致中断。
