细胞克劳德
在Zellij中管理多个Claude Code会话——从您的终端或手机。

______________________________________________________________________
特性
- 命名会话 --以名为Zellij选项卡的方式运行多个Claude Code会话(
@main,@hub,@infra) - 完整CLI --从命令行切换、检查和向任何会话发送消息
- MCP服务器 --让Claude管理兄弟会话:打开、发送、检查、导航
- 电报集成 --监控会话、处理权限请求以及从手机发送语音消息
- 秘密消毒 -在任何输出离开终端之前,API密钥、令牌和凭据都将被屏蔽
- 智能输出解析 --从TUI中提取克劳德的最后一个响应,过滤旋转和噪声
- 零运行时依赖关系 --基于Node.js内置构建;服务器只需要MCP SDK
______________________________________________________________________
先决条件
______________________________________________________________________
快速开始
npm install -g zellij-claude # or: npx zellij-claude
zellij-claude ls # list active sessions
zellij-claude last @hub # last response from @hub
zellij-claude send @hub "run tests" # send a message to @hub
zellij-claude open ~/prj/myapp # open a new session for myapp______________________________________________________________________
CLI 参考
| 命令 | 参数 | 描述 |
|---|---|---|
ls | -- | 列出活动的Claude Code会话 |
last | @ [count] | 显示会话的最后一个响应 |
send | @ | 向会话发送消息 |
open | `[--name @] | |
| [-- flags]` | 在新选项卡中打开新会话 | |
goto | @ | 将焦点切换到会话选项卡 |
rename | `@ | |
| @` | 重命名会话 | |
mcp | -- | 启动MCP服务器(stdio传输) |
install-hooks | -- | 将Telegram挂钩安装到Claude Code设置中 |
______________________________________________________________________
MCP服务器设置
将以下内容添加到您的克劳德代码中 settings.json (通常 ~/.claude/settings.json):
{
"mcpServers": {
"zellij-claude": {
"command": "npx",
"args": ["zellij-claude", "mcp"]
}
}
}这为Zellij中运行的任何Claude会话提供了六个工具:
| 工具 | 说明 |
|---|---|
zellij_ls | 列出活动的Claude Code会话 |
zellij_last | 显示会话的最后响应 |
zellij_send | 向会话发送消息 |
zellij_open | 在新选项卡中打开新的Claude Code会话 |
zellij_goto | 切换到会话选项卡 |
zellij_rename | 重命名会话 |
______________________________________________________________________
会话命名
由zellij claude管理的选项卡前缀为 @ --例如。, @main, @hub, @infraThe @ 前缀将选项卡标记为会话,并使其可由所有CLI命令和MCP工具寻址。
当您打开一个新会话时 zellij-claude open ,会话名称是从目录名称自动派生的。如果具有该名称的选项卡已存在,则会附加一个数字后缀(@myapp-2, @myapp-3等等)。
您可以用以下命令覆盖自动派生的名称 --name 标志:
zellij-claude open --name @backend ~/prj/myapp/api______________________________________________________________________
电报集成
设置
- 需要 克劳德代码电报插件 --先安装并配对。
- 配置您的聊天ID:
- 环境变量: export ZELLIJ_CLAUDE_CHAT_ID= - 配置文件:创建 ~/.config/zellij-claude/telegram.json 与:
{ "chatId": "" }- 安装挂钩:
npx zellij-claude install-hooks你得到了什么
- 完工通知 --当会话完成任务时,您将通过Telegram收到最后一个响应
- 权限按钮 --非-
@main会话向Telegram发送允许/拒绝按钮以请求工具权限 - 语音信息转录 --给克劳德发一条语音留言;它被转录并作为正常信息处理
电报插件补丁(用于权限按钮)
Claude Code Telegram插件会自动丢弃未知的回调查询。一个小补丁将它们作为通道消息转发,因此 @main 可以处理其他会话中的“允许/拒绝”按钮按下。
补丁——添加了3行 if (!m) 分支在 callback_query:data 处理程序:
// File: ~/.claude/plugins/marketplaces/claude-plugins-official/external_plugins/telegram/server.ts
// Find the callback_query handler's `if (!m)` branch and replace:
// Before:
if (!m) {
await ctx.answerCallbackQuery().catch(() => {})
return
}
// After:
if (!m) {
void mcp.notification({
method: 'notifications/claude/channel',
params: {
content: `callback:${data}`,
meta: { chat_id: String(ctx.from.id), user: ctx.from.username ?? String(ctx.from.id) },
},
}).catch(() => {})
await ctx.answerCallbackQuery().catch(() => {})
return
}或者直接让Claude Code来应用它:
“将zellij claude回叫转发补丁应用于Telegram插件。向if (!m)分支在callback_query:data处理程序在~/.claude/plugins/marketplaces/claude-plugins-official/external_plugins/telegram/server.ts.通过将未知回调作为通道消息转发mcp.notification而不是默默地放下它们。"
注: 在Telegram插件更新后,可能需要重新应用此补丁。
在@main中处理回调
当用户按下允许/拒绝时,回调到达 @main 作为一个频道消息,如 callback:allow:hub.添加以下内存条目 @main 自动处理这些:
When a Telegram message matches "callback:allow:" or "callback:deny:":
- allow → send Enter keystroke: zellij action go-to-tab-name @ && zellij action write 13
- deny → send ESC keystroke: zellij action go-to-tab-name @ && zellij action write 27______________________________________________________________________
语音信息
先决条件
brew install whisper-cpp ffmpeg这 ggml-base 该型号(约140 MB)附带Homebrew配方。默认情况下启用语言自动检测。
配置
export ZELLIJ_CLAUDE_WHISPER_LANG=auto # default — or set: en, de, fr, etc.用法
将以下内存条目添加到 @main 因此Claude会自动处理传入的语音消息:
When a Telegram message has attachment_kind="voice":
1. Download via download_attachment with the attachment_file_id
2. Transcribe: bash
/hooks/transcribe.sh
3. Reply with transcription prefixed by 🎤
4. Process transcribed text as a normal message______________________________________________________________________
运作原理
CLI / MCP Server
↓
dispatch.js (command routing)
↓
┌─────────────────┬──────────────────┬────────────────┐
│ registry.js │ screen-parse.js │ sanitize.js │
│ (tab naming, │ (TUI output │ (mask API │
│ collision │ parser, │ keys and │
│ resolution) │ noise filter) │ credentials) │
└─────────────────┴──────────────────┴────────────────┘
↓
zellij.js (Zellij CLI wrapper — uses $ZELLIJ_SESSION_NAME)dispatch.js--解析命令并将其路由到正确的处理程序registry.js--发现@-前缀选项卡、导出会话名称、解决冲突screen-parse.js--捕获当前窗格内容并提取最后一个Claude响应sanitize.js-在转发任何输出之前屏蔽机密(API密钥、令牌、密码)zellij.js--薄薄的包裹zellijCLI;读取$ZELLIJ_SESSION_NAME本届会议
______________________________________________________________________
许可证
麻省理工学院——见 许可证.
