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 --jsonslacrawl 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 输出的可信度:
- 报告要素完整:查询结果应包含 workspace 名与 channel 名、绝对日期范围(而非模糊的“最近几天”)、消息计数,以及 token/来源限制。
agents/openai.yaml的default_prompt同样要求“report exact date spans and token/source limits”,两处表述相互印证。 - 只读 SQL 边界:精确计数与排名一律走只读 SQL,避免对归档执行写操作。
- 不假设凭证存在: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),仅供参考