mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 09:40:30 +08:00
refactor(protocols): update protocol client implementations
This commit is contained in:
86
openspec/changes/rust-core-runtime-migration/proposal.md
Normal file
86
openspec/changes/rust-core-runtime-migration/proposal.md
Normal file
@@ -0,0 +1,86 @@
|
||||
## Why
|
||||
|
||||
AstrBot's core runtime is currently implemented in Python. Performance-critical components (orchestration, protocol management, message processing) would benefit from Rust's memory safety, zero-cost abstractions, and native performance. Additionally, exposing core functionality via pyo3 allows seamless Python integration while leveraging Rust's strengths.
|
||||
|
||||
## What Changes
|
||||
|
||||
- Create a new Rust crate `astrbot-core` in `rust/` directory
|
||||
- Implement core runtime components in Rust:
|
||||
- `Orchestrator`: Thread-safe runtime coordinator with RwLock
|
||||
- `ProtocolClient` trait: Unified interface for LSP, MCP, ACP, ABP clients
|
||||
- `Message` and `MessageType`: Message serialization with serde
|
||||
- `RuntimeStats`: Atomic message counting and uptime tracking
|
||||
- `Config`: TOML-based configuration management
|
||||
- Provide Python bindings via pyo3 for seamless integration
|
||||
- Follow strict Rust best practices:
|
||||
- No `unsafe` code
|
||||
- No `.unwrap()` - proper error handling
|
||||
- Clippy pedantic compliance
|
||||
- Full test coverage
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Python Layer (astrbot/core/)
|
||||
│
|
||||
▼ (pyo3 bindings)
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ Rust Core (astrbot-core) │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌──────────┐ │
|
||||
│ │ Orchestrator│ │ Config │ │ Stats │ │
|
||||
│ └─────────────┘ └─────────────┘ └──────────┘ │
|
||||
│ ┌─────────────────────────────────────────────┐│
|
||||
│ │ Protocol Clients ││
|
||||
│ │ LSP │ MCP │ ACP │ ABP ││
|
||||
│ └─────────────────────────────────────────────┘│
|
||||
└─────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
- `astrbot-core`: Rust-based high-performance core runtime with pyo3 bindings
|
||||
|
||||
### Modified Capabilities
|
||||
- (none - new implementation)
|
||||
|
||||
## Impact
|
||||
|
||||
- New directory: `rust/` containing Cargo.toml and src/
|
||||
- New files:
|
||||
- `rust/Cargo.toml`
|
||||
- `rust/src/lib.rs`
|
||||
- `rust/src/main.rs` (CLI binary)
|
||||
- `rust/src/error.rs`
|
||||
- `rust/src/orchestrator.rs`
|
||||
- `rust/src/message.rs`
|
||||
- `rust/src/stats.rs`
|
||||
- `rust/src/protocol.rs`
|
||||
- `rust/src/config.rs`
|
||||
- `rust/src/python.rs`
|
||||
- Python integration via `astrbot_core` Python module
|
||||
- CLI: `astrbot-core` binary with start/stats/health commands
|
||||
|
||||
## Verification
|
||||
|
||||
- `cargo clippy` passes with no warnings
|
||||
- `cargo build` compiles successfully
|
||||
- Python bindings importable: `from astrbot_core import PythonOrchestrator`
|
||||
- CLI functional: `astrbot-core --help`
|
||||
|
||||
## Relationship to OpenSpec Architecture
|
||||
|
||||
This change introduces a new implementation pathway that complements (not replaces) the existing Python architecture defined in `openspec/SPEC.md`. The Rust implementation:
|
||||
|
||||
1. Provides a reference implementation of the same interfaces (Orchestrator, ProtocolClient, etc.)
|
||||
2. Uses Rust idioms (no anyio - uses native Rust async/tokio)
|
||||
3. Is opt-in via pyo3 feature flag
|
||||
4. Coexists with Python implementation until Rust is production-ready
|
||||
|
||||
## Status
|
||||
|
||||
- [x] Proposal created
|
||||
- [ ] Spec created
|
||||
- [ ] Design created
|
||||
- [ ] Tasks created
|
||||
- [ ] Implementation started
|
||||
Reference in New Issue
Block a user