从Slack操作Claude Code的集成系统。支持多个开发团队共享并使用Claude Code。
该项目通过Slack作为接口来操作Claude Code。使用MCP(Model Context Protocol)将Claude Code封装为服务器,并通过Slack Bot连接。
Slack → Slack Bot → Claude Code MCP Server → Claude Code CLI
@ClaudeBot 来调用Claude Code/claude 快速执行命令--project 选项切换多个项目npm install -g @anthropic-ai/claude-code)Claude Code Bot)和工作区socket-token)connections:writexapp-1-...)并保存app_mentions:read - 读取提及chat:write - 发送消息chat:write.public - 发送到公共频道commands - 接收斜杠命令im:history - 读取DM历史im:read - 读取DMim:write - 发送DMusers:read - 读取用户信息(可选)app_mention - @提及事件message.im - 直接消息事件/claudehttps://example.com (在使用Socket模式时不会使用)Claude Code助手[任务说明] [--project /path/to/project]xoxb-...)# 从GitHub克隆(或直接下载)
git clone https://github.com/your-org/slack-claude-code-integration.git
cd slack-claude-code-integration
# 或直接使用项目目录
cd /home/yusuke/engineers-hub.ltd/in-house-project/slack-claude-code-integration
# 从 .env.example 创建 .env 文件
cp .env.example .env
# 编辑 .env 文件
nano .env # 或使用您喜欢的编辑器
.env文件内容:
# Slack应用认证信息(步骤1中获取的值)
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
SLACK_SIGNING_SECRET=your-signing-secret-here
SLACK_APP_TOKEN=xapp-your-app-token-here
# Claude Code设置
CLAUDE_PATH=claude # Claude CLI路径(通常保持不变)
PROJECT_PATH=/home/yusuke/your-project # 默认操作项目的路径
# 调试设置
DEBUG=true # 开发时设为true
# 确认已安装Claude CLI
which claude
# 如果未安装
npm install -g @anthropic-ai/claude-code
# 确认认证已完成
claude --version
# 在根目录运行
npm run setup
# 构建TypeScript
npm run build
# 或单独安装
npm install # 在根目录
cd claude-code-mcp && npm install && cd ..
cd slack-bot && npm install && cd ..
npm run build # 构建TypeScript
# 开发模式启动(带有自动构建和热重载的TypeScript)
npm run dev
# 或单独启动
# 终端1: TypeScript监视模式
npm run build:watch
# 终端2: MCP服务器
npm run start:mcp
# 终端3: Slack Bot
npm run start:bot
正常启动时的输出示例:
> slack-claude-code-integration@1.0.0 dev
> npm run build && concurrently "npm run build:watch" "npm run start:mcp" "npm run start:bot"
[0] TypeScript编译完成
[1] 监视文件变化...
[2] [MCP] Claude Code MCP服务器已启动
[2] [MCP] Claude路径: claude
[2] [MCP] 项目路径: /home/yusuke/your-project
[3] 连接到Claude Code MCP服务器...
[3] 已连接到Claude Code MCP服务器
[3] 可用工具: [ { 名称: 'claude_code', ... } ]
[3] ⚡️ Slack Claude Code Bot正在运行!
[3] 项目路径: /home/yusuke/your-project
# 构建Docker镜像
npm run docker:build
# 或
docker-compose build
# 启动服务
npm run docker:up
# 或
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止
npm run docker:down
正常启动后会显示如下日志:
[MCP] Claude Code MCP服务器已启动
[MCP] Claude路径: claude
[MCP] 项目路径: /home/yusuke/engineers-hub.ltd/in-house-project
连接到Claude Code MCP服务器...
已连接到Claude Code MCP服务器
可用工具: [
{
"名称": "claude_code",
"描述": "在项目目录中执行Claude Code命令",
"输入模式": { ... }
}
]
[INFO] socket-mode:SocketModeClient:0 正在建立与Slack的新连接...
⚡️ Slack Claude Code Bot正在运行!
项目路径: /home/yusuke/engineers-hub.ltd/in-house-project
🧪 正在测试模式下运行 - 使用echo命令
[INFO] socket-mode:SocketModeClient:0 已连接到Slack
测试模式(默认):
TEST_MODE=true 时,实际使用的是echo命令而非Claude Code生产模式:
TEST_MODE=false 设置后,实际执行Claude Code方法1: 通过环境变量设置(推荐)
# 停止应用程序(Ctrl+C)后
# 在 .env 文件中添加
echo "TEST_MODE=false" >> .env
# 或直接编辑
nano .env
# 添加 TEST_MODE=false
# 重新启动应用程序
./start-test.sh
方法2: 编辑启动脚本
# 编辑 start-test.sh
export TEST_MODE=false # 从 true 更改为 false
方法3: 直接在代码中设置
// slack-bot/index.js 的第263行附近
process.env.TEST_MODE = 'false'; // 从 'true' 更改为 'false'
/invite @Claude Code Bot
(Bot名称为创建时设定的名称)帮助消息:
@Claude Code Bot help
响应示例:
你好!你可以执行Claude Code命令。
使用方法:
@ClaudeBot <你的指令> @ClaudeBot <你的指令> --project /path/to/project
示例:
• @ClaudeBot 执行这个项目的测试
• @ClaudeBot 查看package.json的内容
• @ClaudeBot 修复src/index.js中的错误
获取文件列表(测试模式):
@Claude Code Assistant 列出文件
响应(测试模式):
Claude将会执行: '列出文件' 在 /home/yusuke/engineers-hub.ltd/in-house-project
⚠️ 注意: Bot名称应替换为您实际设置的名称(例如:@Claude Code Assistant)。
检查项目结构:
@Claude Code Bot 告诉我这个项目的结构
检查文件:
@Claude Code Bot 查看package.json的内容
修复代码:
@Claude Code Bot 修复src/index.js中的错误
执行测试:
@Claude Code Bot 执行测试并告诉我结果
在其他项目中执行:
@Claude Code Bot 修复构建错误 --project /home/user/web-app
@Claude Code Bot 执行测试 --project /home/user/api-server
开发环境启动:
# 简单启动
cd /path/to/slack-claude-code-integration
npm run dev
# 测试模式启动
./start-test.sh
# 后台启动
nohup npm run dev > app.log 2>&1 &
生产环境启动(systemd服务示例):
# /etc/systemd/system/slack-claude-bot.service
[Unit]
Description=Slack Claude Code Bot
After=network.target
[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/slack-claude-code-integration
Environment="NODE_ENV=production"
Environment="TEST_MODE=false"
ExecStartPre=/usr/bin/npm run build
ExecStart=/usr/bin/node dist/slack-bot/index.js
Restart=always
RestartSec=1
使用PM2管理(推荐):
# 安装PM2
npm install -g pm2
# 构建TypeScript
npm run build
# 启动应用程序
pm2 start dist/slack-bot/index.js --name slack-claude-bot
# 查看日志
pm2 logs slack-claude-bot
# 重启
pm2 restart slack-claude-bot
# 停止
pm2 stop slack-claude-bot
# 设置自动启动
pm2 startup
pm2 save
查看日志文件:
# 使用PM2时
pm2 logs slack-claude-bot --lines 100
# 直接运行时
tail -f app.log
# 只查看错误日志
grep ERROR app.log
# 查看MCP服务器的日志
grep "[MCP]" app.log
设置日志轮转:
# /etc/logrotate.d/slack-claude-bot
/path/to/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 user group
}
在频道内提及 @Claude Code Bot 来使用:
@Claude Code Bot 执行测试并告诉我结果
@Claude Code Bot 修复src/components/Button.tsx中的错误
@Claude Code Bot 创建新功能的分支
@Claude Code Bot 改善这个项目的README
优点:
通过与Bot的直接消息进行个人工作:
执行测试
更新README.md
查找并修复错误
进行代码审查
优点:
从任何地方使用 /claude 命令执行:
/claude 运行测试
/claude 修复auth.js中的错误
/claude 分析性能问题
/claude 为user.service.ts创建单元测试
优点:
.env中设置的PROJECT_PATH是默认使用的:
@Claude Code Bot 更新包
使用 --project 选项操作其他项目:
@Claude Code Bot 修复构建错误 --project /home/user/web-app
@Claude Code Bot 执行测试 --project /home/user/api-server
希望这些信息对您有所帮助!