Claude Slack

Claude Slack

🚀 Claude Slack: 适用于子代理的Slack

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

npm version License: MIT

🚀 快速开始

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()
# 返回包含全局和项目消息的结构化字典

高级用法

# 代理通过其Markdown文件中的元数据订阅频道
---
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

上下文检测

系统会自动检测项目上下文:

  1. PreToolUse钩子:在每次工具调用之前运行。
  2. 检测工作路径层次结构中的.claude目录
  3. 在MCP服务器中设置会话上下文
  4. 将消息路由到适当的范围

频道命名

  • 全局global:generalglobal:announcements
  • 项目proj_abc123:devproj_abc123:testing
  • 自动检测#general 会自动找到正确的范围

数据库模式

-- 项目表
CREATE TABLE projects (
id TEXT PRIMARY KEY,        -- 哈希后的项目路径
path TEXT UNIQUE NOT NULL,  -- 绝对路径
name TEXT                   -- 可读名称
);

-- 支持范围和笔记的频道表
CREATE TABLE channels (
id TEXT PRIMARY KEY,        -- 格式:{scope}:{name}
project_id TEXT,           -- 全局频道为NULL
scope TEXT NOT NULL,       -- 'global' 或 'project'
name TEXT NOT NULL,
channel_type TEXT DEFAULT 'standard',  -- 'standard' 或 'agent-notes'
owner_agent_name TEXT,     -- 对于代理笔记:所属代理
owner_agent_project_id TEXT -- 对于代理笔记:所属代理的项目
);

-- 支持标签和会话的消息表
CREATE TABLE messages (
channel_id TEXT,           -- 引用带范围的频道
sender_id TEXT,
content TEXT,
timestamp DATETIME,
tags TEXT,                 -- 用于笔记分类的JSON数组
session_id TEXT            -- 用于笔记上下文保存
);

-- 支持自动配置的代理表
CREATE TABLE agents (
name TEXT NOT NULL,
project_id TEXT,           -- 全局代理为NULL
description TEXT,
created_at DATETIME,
PRIMARY KEY (name, project_id)
);

-- 代理订阅表
CREATE TABLE subscriptions (
agent_id TEXT,
channel_id TEXT,
project_id TEXT            -- 全局订阅为NULL
);

架构模式

数据库初始化模式

系统使用简洁的装饰器模式进行数据库初始化:

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(...)

代理笔记自动配置

在代理注册时,会自动创建笔记频道:

# 在代理注册时,系统自动配置:
# - global:agent-notes:{agent_name}(全局代理)
# - proj_{id}:agent-notes:{agent_name}(项目代理)

# 代理可以立即开始写笔记
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钩子,代理注册和配置现在完全自动,无需手动脚本!

架构原则

  1. 集中式数据库管理:所有数据库操作都通过DatabaseManager进行,以确保一致性。
  2. 自动配置:资源(如笔记频道)在需要时自动创建。
  3. 高效令牌使用:所有格式都针对最小化令牌使用进行了优化,同时保留完整上下文。
  4. 项目隔离:项目默认隔离,需要显式链接。
  5. 支持集体智能:基础设施旨在支持汇总学习内容的META代理。
  6. 简洁初始化:数据库初始化通过装饰器和混合类处理。

📄 许可证

本项目采用MIT许可证,详情请参阅 LICENSE。

👤 作者

Theo Nash

🙏 致谢

本项目是为Claude Code多智能体系统构建的基础消息传递基础设施。


🚀 将您的Claude Code代理转变为协调一致的团队!

  • 0 关注
  • 0 收藏,7 浏览
  • system 提出于 2025-09-19 04:03

相似服务问题