SevenTnewS

AI 智能体

Hugging Face 的 Slack 机器人查询生产数据。LLM 永远不会看到密钥

Hugging Face 运行着一个内部 Slack 编码智能体 Moon Bot,它可以查询生产数据库并打开 PR。其安全设计通过 Okta 层级、沙盒化 bash 和本地反向代理在服务端注入密钥,使模型无法触及凭证。

Emmanuel Fabrice Omgbwa Yasse AI 辅助

2026-08-04 · 阅读需 5 分钟

Hugging Face 的 Slack 机器人查询生产数据。LLM 永远不会看到密钥

大多数团队不会公布其编码代理如何接触生产数据的细节。Hugging Face 公布了。Moon Bot 是一个内部 Slack 机器人,它查询生产环境中的 Elasticsearch 和 MongoDB,打开 GitHub 拉取请求,并记得上周的工作。其背后的模型永远不持有实现这一切所需的凭证。

Moon Bot 听起来很琐碎,直到你尝试构建它。它运行在 Kubernetes pod 中的开源 Pi 编码代理 SDK 上,每个 Slack 线程都有自己独立的代理会话,包含完整的工具调用历史。该文章将 Kimi K2 和 Claude 列为可能的后端。支持人员无需终端即可询问面向用户的行为;工程师检查功能是否存在或某件事是否为 Bug。在 Slack 中询问“上个月有多少 Pro 用户注册?”变成一行文字,而不必在仪表盘中翻找。

对象存储中的会话

持久化层是低调的亮点。该机器人将三个文件保存在名为 huggingface/moon-bot-memory 的私有 HuggingFace Bucket 中。每个线程将其完整的消息历史(包括工具调用)追加为一个 JSONL 文件。线程映射文件将 Slack 时间戳与会话文件关联起来,内存日志保存所有线程中最近 200 次交互,模型可搜索。由于会话存放在对象存储中,部署或崩溃不会造成任何损失:机器人按需下载正确的文件并从中断处继续,即使是在几天之后。

每个回复都会链接回存储桶:Moon Bot 上传 Markdown 响应和会话 JSONL,然后在消息上附加按钮。HuggingFace 将该文件渲染为原生代理跟踪查看器,因此每次交互都可以从线程本身进行审计。

模型无法触及的凭证

安全设计是这篇文章的价值所在。Moon Bot 根据每个 Slack 用户的 Okta 组成员身份(通过电子邮件匹配)解析其访问层级,并映射这些组已经控制的访问权限。Basic 覆盖任何 HuggingFace 员工:代码 Q&A、GitHub 只读和 shell。Elastic 为具有 Elasticsearch 访问权限的人员添加日志和存储技能。Privileged 针对在 Okta 中拥有数据库访问权限的人员,可访问 MongoDB 和 AWS。访客直接拒绝。每个层级都映射到独立的 Linux 用户及其自己的凭证,因此较低层级在物理上缺乏访问 Mongo 或 AWS 的秘密。解析失败时默认关闭:如果无法读取 Okta,所有人都降级为 Basic,并且机器人每次回复时都会说明这一点。

工具调用通过 su -l 在该层级的受限用户下运行,无法访问 /root/(真正的秘密所在)。可疑命令在执行前会触发 Slack 警报,并且模型有一个 report_injection 工具用于自我报告提示注入。本地反向代理覆盖其余部分:机器人在启动时启动 HTTP 代理,每个代理由每层级的令牌门控,并在服务端注入真正的 API 密钥,因此沙盒运行的 runner 访问的是 localhost:9201,永远看不到密钥。Plausible 代理被硬性允许列表限定为单一查询端点,并携带自己的令牌交给每个层级,因此任何人都可以拉取公开的流量分析数据。被入侵的工具调用可以查询其层级允许的内容,但无法窃取凭证。

拉取请求以同样的方式工作。代理的沙盒化 gh 对几乎所有人都是只读的。写入通过专用的进程内工具进行,这些工具生成一个短期有效的 GitHub App 令牌,提交并推送,然后将其丢弃,且该令牌在代理的触及范围之外。由此产生两个特性:任何员工都可以在无需个人写权限的情况下请求草稿 PR;PR 描述由代码组装,而非由模型生成,因此每个 PR 都以一个页脚结尾,注明请求者,并链接到 Slack 线程和代理跟踪。第二个权限低得多的 pod 以 GitHub 机器人的身份运行相同的代码库,没有 Slack 令牌,也没有数据库凭证。

技能是可插拔的部分:注入系统提示的 Markdown 文件,告诉模型如何驱动一个领域。规则是每个技能都包装一个 CLI 工具,绝不直接调用 API,这使得每个技能都可测试且易于替换。该文章列出了八个技能,涵盖 Elasticsearch 日志、MongoDB、Hub 和 Spaces 代码库、GitHub、AWS Athena、Xet 存储以及公开流量分析。

技能接口查询内容
es-cliRust CLIElasticsearch 访问日志
mongomongoshHub 用户数据库
githubgh + 进程内 PR 工具仓库、拉取请求、问题
hub-codegh, grep, findHub 代码库
workloadsgh, grep, findSpaces、Endpoints、Jobs 代码库
athenaAWS CLI 包装器ALB、WAF、CloudFront 日志
sizzleDuckDB 包装器Xet 存储统计
plausibleStats API 包装器公开流量分析

值得复制的模式

该文章称这个模式简单到可以复制:一个存储桶或任何对象存储、Pi SDK、一些技能文件,以及一个处于 Socket Mode 的 Slack 应用。文章说,开始所需的基础设施出奇地少;最难的部分是编写好的技能。这低估了安全脚手架的作用,大多数团队会跳过它。让 Moon Bot 发挥作用的是,风险是通过工程手段消除的,而不是通过策略管理:由独立的 Linux 用户强制执行层级,由本地代理注入凭证,每个 PR 生成并销毁写令牌。

Moon Bot 是一个内部工具,拥有内部工具的优势:单一的 SSO 域、已知用户、一个团队的代码库。可迁移的经验是这个模式:让每个操作都可审计,并让每个凭证都远离使用它的模型。

每天早晨用 3 分钟掌握科技要闻

每个工作日一封邮件,只讲真正重要的 AI 与科技动态。