Migration Guide: From AstrBot to ErisPulse
Tip
When to read this: Read this when you already have an AstrBot robot and want to migrate it to ErisPulse. For new setups, see Quick Start directly.
First, the conclusion: Platform integration, models, personality, and knowledge bases can be transferred; AstrBot plugins cannot be transferred—the plugin APIs are completely different between the two platforms, and plugins need to be rewritten according to the ErisPulse module specifications. Data will not be automatically migrated.
Concept Comparison
| In AstrBot | In ErisPulse | Explanation |
|---|---|---|
| Platform Adapters (QQ/WeChat/Telegram…) | Platform Adapters | The concept is consistent; install the corresponding adapter for ErisPulse. |
| LLM Provider (API Key, Model) | QvQChat Model Pool | Both support OpenAI-compatible integration; QvQChat supports model pool self-healing and difficulty routing. |
| Persona | QvQChat Persona System | System prompt + opening remarks + tool whitelists, manually migrated. |
| Knowledge Base | QvQChat Knowledge Base | Worldbook-style keyword triggers + vector retrieval, requires re-importing. |
| WebUI | Dashboard | Module start/stop, configuration, logs, event monitoring; QvQChat also has a separate control panel. |
| Plugin | Module | Different APIs, requires rewriting (see below). |
| Admin/Whitelist | Three-dimensional Scope + module-specific permissions (e.g., QvQChat admins) |
More granular permission model, configured per module. |
Migration Steps
- Set up the framework: Initialize the project according to Quick Start (either Docker or pip is fine), and install the Dashboard.
- Connect to the platform:
epsdk installthe platform adapter you previously used (install the OneBot adapter for QQ ecosystem, the Telegram adapter for Telegram...), and the login method and protocol implementation selection are the same as in the AstrBot era. - Install the agent:
epsdk install ErisPulse-QvQChat, and fill in the original Base URL / API Key / model name in the model pool. - Migrate personality and knowledge base: Create new personality entries one by one on the QvQChat personality page; re-import the knowledge base documents.
- Rewrite plugins: Follow the comparison in the next section to translate the original plugin's "command → processing logic" into an ErisPulse module.
Plugin Rewrite Comparison
The same plugin that responds "pong" to a received /ping command, with code written on both sides:
AstrBot Plugin (example, refer to the official AstrBot documentation):
from astrbot.api.event import filter, AstrMessageEvent
@filter.command("ping")
async def ping(self, event: AstrMessageEvent):
yield event.plain_result("pong")
ErisPulse Module (complete and runnable, see Module Development Introduction):
from ErisPulse.Core.Event import command
@command("ping", help="Test if the bot is online")
async def ping_handler(event):
await event.reply("pong")
Key differences:
- Event Model: AstrBot uses platform-specific event objects; ErisPulse uses the unified OneBot12 event model, where
event.reply/ SendDSL behave consistently across all platforms. - Package Structure: ErisPulse modules are standard Python packages, generated using the
epsdk create modulescaffolding tool, and published to PyPI and the module marketplace. - Scheduled Tasks / Storage: Use the Cron module or directly use the framework's built-in storage API, without introducing third-party dependencies.
Recommended Migration Strategy
Parallel Dual Operation: The ErisPulse bot first runs in a test group to verify all functionalities. Once confirmed to be complete, it switches to the main group. The account systems of both platforms are independent (each with its own protocol implementation/Token), so they do not interfere with each other, and the rollback cost is low.
Note
The plugin API and feature list of AstrBot are continuously evolving. This page focuses on general concepts; to determine if a specific plugin has an equivalent in ErisPulse, first search the Module Market. If not found, refer to the previous section for rewriting—most business plugins are actually shorter to implement in ErisPulse.
Next Steps
- Learn module development systematically: Getting Started with Module Development → Core Concepts
- Want more detailed configuration for the AI part: QvQChat General Agent
- Still hesitant about migrating: Comparison: AstrBot vs. LangBot