hermes - ✅(Solved) Fix feat(feishu): content-aware processing reactions — contextual emoji based on message content [1 pull requests, 1 participants]

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…
GitHub stats
NousResearch/hermes-agent#14667Fetched 2026-04-24 06:15:27
View on GitHub
Comments
0
Participants
1
Timeline
6
Reactions
0
Author
Participants
Timeline (top)
labeled ×4cross-referenced ×2

Fix Action

Fixed

PR fix notes

PR #12149: feat(feishu): dynamic ACK emoji based on message content

Description (problem / solution / changelog)

Summary

Replace the fixed Feishu ACK emoji with a content-aware random selection from categorized candidate pools, improving interaction quality.

Matching Rules (7 categories + default)

CategoryKeyword ExamplesCandidate Emojis
Greeting你好/hi/helloWAVE, SMILE, BLUSH
Gratitude谢谢/感谢/thxFINGERHEART, HEART, SMILE
Positive笑/哈哈/nice/牛/厉害CHUCKLE, JOYFUL, LAUGH, YEAH
Negative烦死了/崩溃/难受/郁闷COMFORT, HUG, SWEAT
Urgent紧急/马上/赶紧/急MUSCLE, STRIVE, FISTBUMP
Question怎么/为什么/如何/什么THINKING, SMART, GLANCE
Task/Command帮我/请/查一下/执行/做一下SALUTE, THUMBSUP, CLAP
DefaultAll other messagesOK, Typing

Design Decisions

  • No-echo principle: Emojis reflect bot state, not the user's emotion
  • Randomness: Each category randomly selects from its pool to avoid mechanical feel
  • Backward compatible: If FEISHU_ACK_EMOJI env var is set to a custom value, the fixed emoji is still used
  • Reaction filter: Changed from == to in to match any emoji in the candidate pool

Changes

  • gateway/platforms/feishu.py: Rule table + _pick_ack_emoji() + modified _add_ack_reaction() and reaction filter
  • tests/gateway/test_feishu.py: Updated test to cover dynamic matching logic

All 104 Feishu-related tests pass.

Changed files

  • gateway/platforms/feishu.py (modified, +62/-5)
  • tests/gateway/test_feishu.py (modified, +35/-2)
RAW_BUFFERClick to expand / collapse

Motivation

Currently, the Feishu adapter uses a fixed Typing reaction to indicate processing status (on_processing_start), and a fixed CrossMark on failure (on_processing_complete). The ACK emoji mechanism was removed in favor of this processing-state pattern (commit 0ad811f0b, PR #11209 merge).

While the new processing-status reactions work well for their intended purpose, there is room for a complementary UX enhancement: context-aware reactions that reflect the nature of the user message (greeting, question, task request, etc.) in addition to the processing-state indicator.

Proposed Behavior

When a message is received, the bot could add a secondary reaction (or customize the processing reaction) based on message content:

CategoryKeyword ExamplesCandidate Emojis
Greetinghi/hello/你好WAVE, SMILE, BLUSH
Gratitudethx/thanks/谢谢/感谢FINGERHEART, HEART, SMILE
Positivenice/great/哈哈/厉害/棒CHUCKLE, JOYFUL, LAUGH, YEAH
Negativefrustrated/sad/崩溃/郁闷COMFORT, HUG, SWEAT
Urgenturgent/紧急/马上/急MUSCLE, STRIVE, FISTBUMP
Questionwhy/how/怎么/为什么THINKING, SMART, GLANCE
Task/Commandplease/help/帮我/执行SALUTE, THUMBSUP, CLAP

Design Considerations

  1. Should not conflict with processing-status reactions: The Typing / CrossMark lifecycle (add on start, remove/replace on complete) must remain intact. Contextual reactions could be a separate, longer-lived reaction or a customization of the success-state reaction.

  2. Cross-platform potential: ProcessingOutcome and on_processing_start/complete hooks are defined in base.py and implemented by Telegram, Discord, Slack, Matrix, and Feishu. If implemented, consider making this a platform-agnostic feature rather than Feishu-only.

  3. Configuration: Should be opt-in via config/env var (e.g., FEISHU_CONTEXT_REACTIONS=true).

  4. No-echo principle: Emojis should reflect the bot interpretation of the message type, not mirror the user emotion.

Prior Art

PR #12149 implemented an earlier version of this idea on top of the old ACK emoji mechanism. That PR is now closed in favor of this FR, as the upstream rewrite of the reaction system (processing-state pattern) changed the architecture significantly.

References

extent analysis

TL;DR

Implement a context-aware reaction system that adds a secondary reaction or customizes the processing reaction based on message content, while maintaining the existing processing-status reactions.

Guidance

  • Review the gateway/platforms/feishu.py file to understand the current reaction system and identify potential integration points for the new context-aware reaction feature.
  • Consider implementing the feature as a platform-agnostic solution, utilizing the ProcessingOutcome enum and on_processing_start/complete hooks defined in base.py.
  • Develop a configuration option (e.g., FEISHU_CONTEXT_REACTIONS=true) to enable or disable the context-aware reaction feature.
  • Ensure the new reaction system does not conflict with the existing processing-status reactions and adheres to the no-echo principle.

Example

No code snippet is provided due to the lack of specific implementation details in the issue.

Notes

The implementation of the context-aware reaction system will require careful consideration of the design considerations outlined in the issue, including cross-platform potential, configuration, and the no-echo principle.

Recommendation

Apply a workaround by implementing the context-aware reaction system as a separate feature, utilizing the existing reaction system as a foundation, and enabling it via a configuration option. This approach allows for a flexible and customizable solution that can be refined and improved over time.

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