hermes - 💡(How to fix) Fix feat: Interactive model picker for Feishu platform (like Telegram)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Root Cause

The /model command on Feishu currently falls back to plain text output because the Feishu adapter does not implement send_model_picker. On Telegram, users get an interactive inline-keyboard picker with two-step drill-down (provider → model), but on Feishu they must type the model name manually.

RAW_BUFFERClick to expand / collapse

Feature Request

Problem

The /model command on Feishu currently falls back to plain text output because the Feishu adapter does not implement send_model_picker. On Telegram, users get an interactive inline-keyboard picker with two-step drill-down (provider → model), but on Feishu they must type the model name manually.

Proposed Solution

Implement send_model_picker on FeishuAdapter using Feishu interactive cards with buttons:

  1. send_model_picker method — Builds a Feishu interactive card with provider buttons (2 per row), current model info, and a Cancel button. Stores picker state keyed by chat_id.

  2. Card callback routing — Modify _on_card_action_trigger to distinguish model picker actions (e.g. hermes_action: "mp:select") from approval actions, and route them to a new handler.

  3. _handle_model_picker_action method — Handles provider selection, model selection with pagination (page size 8), back navigation, and cancel. Returns a new card via P2CardActionTriggerResponse to update the card in-place.

  4. _build_model_picker_card helper — Builds the Feishu card JSON for each state (provider list, model list, confirmation).

Key Differences from Telegram

  • Telegram uses InlineKeyboardMarkup with callback_data strings; Feishu uses interactive card buttons with value dicts
  • Telegram edits the message in-place; Feishu can return a new card via P2CardActionTriggerResponse
  • Both support the same two-step drill-down flow

Environment

  • Hermes Agent version: latest (2026-05-11)
  • Platform: Feishu (DM and group chats)
  • Related: Telegram already has this feature (gateway/platforms/telegram.py:1617-1895)

Additional Context

The infrastructure (interactive cards, button callbacks, card updates) is already in place in the Feishu adapter via send_exec_approval. Only the model picker logic needs to be added.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix feat: Interactive model picker for Feishu platform (like Telegram)