mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-15 17:30:13 +08:00
docs: add AI developer guide skill to docs/skills
Provides comprehensive guidance for AI assistants working on AstrBot: - Project overview and architecture - Development setup and commands - Code style rules (type hints, paths, formatting) - Environment variable conventions - Common development patterns - Git and PR guidelines
This commit is contained in:
159
docs/skills/astrbot-dev-guide.md
Normal file
159
docs/skills/astrbot-dev-guide.md
Normal file
@@ -0,0 +1,159 @@
|
||||
---
|
||||
name: astrbot-dev-guide
|
||||
description: Guide for AI assistants developing AstrBot - project conventions, code style, and common patterns
|
||||
---
|
||||
|
||||
# AstrBot Developer Guide
|
||||
|
||||
This skill provides guidance for AI assistants working on AstrBot development.
|
||||
|
||||
## Project Overview
|
||||
|
||||
AstrBot is an open-source, all-in-one Agentic chat assistant supporting multiple IM platforms (QQ, Telegram, Discord, Lark, DingTalk, Slack, etc.) and LLM providers.
|
||||
|
||||
- **Main entry**: `astrbot/__main__.py` or CLI `astrbot run`
|
||||
- **CLI commands**: `astrbot/cli/commands/`
|
||||
- **Core modules**: `astrbot/core/`
|
||||
- **Platform adapters**: `astrbot/core/platform/sources/`
|
||||
- **Star plugins**: `astrbot/builtin_stars/`
|
||||
- **Dashboard**: `dashboard/` (Vue.js)
|
||||
|
||||
## Quick Start Commands
|
||||
|
||||
```bash
|
||||
# Install
|
||||
uv tool install -e . --force
|
||||
|
||||
# Initialize
|
||||
astrbot init
|
||||
|
||||
# Run
|
||||
astrbot run
|
||||
|
||||
# Backend only (no WebUI)
|
||||
astrbot run --backend-only
|
||||
|
||||
# Frontend
|
||||
cd dashboard && bun dev
|
||||
|
||||
# Tests
|
||||
uv sync --group dev && uv run pytest --cov=astrbot tests/
|
||||
```
|
||||
|
||||
## Code Style Rules
|
||||
|
||||
### Type Hints (Required)
|
||||
Use Python 3.12+ syntax:
|
||||
- `list[str]` not `List[str]`
|
||||
- `int | None` not `Optional[int]`
|
||||
- Avoid `Any` when possible
|
||||
|
||||
### Path Handling
|
||||
Always use `pathlib.Path`:
|
||||
```python
|
||||
from pathlib import Path
|
||||
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
|
||||
```
|
||||
|
||||
### Formatting
|
||||
Run before every commit:
|
||||
```bash
|
||||
ruff format .
|
||||
ruff check .
|
||||
```
|
||||
|
||||
### Comments
|
||||
Write all comments in English.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
When adding new environment variables:
|
||||
|
||||
1. Prefix with `ASTRBOT_` (e.g., `ASTRBOT_ENABLE_FEATURE`)
|
||||
2. Add to `.env.example` with description
|
||||
3. Update `astrbot/cli/commands/cmd_run.py`:
|
||||
- Add to module docstring under "Environment Variables Used in Project"
|
||||
- Add to `keys_to_print` list for debug output
|
||||
|
||||
## Core Paths Utility
|
||||
|
||||
```python
|
||||
from astrbot.core.utils.astrbot_path import (
|
||||
get_astrbot_root, # AstrBot root directory
|
||||
get_astrbot_data_path, # Data directory
|
||||
get_astrbot_config_path, # Config directory
|
||||
get_astrbot_plugin_path, # Plugin directory
|
||||
get_astrbot_temp_path, # Temp directory
|
||||
get_astrbot_skills_path, # Skills directory
|
||||
)
|
||||
```
|
||||
|
||||
## Architecture Patterns
|
||||
|
||||
### Adding a Platform Adapter
|
||||
|
||||
1. Create in `astrbot/core/platform/sources/`
|
||||
2. Extend `Platform` base class
|
||||
3. Use `@register_platform_adapter` decorator
|
||||
4. Implement: `run()`, `convert_message()`, `meta()`
|
||||
|
||||
### Adding a CLI Command
|
||||
|
||||
1. Create in `astrbot/cli/commands/`
|
||||
2. Use `@click.command()`
|
||||
3. Update `astrbot/cli/__main__.py` to add command
|
||||
|
||||
### Adding a Star Handler
|
||||
|
||||
1. Create in `astrbot/builtin_stars/` or as plugin
|
||||
2. Extend `Star` class
|
||||
3. Use decorators: `@star.on_command()`, `@star.on_schedule()`, etc.
|
||||
|
||||
## Testing
|
||||
|
||||
- Test location: `tests/` directory
|
||||
- Framework: `pytest` with `pytest-asyncio`
|
||||
- Run: `uv run pytest --cov=astrbot tests/`
|
||||
|
||||
## Git Conventions
|
||||
|
||||
### Commit Messages (Conventional Commits)
|
||||
```
|
||||
feat: add new feature
|
||||
fix: resolve bug
|
||||
docs: update documentation
|
||||
refactor: restructure code
|
||||
test: add tests
|
||||
chore: maintenance
|
||||
```
|
||||
|
||||
### PR Guidelines
|
||||
- Title: conventional commit format in English
|
||||
- Target branch: `dev`
|
||||
- Keep changes atomic and focused
|
||||
|
||||
## Important Guidelines
|
||||
|
||||
1. **No report files** - Do not add `xxx_SUMMARY.md`
|
||||
2. **Componentization** - Keep WebUI code clean, avoid duplication
|
||||
3. **Backward compatibility** - Add deprecation warnings when changing APIs
|
||||
4. **CLI help** - Run `astrbot help --all` to see all commands
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
astrbot/
|
||||
├── __main__.py # Main entry point
|
||||
├── __init__.py # Package init, exports
|
||||
├── cli/ # CLI commands
|
||||
│ └── commands/ # Individual commands
|
||||
├── core/ # Core functionality
|
||||
│ ├── agent/ # Agent execution
|
||||
│ ├── platform/ # Platform adapters
|
||||
│ ├── pipeline/ # Message processing
|
||||
│ ├── star/ # Plugin system
|
||||
│ └── config/ # Configuration
|
||||
├── builtin_stars/ # Built-in plugins
|
||||
├── dashboard/ # Vue.js frontend
|
||||
└── utils/ # Utilities
|
||||
```
|
||||
Reference in New Issue
Block a user