Skip to content

[Feature]: Feishu: Support per-group Profile routing with shared Skills #13633

@SquallTao

Description

@SquallTao

Problem or Use Case

Feature Request: Per-Group Profile Routing for Feishu (Same App ID)

What problem does this solve?

Today, a single Feishu app (one appId + appSecret) can serve multiple groups. Currently, channel_prompts allows per-group ephemeral system prompts, but there is no way to route each group to a dedicated Hermes Profile with:

  • Independent memory
  • Independent session history
  • Independent personality / display settings
  • While sharing a common Skills library

This would enable a powerful multi-tenant pattern: one Feishu app, multiple groups, each with its own persona + memory, all sharing the same skill set.

Proposed Solution

Introduce a channel_profiles configuration option in the Feishu (and generically applicable) gateway config, alongside channel_prompts:

feishu:
  appId: cli_xxx
  appSecret: xxx
  channel_profiles:
    oc_group_a:
      profile: laotao        # routes to profile "laotao"
    oc_group_b:
      profile: analyst        # routes to profile "analyst"
    oc_group_c:
      profile: assistant     # routes to profile "assistant"
  # Skills shared across all profiles
  skills:
    external_dirs:
      - /shared/skills

  

### Proposed Solution

How it would work

1. Gateway receives a message from Feishu group oc_group_a
2. Looks up channel_profiles[oc_group_a].profile → resolves to "laotao"
3. Spawns or routes to the Hermes agent running under profile "laotao"
4. Profile laotao has its own:
- ~/.hermes/profiles/laotao/memory/
- ~/.hermes/profiles/laotao/sessions/
- ~/.hermes/profiles/laotao/config.yaml (personality, toolsets, etc.)
5. Skills in /shared/skills are loaded via skills.external_dirs

Alternative: Shared memory + Independent personalities
If full profile isolation is too heavy, an intermediate solution would be:

- Keep a shared memory backend across groups
- Allow per-group ephemeral prompts (already supported via channel_prompts)
- Add per-group personality via display.personality in channel_profiles[chat_id]

Prior Art

- Discord: channel_prompts already exists for ephemeral prompts
- Discord/Telegram: auto_skill binding per channel exists
- The missing piece is profile-level routing

### Alternatives Considered

_No response_

### Feature Type

Gateway / messaging improvement

### Scope

Small (single file, < 50 lines)

### Contribution

- [ ] I'd like to implement this myself and submit a PR

### Debug Report (optional)

```shell

Metadata

Metadata

Assignees

No one assigned

    Labels

    comp/gatewayGateway runner, session dispatch, deliveryplatform/feishuFeishu / Lark adaptertype/featureNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions