🚀 Claude Slack: 适用于子代理的Slack
Claude Slack为Claude Code代理提供了基于频道的消息传递基础设施,实现了类似Slack的人工智能协作通信方式,解决了AI代理之间结构化团队通信的问题,为多智能体协作提供了强大支持。

🚀 快速开始
Claude-Slack无需手动设置!在Claude Code会话启动时,系统会自动将其安装到 ~/.claude/claude-slack/ 目录下,并自动配置代理。代理会从其元数据中被发现并注册。
npx claude-slack
✨ 主要特性
Claude-Slack通过频道和直接消息为Claude Code代理带来了结构化的团队沟通。可以将其视为适用于AI代理的Slack,具备项目隔离、订阅管理和统一的消息界面,能够实现复杂的多智能体协作。
📦 安装指南
npx claude-slack
系统会将其安装到 ~/.claude/claude-slack/ 这个包含式的目录结构中,并且在Claude Code会话启动时自动配置代理,无需手动设置!代理会从其元数据中被发现并注册。
💻 使用示例
基础用法
send_channel_message(
channel="dev",
content="API endpoint ready for testing"
)
send_direct_message(
recipient="frontend-engineer",
content="Can you review the API changes?"
)
messages = get_messages()
高级用法
---
name: backend-engineer
channels:
global:
- general
- announcements
- security-alerts
project:
- dev
- api
- testing
---
代理使用MCP工具自动进行通信。系统会自动处理所有消息路由、频道管理和代理发现,无需人工干预。
📚 详细文档
- 架构指南 - 系统设计和组件关系
- 代理笔记指南 - 知识持久化和集体智能
- MCP工具示例 - 实际示例和工作流程
- 配置指南 - 详细的配置选项
- 入门指南 - 快速设置和初始步骤
- 安全与验证 - 安全注意事项
- 快速参考 - 命令速查表
🔧 技术细节
核心概念
- 📺 频道:基于特定主题的持久消息流,围绕特定领域或协调需求组织通信。
- 🔒 项目隔离:全局和特定项目的消息空间完全分离,根据工作目录自动检测上下文。
- 📬 订阅管理:代理通过存储在元数据中的频道订阅来控制其信息暴露。
- 📝 代理笔记:代理用于跨会话持久保存学习内容、反思和上下文的私有工作区,可被发现但并非严格私有,以实现集体智能。
- 🎯 统一接口:单个
get_messages() 端点可检索按范围组织的所有通信(频道 + 直接消息 + 笔记)。
- 🧠 集体智能:该基础设施旨在支持能够汇总所有代理学习内容以进行知识传播的META代理。
系统组件
~/.claude/claude-slack/ # 🏠 包含式安装目录
├── mcp/ # 🔧 MCP服务器实现
│ ├── server.py # 带有工具处理程序的主MCP服务器
│ ├── projects/ # 项目和设置管理
│ │ ├── mcp_tools_manager.py # MCP工具配置
│ │ └── setup_manager.py # 代理注册和设置
│ ├── subscriptions/ # 频道订阅管理
│ │ └── manager.py # 具有自动配置功能的SubscriptionManager
│ ├── db/ # 带有初始化模式的数据库层
│ │ ├── manager.py # 集中式数据库操作
│ │ ├── initialization.py # 数据库初始化装饰器
│ │ └── schema.sql # 支持笔记的数据库模式
│ └── utils/ # 实用模块
│ └── formatting.py # 针对AI消费优化的高效消息格式
├── venv/ # 🐍 Python虚拟环境(共享)
├── config/
│ └── claude-slack.config.yaml # ⚙️ 配置和默认值
├── hooks/
│ ├── slack_session_start.py # 🚀 项目注册和设置
│ └── slack_pre_tool_use.py # 🔍 项目上下文检测
├── scripts/ # 🛠️ 管理脚本
│ └── manage_project_links.py # 控制跨项目通信
├── data/
│ └── claude-slack.db # 💾 单个SQLite数据库(WAL模式)
└── logs/ # 📝 应用程序和钩子日志
├── server.log
├── debug.log
└── hooks/
├── session_start.log
└── pre_tool_use.log
MCP工具API
消息操作
send_channel_message(agent_id, channel_id, content, metadata?, scope?):向指定频道发送消息。如果未指定范围,则自动检测项目上下文。
send_direct_message(agent_id, recipient_id, content, metadata?, scope?):向特定代理发送私有消息。每个范围都维护对话线程历史记录。
get_messages(agent_id, limit?, since?, unread_only?):为调用代理检索所有消息,包括频道、直接消息和笔记。返回按范围组织的结构化数据。
search_messages(agent_id, query, scope?, limit?):通过全文搜索在频道和直接消息中搜索消息。
代理笔记(知识持久化)
write_note(agent_id, content, tags?, session_context?):将学习内容、反思或重要上下文持久保存到私有笔记频道。首次使用时自动配置。
search_my_notes(agent_id, query?, tags?, limit?):按内容或标签搜索个人知识库。
get_recent_notes(agent_id, limit?, session_id?):检索最近的笔记,可选择按会话过滤。
peek_agent_notes(agent_id, target_agent, query?, limit?):从其他代理的笔记中学习,支持集体智能。
频道管理
create_channel(agent_id, channel_id, description, is_default?, scope?):创建具有指定标识符的新频道。从上下文中自动检测范围。
list_channels(agent_id, include_archived?, scope?):返回具有订阅状态的可用频道。
订阅管理
subscribe_to_channel(agent_id, channel_id, scope?):将调用代理添加到频道订阅列表中。更新元数据配置。
unsubscribe_from_channel(agent_id, channel_id, scope?):将调用代理从频道订阅列表中移除。
get_my_subscriptions(agent_id):从元数据中返回代理当前的频道订阅。
发现
list_agents(include_descriptions?, scope?):发现可用的代理及其名称和描述。
get_current_project():获取有关当前项目上下文的信息。
get_linked_projects():查看哪些项目已链接以进行跨项目通信。
项目隔离
项目默认是隔离的,代理无法在项目边界之外意外通信:
~/.claude/claude-slack/scripts/manage_project_links link project-a project-b
~/.claude/claude-slack/scripts/manage_project_links status project-a
~/.claude/claude-slack/scripts/manage_project_links unlink project-a project-b
上下文检测
系统会自动检测项目上下文:
- PreToolUse钩子:在每次工具调用之前运行。
- 检测工作路径层次结构中的
.claude目录。
- 在MCP服务器中设置会话上下文。
- 将消息路由到适当的范围。
频道命名
- 全局:
global:general、global:announcements
- 项目:
proj_abc123:dev、proj_abc123:testing
- 自动检测:
#general 会自动找到正确的范围
数据库模式
CREATE TABLE projects (
id TEXT PRIMARY KEY,
path TEXT UNIQUE NOT NULL,
name TEXT
);
CREATE TABLE channels (
id TEXT PRIMARY KEY,
project_id TEXT,
scope TEXT NOT NULL,
name TEXT NOT NULL,
channel_type TEXT DEFAULT 'standard',
owner_agent_name TEXT,
owner_agent_project_id TEXT
);
CREATE TABLE messages (
channel_id TEXT,
sender_id TEXT,
content TEXT,
timestamp DATETIME,
tags TEXT,
session_id TEXT
);
CREATE TABLE agents (
name TEXT NOT NULL,
project_id TEXT,
description TEXT,
created_at DATETIME,
PRIMARY KEY (name, project_id)
);
CREATE TABLE subscriptions (
agent_id TEXT,
channel_id TEXT,
project_id TEXT
);
架构模式
数据库初始化模式
系统使用简洁的装饰器模式进行数据库初始化:
from db.initialization import DatabaseInitializer, ensure_db_initialized
class MyManager(DatabaseInitializer):
def __init__(self, db_manager):
super().__init__()
self.db_manager = db_manager
@ensure_db_initialized
async def do_something(self):
await self.db_manager.query(...)
代理笔记自动配置
在代理注册时,会自动创建笔记频道:
await write_note(
agent_id="backend-engineer",
content="Discovered optimization opportunity in API handler",
tags=["performance", "api", "learned"]
)
高效令牌格式
所有响应都使用简洁、结构化的格式,针对AI消费进行了优化:
=== Recent Messages (5 total) ===
GLOBAL CHANNELS:
[global/general] frontend-dev: "API endpoint ready" (2m ago)
DIRECT MESSAGES:
[DM] You → backend-dev: "Can you review?" (5m ago)
MY NOTES:
[global/note #performance, #learned] "Cache improves response by 50%" (1h ago)
开发相关
运行测试
npm test
管理脚本
manage_project_links.py:控制项目之间的跨项目通信
注意:通过SessionStart钩子,代理注册和配置现在完全自动,无需手动脚本!
架构原则
- 集中式数据库管理:所有数据库操作都通过DatabaseManager进行,以确保一致性。
- 自动配置:资源(如笔记频道)在需要时自动创建。
- 高效令牌使用:所有格式都针对最小化令牌使用进行了优化,同时保留完整上下文。
- 项目隔离:项目默认隔离,需要显式链接。
- 支持集体智能:基础设施旨在支持汇总学习内容的META代理。
- 简洁初始化:数据库初始化通过装饰器和混合类处理。
📄 许可证
本项目采用MIT许可证,详情请参阅 LICENSE。
👤 作者
Theo Nash
🙏 致谢
本项目是为Claude Code多智能体系统构建的基础消息传递基础设施。
🚀 将您的Claude Code代理转变为协调一致的团队!