Discrawl — Discord 离线归档与智能搜索

381980 80119 更新时间: 2026-07-12 18:08:10

Discrawl 是 OpenClaw 生态系统中的一个技能模块,用于将 Discord 服务器数据(频道、线程、消息、成员资料)离线同步到本地 SQLite 数据库,并提供全文搜索、成员目录、实时增量更新和 TUI 界面等功能。它优先使用本地归档数据回答 Discord 相关问题,仅在数据过时或范围不足时才回退调用 Discord API

安装
bunx skills add https://github.com/openclaw/openclaw --skill discrawl
技能详情 readonly

一、什么是 Discrawl?

Discrawl 是一个专为 Discord 设计的本地数据归档与检索工具,以技能(Skill)的形式集成在 OpenClaw 项目中。它的核心理念是:将 Discord 服务器数据“拉取”到本地,让用户在不依赖 Discord 原生搜索、不受速率限制困扰的情况下,对历史消息进行高效的离线查询和分析

该技能对应一个独立的 Go 语言项目 openclaw/discrawl,可通过 go install 直接安装命令行工具

二、核心功能

1. 数据同步(Sync)

Discrawl 支持将 Discord 公会(服务器)的频道、线程、消息和成员资料同步到本地 SQLite 数据库。同步支持两种模式:

  • 常规同步:拉取最新增量数据,保持本地归档与远程一致

  • 全量同步(--full:用于有意的历史数据回填

2. 本地搜索(Search)

通过 SQLite FTS5 全文索引,Discrawl 支持对本地消息进行快速关键词搜索,命令示例:

bash
discrawl search --limit 20 "关键词"

3. 消息与私信查询

  • 按频道查询最近消息:discrawl messages --channel '#频道名' --days 7 --all

  • 查询最近私信:discrawl dms --last 20

4. 终端 TUI 界面

提供交互式终端界面,方便浏览和检索:discrawl tui --dm

5. 原始 SQL 查询

支持只读 SQL 查询,适合精确计数、关联查询和排序分析:

bash
discrawl --json sql "select count(*) as messages from messages;"

6. 数据新鲜度检查

在执行分析前,可通过 discrawl status --json 检查本地归档的新鲜度,判断是否需要先同步再回答用户问题

三、数据存储位置

Discrawl 遵循 XDG 规范存储数据

  • 数据库~/.local/share/discrawl/discrawl.db(Linux)或 ~/Library/Application Support/discrawl/discrawl.db(macOS)

  • 配置文件:XDG 配置目录,兼容旧版 ~/.discrawl/config.toml

  • 缓存与日志:分别存储在 XDG 缓存目录和状态目录

四、两种数据源模式

Discrawl 支持两种截然不同的数据获取方式:

1. Bot API 模式(推荐)

通过配置 Discord Bot Token,以 Bot 身份调用 Discord API 进行同步。需要有服务器管理员权限将 Bot 邀请进目标服务器

2. Wiretap 桌面模式(本地只读)

通过读取本地 Discord 桌面客户端的 artifacts 进行数据提取。此模式严禁提取凭证、使用用户 Token、以用户身份调用 Discord API 或写入 Discord 应用存储。桌面缓存的私信数据仅为本地使用,不得纳入公开发布的 Git 快照

五、与 OpenClaw 的集成

在 OpenClaw 的 Agent 工作流中,Discrawl 技能遵循以下原则

优先使用本地 Discord 归档数据回答 Discord 相关问题。仅在归档数据过时、缺少请求范围,或用户明确要求当前外部上下文时,才调用 Discord API。

这意味着 Agent 会先查询本地数据库,若数据不够新或范围不足,才回退到在线 API,既保证了回答质量,又减少了对 Discord API 的依赖和速率限制风险。

六、ClawSweeper 沙箱模式

Discrawl 还提供了一个沙箱只读版本 discrawl-sandbox,专门用于安全环境下的数据查询。该模式:

  • 从公开的 openclaw/discord-store 仓库导入数据

  • 强制设置 discord.token_source = "none",不涉及任何凭证

  • 发布的 Git 快照仅包含公共频道数据,过滤敏感信息

七、适用场景

  • 社区运营:对大型 Discord 服务器的历史消息进行离线审计、关键词统计和成员活跃度分析。

  • 知识检索:快速查找过去讨论过的技术方案、决策记录或问答内容。

  • 数据备份:将重要 Discord 服务器的对话归档到本地,防止历史消息被删除后丢失。

  • Agent 增强:为 AI Agent 提供本地化的 Discord 数据检索能力,提升响应效率和准确性。