DeerFlow代码风格指南:写出符合项目规范的高质量代码

【免费下载链接】deer-flow DeerFlow is a community-driven framework for deep research, combining language models with tools like web search, crawling, and Python execution, while contributing back to the open-source community. 【免费下载链接】deer-flow 项目地址: https://gitcode.com/GitHub_Trending/de/deer-flow

DeerFlow是一个社区驱动的深度研究框架,结合了语言模型与网络搜索、爬取和Python执行等工具,同时为开源社区做出贡献。编写符合项目规范的高质量代码是参与DeerFlow开发的重要一环,本指南将详细介绍DeerFlow的代码风格规范,帮助开发者快速上手并融入项目。

为什么代码风格很重要?

在协作开发中,统一的代码风格能够提高代码的可读性、可维护性和可扩展性。对于DeerFlow这样的开源项目而言,良好的代码风格有助于吸引更多贡献者,促进项目的健康发展。遵循代码风格指南可以减少代码审查中的争议,让团队成员更专注于功能实现而非格式问题。

后端(Python)代码风格规范

代码检查与格式化工具

DeerFlow后端使用ruff进行代码检查和格式化。ruff是一个快速、高效的Python代码检查工具,能够帮助开发者自动发现并修复代码中的风格问题。

# 检查代码问题
make lint

# 自动修复并格式化代码
make format

这些命令在backend/Makefile中定义,确保了代码风格检查的便捷性。

基本风格规则

  • 行长度:最大240个字符,允许在不影响可读性的前提下适当放宽
  • Python版本:支持Python 3.12及以上版本的特性
  • 类型提示:函数签名必须使用类型提示,提高代码的可读性和可维护性
  • 字符串引号:使用双引号"定义字符串
  • 缩进:使用4个空格进行缩进,不允许使用制表符
  • 导入顺序:按标准库、第三方库、本地模块的顺序分组导入

文档字符串规范

公共函数和类必须包含文档字符串,采用Google风格。文档字符串应清晰描述函数的功能、参数、返回值和可能的异常。

def create_chat_model(name: str, thinking_enabled: bool = False) -> BaseChatModel:
    """Create a chat model instance from configuration.

    Args:
        name: The model name as defined in config.yaml
        thinking_enabled: Whether to enable extended thinking

    Returns:
        A configured LangChain chat model instance

    Raises:
        ValueError: If the model name is not found in configuration
    """
    ...

命名规范

  • 函数和变量:使用小写字母,单词之间用下划线分隔(snake_case)
  • 类名:使用首字母大写的驼峰式命名(CamelCase)
  • 常量:使用全大写字母,单词之间用下划线分隔

分支命名与提交信息

  • 分支命名:使用描述性的分支名,如feature/add-new-toolfix/sandbox-timeoutdocs/update-readme
  • 提交信息:采用清晰、简洁的格式,包含类型前缀和详细描述
feat: add support for Claude 3.5 model

- Add model configuration in config.yaml
- Update model factory to handle Claude-specific settings
- Add tests for new model

提交类型前缀包括:feat:(新功能)、fix:(bug修复)、docs:(文档)、refactor:(代码重构)、test:(测试)、chore:(构建/配置更改)。

前端(TypeScript/React)代码风格规范

代码检查与格式化工具

DeerFlow前端使用ESLint和Prettier进行代码检查和格式化。相关命令在frontend/package.json中定义:

# 运行ESLint检查
pnpm lint

# 自动修复ESLint问题
pnpm lint:fix

# 同时运行ESLint和类型检查
pnpm check

ESLint配置

前端的ESLint配置在frontend/eslint.config.js中定义,主要规则包括:

  • 忽略.next目录、UI组件和AI元素组件
  • 使用TypeScript-ESLint的推荐规则
  • 强制导入顺序:内建模块、外部模块、内部模块、父模块、兄弟模块、索引模块等
  • 允许未使用的变量以_开头

代码组织

前端项目结构遵循Next.js App Router规范,主要目录结构如下:

src/
├── app/                    # Next.js App Router pages
├── components/             # React components
├── core/                   # Core business logic
├── hooks/                  # Custom React hooks
├── lib/                    # Shared libraries & utilities
├── server/                 # Server-side code
└── styles/                 # Global styles

类型定义

前端代码大量使用TypeScript,要求为所有组件和函数提供明确的类型定义。这有助于在开发阶段捕获类型错误,提高代码质量。

通用最佳实践

代码复用

尽可能抽象可复用的逻辑为函数或组件,避免代码重复。对于后端,可以创建工具函数和通用类;对于前端,可以开发自定义Hooks和UI组件。

错误处理

所有代码都应包含适当的错误处理机制,避免程序崩溃或产生不可预期的行为。后端使用try-except块捕获异常,前端使用try-catch和错误边界(Error Boundary)处理错误。

测试

编写单元测试和集成测试是保证代码质量的重要手段。后端测试放在tests/目录下,与源代码结构保持一致;前端测试可以使用Jest和React Testing Library。

代码审查

在提交Pull Request之前,确保:

  1. 所有测试通过:uv run pytest(后端)
  2. 代码风格检查通过:make lint(后端)或pnpm lint(前端)
  3. 代码已格式化:make format(后端)或pnpm format(前端)
  4. 更新了相关文档

PR描述应包含:变更内容、变更原因、实现方法和测试方式。

DeerFlow代码质量检查流程

总结

遵循DeerFlow代码风格指南是编写高质量代码的基础,也是参与开源贡献的重要前提。通过使用统一的代码检查工具、遵循命名规范、编写清晰的文档和测试,我们可以共同维护一个健康、可维护的代码库。

无论是后端的Python代码还是前端的TypeScript/React代码,都应该注重可读性、可维护性和可扩展性。如果你对代码风格有任何疑问,可以查阅项目中的backend/CONTRIBUTING.md文档,或在GitHub上发起讨论。

让我们一起努力,为DeerFlow项目贡献优雅、高效的代码! 🚀

【免费下载链接】deer-flow DeerFlow is a community-driven framework for deep research, combining language models with tools like web search, crawling, and Python execution, while contributing back to the open-source community. 【免费下载链接】deer-flow 项目地址: https://gitcode.com/GitHub_Trending/de/deer-flow

更多推荐