你是不是也遇到过这种情况:用 Kimi 用久了,左侧的历史聊天列表长得拖不到底,想清理一下吧,官方竟然到现在都没给个“一键清空”或者“全选删除”的按钮?哪怕过了两年,这个基础功能依然缺失,逼得强迫症用户不得不一个个手动删,简直让人抓狂。

既然官方不给,那就只能自己动手丰衣足食了。最近发现了一个专门针对 Kimi 网页端的“一键清空全部历史会话”脚本,操作非常简单,只需要会按 F12 就行,完全不需要懂太多代码。下面就把这个实用的小教程分享给大家。

脚本原理一览

这个脚本的逻辑其实非常直接:它不走页面上的 DOM 元素操作,而是直接模拟浏览器向 Kimi 的后端 API 发送请求。简单来说,它做了两件事:

  1. 批量拉取列表:调用 ListChats 接口,把你账号下所有的历史聊天 ID 全部捞出来,自动翻页,一个不漏。
  2. 批量执行删除:拿到 ID 列表后,调用 BatchDeleteChats 接口,每 50 个为一批,直接发送删除指令。

这比手动删快了不知道多少倍,而且因为它有简单的错误重试机制(如果批量接口挂了会尝试备用接口),稳定性也相当不错。

手把手操作教程

整个过程只需要三步,建议直接收藏备用,以备不时之需。

第一步:登录 Kimi 网页版 打开浏览器,访问 www.kimi.com,确保你已经登录了自己的账号。这一步很关键,因为脚本需要从浏览器的 LocalStorage 里读取你的登录凭证。

浏览器开发者工具界面示意图,高亮显示 F12 快捷键和 Console 控制台标签

按 F12 打开开发者工具,点击 Console 标签

第二步:打开开发者工具 在 Kimi 网页上按键盘上的 F12 键(或者右键点击页面空白处选择“检查”),在弹出的开发者工具面板中,点击顶部的 “Console”(控制台) 标签。

在 Console 控制台中粘贴代码并回车运行的示意图

将代码粘贴到控制台,回车即可执行

温馨提示:有些浏览器打开控制台可能是一屏英文代码,并提示“Warning: Don't paste code here...”,别担心,只要是你自己贴的脚本,那是没问题的。

第三步:粘贴并运行脚本 将下方的完整代码复制,粘贴到 Console 的空白处(光标闪烁的地方),然后按下 回车键(Enter)

/**
 * Kimi 一键清空全部历史会话(F12 控制台脚本)
 *
 * 使用方法:
 * 1. 打开 www.kimi.com 并已登录
 * 2. F12 → Console
 * 3. 粘贴全部代码,回车执行
 *
 * 原理:直接调 Kimi API(ListChats + BatchDeleteChats),不依赖页面 DOM
 */
(async function () {
  const API_BASE = 'https://www.kimi.com';
  const PAGE_SIZE = 50;
  const BATCH_SIZE = 50;
  const DELAY = 300;

const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

// ===== 获取 token =====
  const token = localStorage.getItem('access_token');
  if (!token) {
    console.error('\n❌\n未找到 access_token,请确认已登录 Kimi');
    return;
  }
  console.log('\n✅\n已获取 access_token');

const headers = {
    'Content-Type': 'application/json',
    'Connect-Protocol-Version': '1',
    'Authorization': `Bearer ${token}`,
  };

async function apiPost(path, body) {
    const resp = await fetch(`${API_BASE}${path}`, {
      method: 'POST',
      headers,
      body: JSON.stringify(body),
    });
    if (!resp.ok) {
      const text = await resp.text();
      throw new Error(`API ${resp.status}: ${text.slice(0, 300)}`);
    }
    return resp.json();
  }

// ===== 列出全部会话 =====
  console.log('\n📋\n正在获取全部历史会话...');
  const allChats = [];
  let pageToken = '';
  while (true) {
    const data = await apiPost('/apiv2/kimi.chat.v1.ChatService/ListChats', {
      query: '',
      pageToken,
      pageSize: PAGE_SIZE,
    });
    const chats = data?.chats || [];
    allChats.push(...chats);
    console.log(` 已获取 ${allChats.length} 条`);

pageToken = data?.nextPageToken || '';
    if (!pageToken || chats.length === 0) break;
    await sleep(DELAY);
  }

if (allChats.length === 0) {
    console.log('\n✅\n当前没有历史会话');
    return;
  }

const chatIds = allChats.map((c) => c.id).filter(Boolean);
  console.log(`\n📊\n共 ${allChats.length} 条会话,准备删除...`);

// ===== 批量删除 =====
  let deleted = 0;
  for (let i = 0; i < chatIds.length; i += BATCH_SIZE) {
    const batch = chatIds.slice(i, i + BATCH_SIZE);
    try {
      await apiPost('/apiv2/kimi.chat.v1.ChatService/BatchDeleteChats', {
        chatIds: batch,
      });
      deleted += batch.length;
    } catch (err) {
      // 降级:尝试另一个删除接口
      console.warn(` 批量接口失败,尝试备用接口...`);
      try {
        await apiPost('/apiv2/kimi.chat.v1.ChatService/DeleteChats', {
          chatIds: batch,
        });
        deleted += batch.length;
      } catch (err2) {
        console.error(` 删除第 ${Math.floor(i / BATCH_SIZE) + 1} 批失败:`, err2.message);
      }
    }
    console.log(` 进度: ${deleted}/${chatIds.length}`);
    await sleep(DELAY);
  }

console.log(`\n🎉\n完成!已删除 ${deleted}/${chatIds.length} 条会话`);
  if (deleted > 0) {
    console.log('\n📍\n3 秒后刷新页面...');
    setTimeout(() => location.reload(), 3000);
  }
})();

运行效果与注意

脚本运行后,你会在控制台看到实时的进度条,比如“正在获取全部历史会话...”、“已获取 150 条”、“进度: 50/150”等等。脚本内置了 300毫秒的延时(DELAY),是为了避免请求太频繁触发接口限制,请耐心等待它跑完。

一旦删除完成,页面会自动刷新,你会发现左侧的列表变得干干净净,整个世界都清净了。

常见问题排查:

  • 报错“未找到 access_token”:请检查你是否真的处于登录状态,或者尝试刷新页面重新登录。
  • 删除失败:脚本其实包含了一个“降级策略”,如果批量删除接口不行,它会尝试单条接口。如果还是不行,可能是网络波动,建议重试一次。

虽然这个脚本是个好东西,但也折射出产品功能的缺失。希望在未来的版本更新中,Kimi 官方能听到用户的呼声,早点加上这个原生的“清空历史”按钮吧。

标签: none

评论已关闭