程序员阿江(Relakkes) 77974f7052 feat(feishu): add interactive project picker and fix bot flows
- Resolve bot open_id via /open-apis/bot/v3/info — the SDK's
  contact.user.get({user_id: 'me'}) path is invalid on Feishu and
  returned 99992351 on every startup.
- Stream replies via interactive cards instead of post messages:
  im.message.patch only accepts msg_type=interactive, so the old
  path-rich-text placeholder caused "This message is NOT a card"
  (230001) on every flush. Added buildStreamingCard helper.
- Add project picker card: one column_set row per project with
  [info (name + branch + path) | select button], Schema 2.0,
  mobile-friendly path display (~ substitution + middle-truncation),
  header subtitle with project count. pick_project actions route
  through the existing handleCardAction.

Card patterns verified against openclaw-lark's Schema 2.0 usage in
src/tools/oauth-cards.ts and src/card/builder.ts. 34 unit tests
cover the new card structure and action routing.
2026-04-11 14:25:55 +08:00
..

Claude Code IM Adapters

当前目录只放 IM Adapter 运行时代码。

用户文档已经迁移到 docs/,并且以 Desktop Webapp 配置流程为准:

  • docs/im/index.md
  • docs/im/telegram.md
  • docs/im/feishu.md

当前方案摘要

当前真实链路是:

Desktop Webapp Settings
  -> /api/adapters
  -> ~/.claude/adapters.json
  -> adapters/<platform>/index.ts
  -> /api/sessions + /ws/:sessionId
  -> Claude Code session

注意两点:

  • IM 配置和配对都在 Desktop Webapp 的 Settings -> IM 接入
  • Webapp 不会自动启动 Adapter 进程,仍需手动运行 bun run telegrambun run feishu

快速启动

cd adapters
bun install
bun run telegram
# 或
bun run feishu

开发

运行测试

cd adapters
bun test
bun test common/
bun test telegram/
bun test feishu/

目录结构

adapters/
├── common/
├── telegram/
├── feishu/
├── package.json
├── tsconfig.json
└── README.md