OpenClaw slacrawl 技能:本地 Slack 归档的检索、新鲜度同步与只读 SQL 分析
2026/9/7 2:32:54 网站建设 项目流程

OpenClaw slacrawl 技能:本地 Slack 归档的检索、新鲜度同步与只读 SQL 分析

【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw

在 OpenClaw 的 Agent 工作流中,slacrawl 是一组面向 Slack 归档数据的专用技能定义,覆盖新鲜度检查、按需同步、有界检索和只读 SQL 统计四类操作。本文以 .agents/skills/slacrawl/SKILL.md 这份技能文件为核心,完整还原其声明的前置依赖、安装方式与全部命令用法,并结合同目录的接口元数据 agents/openai.yaml 说明该技能如何被 OpenClaw Agent 识别与调用。读完本文,你可以掌握:如何在 OpenClaw 环境下检查本地 Slack 归档是否过期、选择正确的同步来源、用有界切片查询消息,以及用只读 SQL 获得精确计数与排名。

技能定位与注册方式

slacrawl 的技能定义是一份带 YAML frontmatter 的 Markdown 文件,位于 .agents/skills/slacrawl/SKILL.md。frontmatter 声明了三类关键信息:

--- name: slacrawl description: "Slack archive: search, sync freshness, threads/DMs, SQL counts, and Slacrawl repo work." metadata: openclaw: requires: bins: - slacrawl install: - kind: go module: github.com/vincentkoc/slacrawl/cmd/slacrawl@latest bins: - slacrawl ---

从这份元数据可以确认几个实现事实:

  • 二进制依赖requires.bins声明该技能运行前必须存在slacrawl可执行文件,Agent 在调用技能前可据此检查环境。
  • 安装方式install段声明了kind: go,模块路径为github.com/vincentkoc/slacrawl/cmd/slacrawl@latest,安装产物即slacrawl二进制。也就是说,从技能元数据看,OpenClaw 通过 Go 模块安装为这个技能提供命令行工具,而非内置二进制。
  • 能力描述description明确技能覆盖的范围——Slack 归档检索、同步新鲜度、线程/DM、SQL 计数,以及 Slacrawl 仓库相关工作。

同目录下的 agents/openai.yaml 则提供了该技能在 Agent 接口层的注册信息:

interface: display_name: "Slacrawl" short_description: "Search local Slack archives and freshness" default_prompt: "Use $slacrawl to search local Slack archives, check freshness, inspect channel or DM slices, and report exact date spans and token/source limits."

其中default_prompt直接给出了技能的使用意图模板:检索本地 Slack 归档、检查新鲜度、查看频道或 DM 切片,并汇报精确的日期范围与 token/来源限制。这为后文的报告规范提供了依据。

值得一提的是,.agents/skills/目录下存在一批命名同源的“crawl”系列技能,例如 .agents/skills/discrawl/SKILL.md、gitcrawl、notcrawl、graincrawl 等,它们共享相同的 frontmatter 结构(requires.bins+kind: go安装)。可以看出 slacrawl 是该仓库“数据源抓取/检索”技能族中专门面向 Slack 归档的一员,本文只聚焦 Slack 这一目标。

工作流总原则:先用本地数据,先查新鲜度

SKILL.md 正文的第一条原则是:Use local Slack archive data first(优先使用本地 Slack 归档数据)。这意味着 Agent 在回答“最近”“当前”这类时效性问题之前,不应直接发起同步或猜测,而是先用以下两个命令判断本地归档的可用性与新鲜度:

slacrawl doctor slacrawl status --json
  • slacrawl doctor:诊断类命令,用于检查本地归档环境是否健康。
  • slacrawl status --json:以 JSON 输出归档状态,便于 Agent 程序化解析(例如读取最后同步时间、覆盖范围等字段),而不是解析人类可读文本。

“先检查、再行动”的顺序是该技能的核心工作流:对近期或实时性的问题,新鲜度检查是所有查询的前提步骤。

同步策略:仅在过期或被要求时刷新

技能正文明确约束:Refresh only when stale or asked(仅在数据过期或用户明确要求时才刷新)。对应的同步命令按数据来源分为两条路径:

slacrawl sync --source desktop slacrawl sync --source api --latest-only

两个来源的取舍要点:

  • --source desktop:从本地 Slack Desktop 客户端的数据进行同步,属于本地数据源,无需额外的 API 凭证。
  • --source api:通过 Slack API 同步,配合--latest-only只拉取最新增量,用于控制同步开销。

SKILL.md 在最后一段给出了重要的前提约束:API 同步以及完整的线程/DM 水合(hydration)都需要 Slack token,不能假设环境中存在 token。因此在无 token 的环境下,应默认依赖本地归档与 desktop 数据源,涉及 API 的操作需要先确认凭证是否存在。这一点是实操中避免误判“数据缺失”的关键——部分消息拉不下来可能是凭证问题,而非归档本身缺失。

有界查询:search、messages 与只读 SQL

该技能要求所有查询都使用有界切片(bounded slices),即通过参数限制返回规模。文档给出的三条标准查询命令是:

slacrawl search --limit 20 "query" slacrawl messages --since 7d --limit 50 slacrawl sql "select count(*) from messages;"

逐条说明:

  • slacrawl search --limit 20 "query":按关键词检索归档消息,--limit 20将结果限制在 20 条以内,避免一次性把大段历史灌入上下文。
  • slacrawl messages --since 7d --limit 50:按时间窗口拉取消息切片,--since 7d表示最近 7 天,--limit 50再叠加条数上限。时间范围与条数限制双约束,是该技能对“切片”要求的具体体现。
  • slacrawl sql "select count(*) from messages;":对归档数据执行 SQL 查询。从示例中的表名可以确认,归档至少包含messages消息表;文档明确指示使用只读 SQL 来获取精确计数与排名,即统计、聚合、排序类需求应交给 SQL 而不是全量拉取消息。

“有界切片 + 只读 SQL”的组合,从技能设计看是为了控制单次查询的数据量与 token 消耗,同时保证计数、排名这类数值结果的精确性——这正是技能描述中“SQL counts”能力的落点。

报告规范与安全边界

SKILL.md 的最后一段规定了使用 slacrawl 时的汇报与安全纪律,这些约束直接决定了 Agent 输出的可信度:

  1. 报告要素完整:查询结果应包含 workspace 名与 channel 名、绝对日期范围(而非模糊的“最近几天”)、消息计数,以及 token/来源限制。agents/openai.yamldefault_prompt同样要求“report exact date spans and token/source limits”,两处表述相互印证。
  2. 只读 SQL 边界:精确计数与排名一律走只读 SQL,避免对归档执行写操作。
  3. 不假设凭证存在:API 同步与线程/DM 完整水合依赖 Slack token,环境中没有就不应默认可用。

这些规范意味着:一个符合 slacrawl 技能要求的回答,应当能让读者清楚知道数据来自哪个 workspace、哪个 channel、覆盖到哪一天为止、受什么限制约束——而不是只给出一串无法溯源的消息摘录。

命令速查与文件索引

命令用途关键参数
slacrawl doctor检查本地归档环境健康度
slacrawl status --json以 JSON 输出归档状态与新鲜度--json
slacrawl sync --source desktop从本地 Slack Desktop 数据同步--source desktop
slacrawl sync --source api --latest-only经 Slack API 增量同步(需 token)--source api--latest-only
slacrawl search --limit 20 "query"关键词检索,限定条数--limit
slacrawl messages --since 7d --limit 50按时间窗口拉取消息切片--since--limit
slacrawl sql "select count(*) from messages;"只读 SQL,精确计数/排名只读 SQL 语句

相关文件索引,便于在仓库中继续深入查看:

  • 技能主体定义:.agents/skills/slacrawl/SKILL.md
  • 技能接口元数据:.agents/skills/slacrawl/agents/openai.yaml
  • 同族技能参考(结构一致,可对照阅读):.agents/skills/discrawl/SKILL.md

适用前提与限制:本文所有命令与参数均以当前仓库中 slacrawl 技能文件声明的内容为准;slacrawl二进制需按技能 frontmatter 声明的 Go 模块安装方式预先就绪,且 API 相关能力以环境中存在 Slack token 为前提。

【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询