贡献指南
欢迎参与 MaiBot 开发!在提交代码之前,请仔细阅读以下规范。
导入规范
- 标准库和第三方库使用
from ... import ...形式在前,import ...形式在后;同组按字母序排列 - 本地模块:同目录使用相对导入,跨目录使用
from src.xxx绝对导入 - 标准库/第三方库导入放在本地模块导入之前,块间用空行分隔
- 重构时调整不符合规范的导入顺序
python
# 标准库
import asyncio
import os
from pathlib import Path
# 第三方库
from fastapi import FastAPI
from pydantic import BaseModel
# 本地模块
from src.common.logger import get_logger
from src.config.config import config_manager注释规范
- 保持良好注释;重构时保留原注释(可修改内容)
- 原无注释的重构时,较长或复杂功能块应添加注释
- 首选语言为简体中文(注释、日志、WebUI 文案)
类型注解规范
- 重构时保留原类型注解;无注解的复杂函数/多参数函数应添加
- 参数化泛型使用
typing模块(如Dict、List、Optional) - 变量类型确定后不必使用
or回退
python
# 推荐
def process_message(message: SessionMessage, timeout: float = 5.0) -> bool:
...
# 不推荐
def process_message(message, timeout=5.0):
...反模式列表
以下行为在项目中严格禁止:
- 修改
dashboard/下任何内容 — 前端由独立仓库构建 - 直接编辑
bot_config.toml/model_config.toml— 应修改模版 + 版本号 - 空 catch 块
catch(e) {}— 至少记录日志 - 删除失败测试来"通过" — 必须修复问题本身
- 硬编码 API key / 密码 / token — 使用配置系统管理
eval()/exec()/__import__— 存在安全风险
变量与属性规范
- 确定类型后不必
orfallback - 减少
getattr/setattr,优先直接属性访问
开发命令
安装依赖
bash
uv sync运行项目
bash
uv run python bot.py运行测试
bash
uv run pytest代码检查
bash
# Lint
uv run ruff check .
# 自动格式化
uv run ruff format .PR 流程
- Fork 仓库并从
dev分支创建功能分支 - 确保代码通过
uv run ruff check .和uv run pytest - 提交 PR 到
dev分支,附上清晰的修改说明 - 等待代码审查与合并
注意事项
- WebUI 默认绑定
127.0.0.1:8001,生产环境需反向代理 - Token 存储在
data/webui.json(明文 JSON),依赖文件系统权限保护 - 限流器为内存型,多实例部署时无法共享状态
- 插件安装通过
git clone执行,需确保 Git 安全配置 model_config.toml中包含api_key等敏感字段(repr=False)