技能更新要像数据模型一样频繁

你可以通过技能(skill)教Claude完成符合你风格和需求的任务。技能是包含自然语言说明和Claude可参考文件的Markdown文件。

我们做出的最重要架构决策是将技能文件视为持续更新的服务内容,而非一次发布后就被遗忘的静态文件。

数据模型可能一天内多次变更,比如列名修改、指标定义修正或表格废弃。每次变更都必须及时反映到技能文件中。如果Claude读取的是上周二的技能文件,它就会自信地给出错误答案。

这种情况尤其危险,因为数据使用者无法获得判断答案准确性的上下文。他们不会看到带有趋势线或相关指标的仪表盘,只是在Slack中收到一两个数据点,如果不常关注这些数据,很可能会接受错误答案。

为应对这种不断变化的环境,Claude Tag的运行时会挂载我们的数据仓库的skills/目录,并在每次对话时重新读取。技能文件就是磁盘上的Markdown文件,代理读取它们就像读取任何项目文件一样。

赋予代理超越查询的技能

最初我们打算用Claude Tag创建一个“知识技能”,教Claude哪些表可用、语义层如何组织,然后就此结束。但很快发现,这只能提供正确的数字,却无法给出有用的洞察

大多数数据使用者会提出开放且模糊的问题,比如“这次下跌的原因是什么?”、“你能预测月底数据吗?”、“把数据展示成漏斗图”。回答这些问题,代理不仅要知道数据在哪里,还要懂得分析师如何处理数据

因此,除了知识技能,我们还为Claude Tag挂载了额外的分析和操作手册技能,包括:

  • 预测:何时及如何拟合简单趋势、季节性假设,何时因数据过短或噪声过大而拒绝预测。
  • 用户群和留存分析:标准用户群定义、向领导汇报的留存曲线模板,以及常见陷阱(左截断、生存偏差)。
  • 漏斗分析:关键产品漏斗的标准阶段定义,确保“用户在哪个环节流失”问题回答一致。
  • 图表绘制:不同问题适用的图表类型、配色方案,以及何时用表格更清晰。
  • 分析写作:如何结构化发现(先总结、数字、机制、注意事项),以及根据置信度调整措辞。

这些惯例通常只存在于团队成员脑海,偶尔有文档记录。将它们写成技能,确保Claude像数据科学家一样一致应用。

连接业务上下文,而非仅限数据仓库

即使有知识技能和操作手册技能,也不总能回答所有问题。比如“为什么周二注册量下降?”答案往往不在数据模型中,而是分散在Slack讨论、事件追踪、发布说明和文档中。

为此,我们将Claude Tag接入内部知识索引,索引涵盖公司文档、讨论和事件。当代理发现指标变动时,可以搜索该索引获取当时的上下文:当天早上发生的事件、功能开关变更、竞争对手公告等。

答案可能是:“周二注册量下降12%,当天上午9点到11点支付服务出现故障,下降主要集中在受影响区域。”

示意图

如果你的组织有知识图谱、内部搜索或结构良好的事件和变更日志,连接Claude Tag是继数据仓库之后最有价值的信息源。你也可以让Claude Tag读取Slack关键频道内容以获取上下文。

谨慎授权服务账户

Claude Tag以服务账户身份查询数据仓库,而非提问的用户。这样设计合理(避免每个Slack用户都需仓库凭证),但任何能@机器人者都拥有机器人的数据访问权限。没有基于用户的行级安全控制:服务账户能读的数据,频道内任何人都能查询。

我们采取五项措施(强烈建议认真执行,因为错误难以纠正):

  1. 限制服务账户仅访问受管数据。 在Anthropic,服务账户只能读语义层输出表和其上游的精选数据集,不能访问原始事件流、暂存模式或个人沙箱。若问题涉及边界外数据,代理会明确告知而非猜测。
  2. 对列级个人信息(PII)分类并拒绝服务账户访问。 我们维护数据目录,跟踪每列来源和流向。新列由Claude扫描并标记可能的PII,人工审核后更新元数据。服务账户无PII权限,仓库列级访问控制使敏感列对代理不可见。
  3. 在技能文件中记录连接路径。 仓库技能详细说明代理如何连接(CLI、API或MCP服务器)及认证方式,方便区分连接失败原因,提升错误提示清晰度。
  4. 将Claude的频道成员身份视为访问授权。 将Claude Tag加入Slack频道即授予该频道成员访问权限,频道列表由数据团队管理。
  5. 为每次查询打标签。 包括查询界面、对话和请求用户(若Slack提供),便于成本归因和审计追踪。

我们的总体策略是:Slack中的数据分析代理是受管仓库的共享只读副本,权限范围严格限定。

记录每个答案

判断代理回答是否充分,不能凭肉眼。

我们为每个Claude Tag处理的问题记录结构化事件,包括:

  • 加载的技能文件及版本;
  • 用户是否点赞、点踩或回复纠正;
  • 涉及表的任何数据质量警告,并在答案底部显示警告,避免数据过期信息被忽略。

这些数据用于两个视图:

  • 追踪采用率,即代理查询中通过受管层而非临时SQL的比例,按界面和领域划分;
  • 追踪正确率,通过点踩和纠正率衡量,是评估准确性的在线指标。

数据指标示意

采用率是我们最有价值的指标,下降通常意味着技能文件失效或出现语义层未覆盖的新问题类型。

加速自助分析的实践

Claude Tag线程成为新会议

我们最喜欢且最有效的Claude Tag线程通常有多人参与,大家贡献想法和上下文,Claude负责繁重工作。

例如,数据团队成员问为什么某收入仪表盘加载变慢。Claude发现查询结果未缓存且有bug导致页面加载缓慢。

Claude通知仪表盘负责人,负责人立即修复缓存问题,bug另行处理。

负责人又问还有哪些仪表盘变慢,发现数十个受同一缓存错误影响。Claude编写修复方案,数据团队审核,所有仪表盘一小时内恢复正常。

线程示意

这些线程公开,方便多人了解背景(故障原因、修复过程),且任何人都能参与贡献,避免被动阅读。

建议将代理放在共享频道,工作集中在线程中而非私聊,线程可作为可审查的历史记录。

Claude Tag处理重复任务

许多数据工作是周期性重复的,如管道健康检查、关键指标监控。你可以让Claude创建循环任务,定时或响应异常变化执行。我们实现的示例包括:

  • 主动汇报:每周例会前总结上周变化、与前周对比及重点事项。
  • 测试监控:实验期间多次汇报,发现设置中途变更并及时修正。
  • 可观测性:监控管道和仪表盘,管道失败时自动调查、草拟修复并通知值班人员,指标异常时提供可能原因并预先检查。
  • 问题分流:监控数据问题频道,自动判断直接回答、深入调查或转人工,大部分工作提前完成。

你也可以询问@Claude它在频道中见过哪些重复任务,如何帮你设计循环。

需要时介入

你可以让Claude在任意频道更主动,实时阅读并在需要时协助。过去一个月内,在某数据频道,Claude Tag回答了超过75%的问题,通常1-2分钟内完成,且无需被@。

例如,一位团队成员问某仪表盘是否包含新使用类别。90秒内Claude解释数据定义,确认缺少新分类,提出修复方案并草拟PR。数据科学家审核通过后,Claude合并PR并刷新仪表盘。

自动修复示意

入门指南

如果你已完成我们第一篇文章中的工作,Slack部署主要是搭建管道,顺序很重要:

  1. 先确定权限。 在写任何代理代码前,明确服务账户可访问的数据。后期扩权限比收回更容易。
  2. 其次是分发。 选择挂载仓库或通过MCP加载技能,验证端到端更新及时性:修改技能文件,确认Claude Tag在SLA内读取。
  3. 从第一天起收集遥测。 不会事后补录旧对话,第一条问题就记录结构化事件。
  4. 有条件时接入知识索引。 仓库回答“是什么”,内部文档和事件流回答“为什么”。数据路径稳定后尽快接入。
  5. 最后开发分析技能。 先创建数据访问技能,再根据实际问题需求开发预测、用户群、漏斗等分析技能。

本文作者:Anthropic数据科学与数据工程团队成员Clement Peng和Lily Zhao,Josh Cherry和Michael Segner协助贡献。