本仓库是一个 Python 3.11+ 的 RAG 工具集。核心代码位于 src/ 目录下,按职责拆分为以下主要模块:
src/chat/、src/providers/、src/retrieval/、src/etl/、src/ui/ 和 src/utils/。入口程序和脚本位于
main.py 和 scripts/。测试代码位于 tests/,其目录结构与源码对应。运行产物(如 data/ 目录和生成的日志)不应提交至版本控制。
uv sync:根据pyproject.toml安装依赖并创建本地环境。uv run main.py:启动应用程序。uv run python -m scripts.embed_knowledge_base:重建知识库快照。uv run pytest:运行完整测试套件。uv run pytest tests/test_config.py:在迭代特定更改时运行单个测试文件。
遵循现有的 Python 风格:使用 4 空格缩进,公开函数必须包含明确的类型标注,命名应具有描述性。
函数、变量和模块使用 snake_case;类使用 PascalCase;常量使用 UPPER_CASE。保持文档字符串(docstrings)和注释简短且客观。修改代码时应贴合周围代码风格,避免引入新的格式化样式。
所有自动化测试统一使用 pytest。测试文件命名为 test_*.py,测试函数命名为 test_*。建议将针对特定行为的测试放在该行为相关的代码附近,特别是对于配置解析、提供商工厂、ETL 和检索逻辑。项目没有强制的覆盖率阈值;针对每次行为变更都应补充测试,并优先运行最小相关测试集。
Git 提交历史应使用约定式前缀,如 feat:、refactor:、test: 和 chore:,后接简短摘要。提交信息应具体且使用祈使句。拉取请求(PR)需说明改动内容,列出验证命令,并注明是否对配置或数据文件产生影响。仅在 UI 输出发生变化时附带截图。
严禁提交密钥或本地覆盖配置。请复制 config.toml.example 为本地 config.toml,并使用 .env 文件处理私密数值。config.toml 为本地文件,默认不纳入版本控制。将 data/ 目录和生成的日志视为本地产物。若在 dify/ 子目录下工作,请先阅读该目录下的 AGENTS.md,因为子目录指令优先于此根目录指南。