PhD_fleet:通过Slack管理虚拟AI博士生研究实验室
PhD_fleet 是一个Python工具包,允许单一研究人员(导师)通过Slack生成和与Claude Code代理群进行对话。每个代理拥有独立的工作区,通过Slack消息驱动交互,文件系统作为长期记忆。还包括一个教练代理,提供基于证据的反馈以提升指导技能。
PhD_fleet 是一个面向研究人员的Python工具包,旨在通过Slack平台管理一个由AI代理组成的虚拟研究实验室。该工具允许单一研究人员(称为“导师”)生成多个Claude Code代理,每个代理模拟一名博士生,在独立的工作区内进行科研活动。代理之间通过Slack消息进行交互,每个消息驱动一个回合(turn),而文件系统则充当长期记忆,确保工作状态在机器人重启后仍然保留。
每个AI学生代理拥有自己的工作目录,其中包含个人资料、项目简介、研究日志(JOURNAL.md)和笔记。导师可以通过Slack向特定代理发送消息,代理将以研究方向相关的回复进行交互。代理的工作状态和文件系统会持续保存,即使机器人重启也不会丢失。此外,每个代理的配置文件中包含权限黑名单,防止访问敏感路径(如.env、.ssh)或执行特权命令(如sudo、chmod),从而增强安全性。机器人仅接受配置中指定的单一用户ID发送的消息,进一步降低风险。
除了学生代理,PhD_fleet 还配备了一个“教练”代理。教练代理监控导师与学生的互动,并基于教育学理论(如GROW模型、SBI模型、Vygotsky最近发展区等)提供反馈,帮助导师提升指导技能。教练代理仅在收到命令时响应,不会自动介入。导师可以通过/coach-review命令请求对特定学生的指导进行回顾,教练会分析过去一段时间内的互动,指出优点和改进点,并维护一个纵向观察文件。
该工具提供三个主要的Slash命令:/new-student 用于创建新学生代理,它会自动搭建工作区、创建Slack频道并启动第一个回合;/coach-review [天数] 用于请求教练对特定学生的指导进行回顾;/claude-status 用于快速查看所有代理的状态摘要,包括回合数、上下文大小、累积令牌数、模型、成本和GitHub链接(如果有)。此外,每个代理的工作区可以通过配置自动提交到GitHub分支,便于审阅。如果未配置GitHub源,此步骤会静默跳过。
安装相对简单:首先克隆仓库,安装依赖(推荐使用虚拟环境),然后配置Slack应用令牌和用户ID,最后运行bot.py即可。工具支持Socket Mode,无需开放入站端口,适合在NAT或私有子网中运行。要求Python 3.11及以上版本,并需要Claude Code CLI和Claude.ai订阅或Anthropic API密钥。设置过程包括创建Slack应用、获取令牌、配置环境变量、设置Claude认证(推荐使用订阅方式)等步骤。对于长期运行,建议使用进程管理器如tmux或systemd。
工作原理方面,每个学生代理位于students/<name>/目录下,包含CLAUDE.md(角色和项目简介)、JOURNAL.md(只追加的研究日志)、notes/(私人笔记)以及实际工作成果。共享论文库library/位于项目根目录,所有代理都可以读取和写入:第一个阅读者写入规范摘要,后续阅读者添加单独的笔记文件,索引由机器人在每个回合后自动重新生成。引用键冲突通过字母后缀解决。如果配置了GitHub源,机器人在每个回合后会将代理的工作区强制推送到一个分支,Slack消息中包含审查链接。
安全模型采用纵深防御,但并非沙箱。每个代理的.claude/settings.json包含权限黑名单,禁止读取敏感路径(如.env、.ssh)和运行特权命令(如sudo、chmod)。然而,这并不能完全防范提示注入攻击。因此,建议仅在可接受风险的主机上运行,并只允许单个配置的导师用户。
局限性包括:仅支持单导师模式,无团队或多导师功能;代理仅是被动响应,不会主动提议或提问。此外,机器人在短暂断开时能重新连接,但进程退出后无法自行恢复。
总体而言,PhD_fleet 为独立研究人员提供了一个有趣且实用的工具,通过AI代理模拟研究团队,既促进科研产出,又帮助培养指导能力。其模块化设计和清晰的文档降低了使用门槛,但需注意当前仅支持单一导师模式,且代理的响应完全被动。