GitNexus / codegraph
理解代码结构、影响和变更范围
保持开发变更小而聚焦、验证明确、影响可理解。仓库使用 Turborepo 作为统一任务编排器:根任务(//#py:*、//#md:*、//#js:*,脚本位于根 package.json)覆盖 Python 工具链,工作区包(apps/docs、apps/lingc-cli)各自负责 lint / 类型 / 测试 / 构建。Taskfile.yml 是薄委托壳——task check / task test / task build / task format / task fix / task ci:* 均为单行 pnpm turbo run ... 委托——并保留需要 secrets 或 CLI 参数透传的 release / version / db / hooks / smoke 任务。
本节引导外部开发者从零开始搭建可用的开发环境。
requires-python = ">=3.13, <3.14")克隆仓库:
git clone https://github.com/xinvxueyuan/lingchu-bot.gitcd lingchu-bot安装所有依赖(Python + Node.js):
task install这会运行 uv sync 和 pnpm install。如需分别安装:
uv sync --frozen # Python 依赖pnpm install --frozen-lockfile # Node.js 依赖复制环境模板:
cp .env.example .env编辑 .env,设置 LINGCHU_SUPERUSERS 以及适配器连接详情以适配你的环境。
验证搭建:
task check # 静态检查、格式化、Markdown lint、类型检查task test # 根 pytest + lingc-cli 测试 + 文档测试如果两者均通过,则环境已准备好进行开发。
典型的开发周期:
创建分支:git checkout -b feature/your-feature
遵循现有模式和风格进行修改。
对修改过的文件运行聚焦检查:
uv run -m ruff check path/to/file.pyuv run -m ruff format path/to/file.py提交前运行完整检查套件:
task checktask test使用 gitmoji + Conventional Commits 格式提交(由 .husky/commit-msg 强制执行)。
推送并按照 PR 描述指南 开启 PR。
| 测试类型 | 命令 | 范围 |
|---|---|---|
| Python 单元测试 | uv run -m pytest |
所有 Python 测试 |
| Python 聚焦测试 | uv run -m pytest tests/handle/commands/test_mute.py |
单个测试文件 |
| 文档测试 | pnpm --filter docs test |
Vitest 组件/单元测试 |
| 文档构建 | pnpm turbo run build --filter=docs |
静态文档输出与 Starlight/Pagefind 生成 |
| E2E 测试 | pnpm --filter docs exec playwright test |
Playwright 浏览器测试 |
| 完整 CI 序列 | task ci |
check + test + build |
task build # 构建所有工作区(根 wheel + lingc-cli + 文档)pnpm turbo run build --filter=docs # 仅构建文档站点uv build --clear # 仅构建 Python 包当修改可翻译字符串时:
task i18n # 提取、更新和编译 gettext 目录这会运行 pybabel extract、pybabel update 和 pybabel compile。详见国际化。
在编写任何代码之前,明确目标、成功标准和范围外事项。
运行 git status --short 确认现有变更。默认假设现有变更来自其他贡献者或更早的工作会话。
阅读相关代码和测试,优先遵循现有结构。使用 GitNexus 或 codegraph 理解代码结构和关系。
在修改函数、类或方法之前,运行 GitNexus 或 codegraph 影响分析。
实现最小有用的变更并添加测试。
通过 task check、task test 或聚焦的 uv / pnpm 命令运行相关检查。
提交前运行 GitNexus detect changes。
优先使用以下 Taskfile 任务:
task installtask checktask testtask buildtask citask i18n对于仅涉及 Python 的变更,适当时使用聚焦的 uv run ... 检查。对于文档或前端包的变更,使用聚焦的 pnpm --filter docs ... 或 pnpm turbo run ... 检查。
GitNexus / codegraph
理解代码结构、影响和变更范围
Context7
查询库、框架、SDK、CLI 工具或云服务的当前文档
Husky / prek
本地 Git 钩子和预提交检查
Turbo
跨工作区的 lint、类型检查和构建编排
不要还原、格式化或重写与当前任务无关的文件。当存在现有变更时,默认假设它们来自其他贡献者或更早的工作会话。
常用分支前缀:
| 前缀 | 用途 |
|---|---|
feature/ |
新功能 |
fix/ |
缺陷修复 |
hotfix/ |
紧急生产修复 |
docs/ |
文档变更 |
refactor/ |
代码重构 |
GitHub Actions 也会匹配 feature/**、fix/**、hotfix/*、main 和 dev 等分支。正式发布仅手动触发 —— 参见发布版本,不再推送 releases/** 分支。实际目标分支应遵循维护者或 PR 页面的指引。
提交信息必须遵循 gitmoji + Conventional Commits。参见提交风格。
🐛 fix: 修复成员禁言成功反馈📝 docs: 重写文档站✅ test: 增加群管理异常覆盖PR 应说明:
如果 PR 涉及文档站点或国际化,请注明是否运行了 Markdown lint、docs lint/test/build 和 task i18n。