学习笔记 · Obsidian

贡献流程与文档、代码规范

LangChainPython

合并前的硬门槛

外部贡献不是“先写 PR 再讨论”。所有 PR 都必须:

  1. 关联一个 issue 或 discussion;
  2. 方案已被 maintainer 明确批准;
  3. issue 已分配给贡献者;
  4. 完整填写仓库 PR 模板;
  5. 新功能或行为变化按模板提供 release note;
  6. 使用英文提交 issue、PR、代码注释与文档。

未先获得批准或分配的早期 PR 可能被自动关闭。安全漏洞不应提交公开 issue,而应走仓库安全披露渠道。

使用 LLM 的边界

可以用 LLM 辅助理解、起草、测试和润色,但贡献者必须逐项理解并验证最终改动。禁止批量、低成本、未经验证的生成内容;明显的 AI spam 可能不经评审直接关闭。责任仍属于提交者,不能以“模型生成”解释错误、许可问题或未运行的测试。

文档开发工作流

文档仓库的本地基线包括 Python 3.13+、uv、Node.js/npm、Make 和 Git。只编辑 src/,build/ 是生成目录。

常用质量门:

make broken-links
make format
make lint
make lint_md_fix
make test

文档应按用户意图选择类型:

类型回答的问题写作重点
How-to如何完成具体任务可执行步骤、前置条件和验证
Conceptual为什么、是什么心智模型、边界与权衡
Reference精确接口是什么完整、结构化、少叙事
Tutorial如何从零学会连贯路径、可运行成果

页面应有 frontmatter、清晰标题层级、可访问的替代文本和有效交叉链接。Python 与 JavaScript/TypeScript 内容在概念相同处共址维护,再生成各语言路由,减少两套文档漂移。示例代码必须能够运行,凭证用环境变量占位,不能包含真实密钥或隐私数据。

代码贡献工作流

  • 先复现问题,用失败测试固定行为,再做最小修复。
  • 保持向后兼容;公共 API 变化必须说明迁移方式,不能顺手扩大重构范围。
  • 优先单元测试:不访问外部网络,快速、稳定,mock 外部依赖。
  • 集成测试只验证真实服务接口点,通常需要凭证和额外环境,按独立流程运行。
  • 新代码应补齐类型、docstring、异常处理和安全校验,并通过仓库 pre-commit 与质量检查。
  • 可选依赖不能无条件导入;需要依赖的测试应使用仓库约定的 requires 标记。
  • 模板、查询和命令中的外部数据必须正确转义,避免注入和敏感信息泄露。

评审视角

一个可接受的贡献不仅要“测试通过”,还要回答:问题是否已获批准、改动是否最小、兼容性是否明确、失败模式是否有测试、文档是否同步、外部资源是否被安全处理、release note 是否准确。没有这些证据的 PR 即使能运行,也不满足生产级贡献标准。