Skip to main content
Glama
cv-cat
by cv-cat

Lark Agentx - Ihr Feishu KI-Assistent 🚀

Python Version Node.js Version

Ein auf Feishu (Lark) basierender KI-Agent, der es großen Sprachmodellen ermöglicht, Funktionsaufrufe und Nachrichtenverarbeitung über Feishu durchzuführen.

Keine Konfiguration eines Feishu-Bots erforderlich, Ihr Feishu-Konto fungiert als KI-Assistent.

Sie müssen lediglich Funktionen und Kommentare definieren; Ihr Feishu-Bot ruft diese automatisch je nach Szenario auf.

Projektübersicht 🌟

Lark Agentx ist eine moderne Python-Anwendung, die Folgendes ermöglicht:

  • 📊 Reverse Engineering von Websockets und APIs, die im Feishu-Protobuf-Format übertragen werden, um Nachrichten zu überwachen und zu protokollieren

  • 🤖 Bereitstellung benutzerdefinierter Funktionen für den Aufruf durch große Sprachmodelle

  • 🔄 Implementierung eines Frameworks für Funktionsaufrufe basierend auf dem MCP (Model Context Protocol)

  • 💾 Speicherung von Nachrichten in einer MySQL-Datenbank mittels SQLAlchemy

Related MCP server: Feishu MCP Server

Screenshots🧸

✨ Funktionen

  • Funktionsregistrierungsmechanismus: Einfacher und intuitiver Dekorator zur Funktionsregistrierung

  • Automatische Nachrichtenverarbeitung: Protokollierung aller empfangenen Nachrichten (Privat- und Gruppenchats)

  • Asynchrone Verarbeitung: Verwendung des async/await-Musters für asynchrone Kommunikation

  • Datenpersistenz: Speicherung von Nachrichten in einer MySQL-Datenbank mittels SQLAlchemy

  • Flexible Konfiguration: Konfiguration über Umgebungsvariablen

  • Containerisierte Bereitstellung: Unterstützung für schnelle Docker-Bereitstellung

  • Intelligente Funktionsaufrufe: Die KI analysiert Benutzereingaben automatisch und ruft die am besten passende Funktion auf; Entwickler müssen nur die Funktion und deren Kommentarbeschreibung hinzufügen

📦 Aktuell unterstützte Funktionen

Das Projekt enthält derzeit die folgenden integrierten Funktionen für den Aufruf durch große Sprachmodelle:

Funktionsname

Beschreibung

tell_joke

Erzählt einen zufälligen Witz

get_time

Ruft die aktuelle Uhrzeit ab

fortune

Zieht ein zufälliges Horoskop

get_weather

Ruft das Wetter für eine Stadt ab

count_daily_speakers

Ruft die Statistik der heutigen Sprecher ab

get_top_speaker_today

Ruft den Benutzer mit den meisten Nachrichten heute ab

send_message

Sendet eine Nachricht an einen bestimmten Benutzer

list_tools

Listet alle verfügbaren Tools und deren Beschreibungen auf

extra_order_from_content

Extrahiert Bestellinformationen aus Texten, einschließlich Bestellnummer, Produktname, Menge usw.

Sie können diese Funktionen aufrufen, indem Sie in Feishu einen Trigger-Befehl gefolgt von der gewünschten Aktion eingeben, z. B.: /run Erzähl einen Witz

📂 Projektstruktur

project/
├── app/                    # 应用程序模块
│   ├── api/                # API相关模块
│   │   ├── auth.py         # 认证模块
│   │   └── lark_client.py  # 飞书客户端
│   ├── config/             # 配置模块
│   │   └── settings.py     # 应用配置
│   ├── core/               # 核心业务逻辑
│   │   ├── mcp_server.py   # MCP服务器(函数注册和处理)
│   │   ├── llm_service.py  # LLM服务
│   │   └── message_service.py  # 消息处理服务
│   ├── db/                 # 数据库相关
│   │   ├── models.py       # 数据模型
│   │   └── session.py      # 数据库会话管理
│   └── utils/              # 工具函数
├── builder/                # 请求构建器
├── extension/              # 扩展功能
│   └── weather_api/        # 天气API集成
├── static/                 # 静态资源
│   ├── resource/           # 图片资源
│   ├── proto_pb2.py        # 协议定义
│   └── lark_decrypt.js     # 飞书解密工具
├── .env                    # 环境变量
├── main.py                 # 应用入口
├── requirements.txt        # 项目依赖
├── docker-compose.yml      # Docker Compose配置
└── Dockerfile              # Docker配置

🛠️ Entwicklung benutzerdefinierter Funktionen

In der Datei app/core/mcp_server.py können Sie Ihre eigenen benutzerdefinierten Funktionen mit dem @register_tool-Dekorator hinzufügen:

@register_tool(name="tell_joke", description="讲一个随机笑话")
def tell_joke() -> str:
    jokes = [
        "为什么程序员都喜欢黑色?因为他们不喜欢 bug 光。",
        "Python 和蛇有什么共同点?一旦缠上你就放不下了。",
        "为什么 Java 开发者很少被邀去派对?因为他们总是抛出异常。",
    ]
    return random.choice(jokes)

@register_tool(name="send_message", description="给指定用户发送消息 {user:用户名称 content:消息内容}")
def send_message(user: str, content: str) -> str:
    """给指定用户发送私信"""
    lark_client = LarkClient(get_auth())
    # ... 实现逻辑 ...
    return f"成功向 {user} 发送了私信: '{content}'"

Wichtig: Fügen Sie einfach die Funktion und die entsprechende Beschreibung hinzu. Die KI analysiert den Text des Benutzers automatisch und ruft die am besten passende Funktion auf; eine manuelle Implementierung der Funktionsabgleichslogik ist nicht erforderlich.

🔧 Systemanforderungen

  • Python 3.10+

  • Node.js 18+

  • MySQL-Datenbank

📦 Installationsmethode

Verwendung der lokalen Umgebung

  1. Abhängigkeiten installieren:

    pip install -r requirements.txt
  2. Hinweis für Windows-Benutzer: Windows-Systeme erfordern die zusätzliche Installation der folgenden Abhängigkeiten:

    pip install win-inet-pton==1.1.0

Verwendung von Docker

Methode 1: Image separat erstellen

# 构建镜像 
docker build -t feishuapp .

# 运行容器 需要外部mysql 通过docker网关连接宿主机mysql 推荐--env-file
docker run -it feishuapp bash

Methode 2: Verwendung von Docker Compose (empfohlen)

# 启动所有服务(应用和数据库)
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止所有服务
docker-compose down

Mit Docker Compose können Sie die gesamte Anwendungsumgebung, einschließlich der MySQL-Datenbank und der Anwendungsdienste, mit einem Klick starten, was bequemer und effizienter ist.

🛠️ Konfigurationshinweise

Kopieren Sie die Datei .env.example und benennen Sie sie in .env um. Sie enthält die folgende Konfiguration:

# 数据库设置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=123456
DB_NAME=lark_messages

# 飞书的Cookie设置 - 只需配置LARK_COOKIE即可,告别飞书机器人
LARK_COOKIE=""

# 调用函数的触发前缀 (以FUNCTION_TRIGGER_FLAG开头的消息会被大模型解析,所有消息都会被记录到数据库,无论是否以该前缀开头)
FUNCTION_TRIGGER_FLAG="/run"

# 机器人发言前缀 (暂未使用)
AI_BOT_PREFIX="Lark AI Bot:"

# OpenAI API配置 默认是通义千问的,满足OpenAI的大模型厂商都可以
OPENAI_API_KEY=""
OPENAI_API_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
OPENAI_API_MODEL="qwen-plus"

🚀 Benutzerhandbuch

Anwendung ausführen

Methode 1: Direkt ausführen

python main.py

Methode 2: Verwendung von Docker Compose

docker-compose up -d

Die Anwendung wird:

  1. Den MCP-Server initialisieren

  2. Eine Verbindung zur Feishu-API herstellen und Ihr Feishu-Konto als KI-Assistent verwenden

  3. Eingehende Nachrichten überwachen

  4. Funktionsaufrufe, die von großen Sprachmodellen über Feishu initiiert wurden, verarbeiten und ausführen

  5. Nachrichten in der MySQL-Datenbank speichern

🗄️ Datenbankstruktur

Die Anwendung speichert Nachrichten in der Tabelle messages, die die folgende Struktur aufweist:

Spaltenname

Typ

Beschreibung

id

INT (PK)

Primärschlüssel

user_name

VARCHAR(255)

Name des Nachrichtenabsenders

user_id

VARCHAR(255)

Feishu-Benutzer-ID des Absenders

content

TEXT

Nachrichteninhalt

is_group_chat

BOOLEAN

Ob die Nachricht aus einem Gruppenchat stammt

group_name

VARCHAR(255)

Gruppenchat-Name (falls zutreffend)

chat_id

VARCHAR(255)

Chat-ID

message_time

DATETIME

Sendezeit der Nachricht

created_at

DATETIME

Erstellungszeitpunkt des Datensatzes

🤝 Beitrag leisten

Beiträge sind willkommen! Bitte zögern Sie nicht, einen Pull Request einzureichen.

  1. Forken Sie dieses Repository

  2. Erstellen Sie Ihren Feature-Branch (git checkout -b feature/amazing-feature)

  3. Committen Sie Ihre Änderungen (git commit -m 'Einige großartige Funktionen hinzugefügt')

  4. Pushen Sie in den Branch (git push origin feature/amazing-feature)

  5. Öffnen Sie einen Pull Request

🐛 Probleme und Support

Wenn Sie auf Probleme stoßen oder Fragen haben, erstellen Sie bitte ein Issue oder besuchen Sie unser Diskussionsforum.

📈 Star-Trend

🍔 Austauschgruppe

Wenn Sie sich für Crawler und KI-Agenten interessieren, fügen Sie bitte den Autor über die Homepage (WeChat) hinzu, um eine Einladung zur Gruppe zu erhalten.

PS: Bitte treten Sie Gruppe 7 bei. Wenn diese voll oder abgelaufen ist, erstellen Sie ein Issue | WeChat-Erinnerung

group7

Related MCP Connectors

Related MCP Servers