Skip to main content

feishu-codex-bridge

Run local Codex CLI from Feishu/Lark chat with sessions, attachments, and background service support

설치로 이동

소스 정보

저장소
reason-machines/codex-skills
최근 소스 활동
2026년 6월 11일 19:53
감지된 SKILL.md 언어
영어
스타
0
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
feishu-codex-bridge
description
Run local Codex CLI from Feishu/Lark chat with sessions, attachments, and background service support
triggers
["how do I set up the Feishu Codex bridge","configure feishu codex bridge for my team","run codex commands from Lark chat","manage Feishu bot sessions and workspaces","troubleshoot feishu-codex-bridge connection","set up background service for Lark Codex bot","use codex CLI through Feishu messages","configure reasoning effort for Feishu Codex bridge"]
# Feishu Codex Bridge > Skill by [ara.so](https://ara.so) — Codex Skills collection. A local bridge that connects Feishu/Lark chat to your local Codex CLI. Send messages in Feishu/Lark and the bridge runs `codex exec` on your machine, streaming results back to chat with session persistence, file attachments, and background service support. ## What It Does - **Chat-to-CLI Bridge**: Converts Feishu/Lark messages into local `codex exec` commands - **Session Management**: Maps each chat/topic to a persistent Codex session - **Attachment Support**: Downloads images and files for Codex to process - **Workspace Management**: Switch between named project directories - **Background Service**: Runs as a macOS launchd service - **Access Control**: Allowlist users, chats, and admin commands - **Lark-CLI Integration**: Gives Codex API access to Lark messages, docs, calendars ## Installation ### Global NPM Install ```bash npm i -g feishu-codex-bridge feishu-codex-bridge --version ``` ### First-Time Setup ```bash feishu-codex-bridge start ``` This interactive setup will: 1. Find or install Codex CLI (`@openai/codex`) 2. Check `codex login` status and prompt if needed 3. Show a QR code for Feishu/Lark app creation 4. Create PersonalAgent app and save config 5. Install and initialize `lark-cli` with the same App ID 6. Start listening for chat events After setup, test in Feishu/Lark DM: ```text /status Help me inspect this repo ``` ## Requirements - Node.js >= 20 - Network access to npm, OpenAI/Codex, and Feishu/Lark platform - Terminal for QR scan and login prompts ### Custom Codex Binary ```bash export CODEX_BIN="/path/to/codex" ``` Bridge checks these locations in order: 1. `$CODEX_BIN` 2. `codex` in `$PATH` 3. `~/.feishu-codex-bridge/codex-cli` 4. `/Applications/Codex.app/Contents/Resources/codex` (macOS) ## Configuration ### Directory Structure ``` ~/.feishu-codex-bridge/ ├── config.json # App config and preferences ├── secrets.enc # Encrypted App Secret store ├── sessions.json # Chat-to-session mapping ├── workspaces.json # Named workspaces ├── processes.json # Live process registry ├── service.log # Service stdout ├── service.err.log # Service stderr ├── logs/YYYY-MM-DD.log # Daily structured logs ├── media/<chatId>/ # Downloaded attachments (24h TTL) ├── codex-cli/ # Private Codex CLI install └── lark-cli/ # Private Lark CLI install ``` ### config.json Structure ```json { "appId": "cli_a1234567890abcde", "tenant": "feishu", "preferences": { "codexReasoningEffort": "high", "timeout": 300, "replyMode": "stream", "allowedUsers": [], "allowedChats": [], "admins": [] } } ``` ### Reasoning Effort Set globally in `config.json` or per-chat via `/config`: ```json { "preferences": { "codexReasoningEffort": "xhigh" } } ``` Values: `minimal`, `low`, `medium`, `high`, `xhigh`. Omit to inherit from `~/.codex/config.toml`. ### Access Control Restrict bot access in `config.json`: ```json { "preferences": { "allowedUsers": ["ou_1234567890abcdef"], "allowedChats": ["oc_9876543210fedcba"], "admins": ["ou_1234567890abcdef"] } } ``` Find IDs from logs: ```bash grep '"event":"enter"' ~/.feishu-codex-bridge/logs/$(date +%Y-%m-%d).log | tail -5 ``` ## Chat Commands ### Status and Control ```text /status # Show cwd, session, agent, reasoning effort /help # Show help card with all commands /stop # Stop current Codex run /reconnect # Reconnect WebSocket /ps # List bridge processes /exit <id|#> # Stop a bridge process (admin) /doctor [description] # Diagnose bridge issues with Codex ``` ### Session Management ```text /new # Reset current chat's session /reset # Alias for /new /resume [N] # List and resume recent sessions in cwd /timeout [N|off|default] # Set idle timeout for current session ``` ### Workspace Management ```text /cd <path> # Change working directory (resets session) /ws list # List named workspaces /ws save <name> [path] # Save workspace (defaults to current cwd) /ws use <name> # Switch to workspace /ws remove <name> # Delete workspace ``` Example workspace workflow: ```text /cd ~/projects/api-server /ws save api-server /cd ~/projects/frontend /ws save frontend /ws list /ws use api-server ``` ### Configuration ```text /config # Open interactive config menu /account # View or change Feishu/Lark app (admin) ``` ## Background Service ### Install and Manage (macOS launchd) ```bash # Complete foreground setup first feishu-codex-bridge start # Test with /status in chat, then Ctrl+C # Install service feishu-codex-bridge service install launchd # Check status feishu-codex-bridge service status # View logs feishu-codex-bridge service logs --follow # Restart feishu-codex-bridge service restart # Uninstall feishu-codex-bridge service uninstall ``` ### Service Logs ```bash # Stdout tail -f ~/.feishu-codex-bridge/service.log # Stderr tail -f ~/.feishu-codex-bridge/service.err.log # Structured daily logs tail -f ~/.feishu-codex-bridge/logs/$(date +%Y-%m-%d).log ``` ## Platform Configuration After QR setup, configure in Feishu/Lark Developer Console: ### Required Permission Scopes - `im:message` - `im:message:send_as_bot` - `im:resource` - `im:chat` (for group creation) - `drive:drive` (for cloud-doc comments) ### Event Subscriptions (Long-Connection Mode) - `im.message.receive_v1` - `card.action.trigger` - `drive.notice.comment_add_v1` (for `@bot` in docs) - `im.message.reaction.created_v1` (optional) - `im.message.reaction.deleted_v1` (optional) - `im.chat.member.bot.added_v1` (optional) **Important**: Bridge and `lark-cli` must use the **same** App ID. Do not run `lark-cli config init --new` after bridge setup. ## User OAuth Required only for accessing personal resources (user's docs, calendar, chat history): ```bash export PATH="$HOME/.feishu-codex-bridge/lark-cli/node_modules/.bin:$PATH" lark-cli auth login --recommend ``` Bot identity works for tenant/bot APIs. User OAuth needed for personal resource access. ## Development ### From Source ```bash git clone https://github.com/QQQingyu/feishu-codex-bridge.git cd feishu-codex-bridge npx pnpm@10.20.0 install npx pnpm@10.20.0 build node bin/feishu-codex-bridge.mjs --help ``` ### Type Checking and Tests ```bash npx pnpm@10.20.0 typecheck npx pnpm@10.20.0 test ``` ## Troubleshooting ### Bot is Silent ```bash # Check process state feishu-codex-bridge ps feishu-codex-bridge service status # Follow logs feishu-codex-bridge service logs --follow # Check today's structured logs tail -f ~/.feishu-codex-bridge/logs/$(date +%Y-%m-%d).log ``` If process is running but bot doesn't respond, verify: - Permission scopes in Developer Console - Event subscriptions are enabled - Long-connection mode is active ### Codex CLI Issues ```bash # Auto-diagnose feishu-codex-bridge doctor # Rerun setup feishu-codex-bridge start ``` Common fixes: - Codex not in PATH: Bridge auto-installs to `~/.feishu-codex-bridge/codex-cli` - Not logged in: Setup prompts for `codex login` - App mismatch: Ensure bridge and lark-cli use same App ID ### Lark CLI Path Issues Add to shell profile for direct terminal usage: ```bash export PATH="$HOME/.feishu-codex-bridge/lark-cli/node_modules/.bin:$PATH" ``` For Codex runs, bridge handles PATH automatically. ### App ID Mismatch If `lark-cli` was initialized with a different app: ```bash feishu-codex-bridge start # Follow prompt to switch lark-cli back to bridge app ``` Never run `lark-cli config init --new` after bridge setup. ### Hanging Codex Runs ```text # In chat: /stop # Set idle timeout globally /config # Or for current session only: /timeout 10 ``` ### Process Conflicts Only one bridge instance per Feishu/Lark app. Stop foreground before installing service: ```bash # Stop all bridge processes feishu-codex-bridge ps feishu-codex-bridge exit <id> # Or kill directly pkill -f feishu-codex-bridge ``` ### Log Analysis ```bash # Recent events grep '"event":"enter"' ~/.feishu-codex-bridge/logs/$(date +%Y-%m-%d).log | tail -10 # Errors grep '"level":"error"' ~/.feishu-codex-bridge/logs/$(date +%Y-%m-%d).log | tail -10 # Specific chat grep '"chatId":"oc_..."' ~/.feishu-codex-bridge/logs/$(date +%Y-%m-%d).log ``` ## Common Patterns ### Multi-Project Workspace Setup ```typescript // Save workspaces for quick switching /cd ~/work/backend-api /ws save backend /cd ~/work/frontend-app /ws save frontend /cd ~/work/docs /ws save docs // Switch between projects /ws use backend Help me add rate limiting to the auth endpoint /ws use frontend Update the login form to show better errors /ws use docs Generate API docs from the OpenAPI spec ``` ### Session Resume After Restart ```text # List recent sessions in current directory /resume # Resume specific session (shows last 10) /resume 3 ``` ### Per-Chat Reasoning Effort ```text # High effort for complex refactoring /config # Select "Reasoning Effort" > "xhigh" # In different chat, use default /config # Select "Reasoning Effort" > "default" ``` ### Access Control Setup ```json { "preferences": { "allowedUsers": [ "ou_dev_team_member_1", "ou_dev_team_member_2" ], "allowedChats": [ "oc_dev_team_group" ], "admins": [ "ou_dev_team_member_1" ] } } ``` ### Debugging Bridge Behavior ```text # In chat: /doctor The bot isn't responding to file attachments # Codex will analyze recent logs and suggest fixes ``` ## Architecture ```text Feishu/Lark Chat ↓ WebSocket Bridge Process ↓ spawn codex exec/resume ↓ optional lark-cli API calls ↓ Streaming Card Reply ``` Responsibilities: - **Bridge**: Event handling, session mapping, attachment downloads, card rendering, process lifecycle - **Codex CLI**: Code reasoning, file editing, command execution, session resume - **Lark CLI**: API tool for messages, docs, calendars, groups, OAuth ## License MIT
GitHub에서 보기