一键导入
feishu-claude-code-bridge
Bridge Feishu/Lark messenger with local Claude Code CLI for streaming conversations, per-chat sessions, and workspace management
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Bridge Feishu/Lark messenger with local Claude Code CLI for streaming conversations, per-chat sessions, and workspace management
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Create AI marketing videos and images using Arcads API — Seedance, Sora, Veo, Kling, Nano Banana, ChatGPT Image, and multi-step ad pipelines
Generate AI marketing videos and static image ads using the Arcads API with skills for Seedance 2.0, Sora 2, Veo 3.1, Kling 3.0, Nano Banana, and 37 Meta ad templates
Create AI marketing videos and images using Arcads API with Seedance 2.0, Sora 2, Veo 3.1, Kling 3.0, Nano Banana, and 37 static Meta ad templates
Generate AI marketing videos and images using Arcads creative stack (Seedance 2.0, Sora 2, Veo 3.1, Kling, Nano Banana, ChatGPT Image) from Claude Code or Cursor
Generate AI marketing videos and static image ads using Arcads external API with Seedance 2.0, Sora 2, Veo 3.1, Kling, Nano Banana, and 37-template Meta image library
Create AI marketing videos and static Meta image ads using the Arcads API with Seedance 2.0, Sora 2, Veo 3.1, Kling, Nano Banana, ChatGPT Image, and 37 static ad templates
| name | feishu-claude-code-bridge |
| description | Bridge Feishu/Lark messenger with local Claude Code CLI for streaming conversations, per-chat sessions, and workspace management |
| triggers | ["set up feishu bridge with claude code","connect lark messenger to claude cli","configure feishu bot for claude code","fix feishu claude bridge not responding","manage claude code workspaces in feishu","troubleshoot lark channel bridge","stream claude responses to feishu","set up access control for feishu bot"] |
Skill by ara.so — Claude Code Skills collection.
lark-channel-bridge connects Feishu (Lark) messenger with your local Claude Code CLI. Messages sent to the bot are forwarded to claude running in a working directory you control, with responses streaming back to Lark in real-time cards. Features:
/wsclaude CLI installed and authenticated: https://docs.anthropic.com/en/docs/claude-code/quickstartnpm install -g lark-channel-bridge
# or
pnpm add -g lark-channel-bridge
Important: Always install globally before using daemon/service commands. npx paths are ephemeral and break background services.
lark-channel-bridge run
On first run without config:
~/.lark-channel/config.json (mode 600)# Foreground (interactive)
lark-channel-bridge run [-c <config>]
# List all running bridges
lark-channel-bridge ps
# Kill a specific bridge
lark-channel-bridge kill <id|#>
# Help
lark-channel-bridge --help
Background OS-managed service with auto-restart:
# Install and start daemon
lark-channel-bridge start
# Stop daemon
lark-channel-bridge stop
# Restart in place
lark-channel-bridge restart
# Check status (pid, logs, exit code)
lark-channel-bridge status
# Remove service definition
lark-channel-bridge unregister
Platform mapping:
~/Library/LaunchAgents/ai.lark-channel-bridge.bot.plist~/.config/systemd/user/lark-channel-bridge.bot.service (run loginctl enable-linger $USER for persistence across logout)LarkChannelBridge.Bot with launcher at ~/.lark-channel/daemon-launcher.cmdLogs: ~/.lark-channel/logs/daemon-stdout.log and daemon-stderr.log
lark-channel-bridge migrate
Moves data from old paths (~/.config/lark-channel-bridge/, ~/.cache/lark-channel-bridge/) to ~/.lark-channel/.
Send these inside Feishu/Lark chats:
| Command | Description |
|---|---|
/new, /reset | Clear current chat's Claude session |
/cd <path> | Switch working directory (resets session) |
/ws list | List named workspaces (interactive card) |
/ws save <name> | Save current directory as workspace |
/ws use <name> | Switch to named workspace |
/ws remove <name> | Delete workspace |
/status | Show current directory/session/agent |
/config | Adjust preferences (reply style, access control, timeouts) |
/stop | Terminate running Claude process |
/timeout [N|off|default] | Set idle watchdog (minutes) for session |
/ps | List all running bridge processes |
/exit <id|#> | Stop a bridge process |
/reconnect | Force WebSocket reconnect |
/doctor [description] | Self-diagnose using recent logs |
/help | Show help card |
Any other /xxx | Forwarded to Claude verbatim |
Reply behavior:
@-mentioned (default since 0.1.22)/config → "Require @bot in groups"~/.lark-channel/config.json:
{
"appId": "cli_xxxxxxxxxxxxxxxx",
"appSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"preferences": {
"access": {
"allowedUsers": [],
"allowedChats": [],
"admins": []
},
"requireAtInGroups": true,
"defaultTimeoutMinutes": 0,
"replyStyle": "streaming",
"showToolCalls": true
}
}
Configure via /config command in Feishu or edit JSON directly.
Scenario: Personal use only
{
"preferences": {
"access": {
"allowedUsers": ["ou_your_open_id_here"],
"allowedChats": [],
"admins": []
}
}
}
Scenario: Team with restricted admins
{
"preferences": {
"access": {
"allowedUsers": ["ou_user1", "ou_user2", "ou_user3"],
"allowedChats": [],
"admins": ["ou_admin_open_id"]
}
}
}
Scenario: Specific groups only
{
"preferences": {
"access": {
"allowedUsers": [],
"allowedChats": ["oc_group1_id", "oc_group2_id"],
"admins": ["ou_admin_open_id"]
}
}
}
Finding IDs: Have users message the bot, then:
grep '"event":"enter"' ~/.lark-channel/logs/$(date +%Y-%m-%d).log | tail -5
Each line contains chatId and senderId (user's open_id).
Notes:
/account, /config, /exit, /reconnect, /doctor, /cd, /ws| Path | Content |
|---|---|
~/.lark-channel/config.json | App credentials (mode 600) |
~/.lark-channel/sessions.json | Session IDs, working directories per chat |
~/.lark-channel/workspaces.json | Named workspace map |
~/.lark-channel/processes.json | Process registry for ps/stop |
~/.lark-channel/media/<chatId>/ | Downloaded files (24h cleanup) |
~/.lark-channel/logs/YYYY-MM-DD.log | Structured logs (7-day retention, configurable via LARK_CHANNEL_LOG_DAYS) |
# Install globally first
npm install -g lark-channel-bridge
# Start daemon with auto-restart
lark-channel-bridge start
# Check status
lark-channel-bridge status
# View logs
tail -f ~/.lark-channel/logs/$(date +%Y-%m-%d).log
In Feishu chat:
/cd /path/to/project-a
/ws save project-a
/cd /path/to/project-b
/ws save project-b
/ws list
# Click button or:
/ws use project-a
Session history is preserved per workspace.
Global default (applies to new sessions):
/config
# Set "Default timeout (minutes)" to 10
Per-session override:
/timeout 5 # 5 minutes for this chat
/timeout off # disable for this chat
/timeout default # revert to global default
Watchdog kills Claude if no output for N minutes; card annotated with ⏱ N min no response, auto-terminated.
~/.lark-channel/media/<chatId>/Bot not responding:
/status
# Check if session/directory valid
/doctor The bot stopped replying after I changed directories
# Claude analyzes recent logs and suggests fixes
/reconnect
# Force WebSocket reconnect if network interrupted
Check logs:
tail -f ~/.lark-channel/logs/$(date +%Y-%m-%d).log | jq
List running processes:
lark-channel-bridge ps
# or in Feishu:
/ps
Cause: claude CLI not authenticated or session points to nonexistent directory.
Fix:
/status # inspect current state
/new # reset session
/cd /valid/path # switch to valid directory
Verify Claude CLI works:
cd /your/project
claude "test message"
Cause: Claude subprocess hung; idle watchdog may have triggered.
Fix:
/stop # terminate current run
/timeout 10 # enable 10-minute watchdog
Adjust global default via /config.
Cause: Old version (pre-0.1.0) had filename dedup bug.
Fix:
npm update -g lark-channel-bridge
# or
pnpm update -g lark-channel-bridge
Cause: User services disabled after logout.
Fix:
loginctl enable-linger $USER
lark-channel-bridge restart
Cause: Lark routes events randomly to multiple WebSocket connections for same app.
Fix:
lark-channel-bridge ps
lark-channel-bridge kill <id> # kill duplicates
# or in Feishu:
/ps
/exit <id>
run command prompts if existing process detected.
Default: 7-day retention, daily rotation.
Override:
export LARK_CHANNEL_LOG_DAYS=3
lark-channel-bridge restart
Or clean manually:
find ~/.lark-channel/logs/ -name "*.log" -mtime +3 -delete
| Variable | Default | Description |
|---|---|---|
LARK_CHANNEL_LOG_DAYS | 7 | Log retention days; older logs pruned at startup |
Generated automatically by start, but can be customized at:
~/.config/systemd/user/lark-channel-bridge.bot.service
Example customization:
[Service]
Environment="LARK_CHANNEL_LOG_DAYS=3"
Environment="NODE_ENV=production"
Restart=always
RestartSec=10
After editing:
systemctl --user daemon-reload
systemctl --user restart lark-channel-bridge.bot
~/Library/LaunchAgents/ai.lark-channel-bridge.bot.plist
Customize environment variables:
<key>EnvironmentVariables</key>
<dict>
<key>LARK_CHANNEL_LOG_DAYS</key>
<string>3</string>
</dict>
Reload:
launchctl unload ~/Library/LaunchAgents/ai.lark-channel-bridge.bot.plist
launchctl load ~/Library/LaunchAgents/ai.lark-channel-bridge.bot.plist
Not officially supported but community users run:
FROM node:20-slim
RUN npm install -g lark-channel-bridge
VOLUME /root/.lark-channel
CMD ["lark-channel-bridge", "run"]
Mount config as volume:
docker run -d \
-v ~/.lark-channel:/root/.lark-channel \
--name feishu-bridge \
your-image
start/daemon commands/configtail -f ~/.lark-channel/logs/$(date +%Y-%m-%d).loglark-channel-bridge start/status first when troubleshooting response issues/doctor for self-diagnosis with automatic log analysisMIT