超越实习期的实习项目 - Trail of Bits博客
实习期结束即项目被弃置的日子,我曾经历过。但Trail of Bits与众不同。 今年夏天,作为Dan Guido和Sam Sharps指导下的业务运营实习生,我使用Claude(Anthropic的AI模型)构建了两个自动化工具:每年节省1,250小时的播客工作流,以及让员工通过单一查询找到重要公司知识的Slack导出器。这两个工具都将在我的实习期结束后继续在全公司范围内使用。
播客工作流
Trail of Bits在各个业务领域(应用安全、AI/ML、区块链和密码学)拥有专家团队,其中许多拥有博士学位。他们希望在有共同理念的播客节目中增加嘉宾出场,分享我们在网络安全领域推动边界的所有方式(并鼓励他人也这样做)。为了最好地服务社区,他们专注于填补极少有人能够解决的超特定知识空白。但手动搜索包含这些关键词的播客需要每周数百小时的收听和研究时间。
为了确保我们能在海量内容中找到目标(并实现规模化操作),我们需要一个自动化工作流。具体流程如下:
图1:播客工作流流程图
用户可以手动运行或安排在特定日期和时间执行。在检查剧集是否包含正确关键词后,Claude生成各种基本信息:剧集摘要、演讲者观点、带时间戳的引用、外发邮件草稿等。Replit前端显示所有这些输出。
在构建工作流时,我注意到Claude存在局限性。例如,在确定哪位Trail of Bits员工应该出现在特定播客上时,它会虚构员工。为了解决这个问题,用户通过Replit前端上传Excel文件,将Trail of Bits员工映射到他们擅长的关键词。Claude也无法获取主持人的联系信息,但它可以提取主持人的名字、姓氏和网站,外部API使用这些信息来获取联系信息。以下是Claude和其他补充工具(如Excel文件)生成的洞察示例。
图2:播客工作流输出示例
该工具监控超过50个每周更新的播客。每年就是2,500集!保守估计每集持续30分钟,这个工作流每年节省1,250小时的收听时间。这还不包括获取主持人联系信息、将Trail of Bits专家映射到相关播客以及撰写外发邮件所需的时间。
Slack导出器
由于数百个Slack频道包含数百甚至数千条消息,搜索和分析历史信息非常耗时。因此,Trail of Bits在终端中实现了一个Slack导出器,将频道导出为JSON和/或Markdown格式。用户随后将频道上传到Claude以获得摘要和洞察。
然而,这种实现有两个主要限制。首先,所有员工都需要Slack导出器,但由于其终端实现,只有工程师可以访问。其次,用户必须知道哪些Slack频道包含必要信息,因为所选频道是聊天机器人唯一的上下文。
为了解决第一个挑战,我分发了一个Slack导出器Electron应用程序。用户启动应用程序即可开始导出。不需要终端命令,因此任何人都可以使用它。
与在终端实现中手动阅读每个频道不同,用户现在拥有一个高效得多的UI,可以搜索甚至一次性选择所有频道:
图3:Slack导出器Electron应用实现中的频道搜索
用户选择一个或多个频道后,他们会收到这些导出选项:
图4:Slack导出器Electron应用实现中的导出选项
为了解决终端导出器的第二个限制,我使用Claude的MCP(模型上下文协议)将我们的Slack工作区暴露给Claude。现在,通过Claude桌面应用和/或Claude代码,用户可以搜索所有公共频道和他们加入的私人频道,无需导出。
需要了解每个公司项目的进度吗?我的改进实现只需一次查询即可完成。需要入职新员工,但所有团队成员都很忙?同样,一次查询即可。由于该工具的广泛应用,我们的团队可以专注于推进网络安全的前沿,而不是在Slack频道中筛选信息。
从下图可以看出,应用场景是无限的:
图5:Claude MCP桌面Slack输出
激发热情
每个人都在谈论应用AI,但在聊天机器人之间复制粘贴只是冰山一角。这些项目展示了AI应用可以走得更远。但要构建这些应用,你需要理解用户的问题并让他们参与其中。我的测试过程是这样的:发现错误、实时紧急修复、获得功能请求,然后在当天晚些时候测试该功能。
与实习生离开后即消亡的刻板实习项目不同,我的工具存活了下来,因为通过测试,人们将这些工具应用到自己的挑战中,体验了生产力的提升,然后将它们整合到日常工作中。同样重要的是,他们与其他员工分享了自己的兴奋,使这些工具成为全公司范围的应用。
通过这些项目,Dan、Sam和我希望激发这样的热情:AI不会取代员工,而是增强他们的能力。每个团队都有等待发现的AI用例。在Trail of Bits,我们正在寻找并实现它们,每个人都在贡献,甚至包括实习生。