学习笔记 · Obsidian
TypeScript 贡献与集成发布差异
与 Python 共用的治理规则
PR 必须先关联并获批 issue/discussion、由 maintainer 分配、填写模板;新功能或行为变化写 release note。所有贡献使用英文,LLM 辅助内容必须逐项理解、验证和测试。文档仍只编辑 src/,执行 broken-links、format、lint、markdown fix 与 test,并尽可能把 Python/TypeScript 内容共址维护。
TypeScript 仓库工作流
LangChain.js 使用 pnpm workspace。典型验证为:
pnpm install
pnpm build
pnpm lint
pnpm test
pnpm test:int
可以用 pnpm --filter <package> 缩小到目标 workspace。单元测试位于类似 src/tests/*.test.ts,不得访问外部 API;集成测试位于 src/tests/*.int.test.ts,需要真实 provider、可能产生费用,因此不默认运行。安全要求包括输入校验、模板/查询转义、错误信息不泄露敏感数据,以及审查第三方依赖。
集成契约与标准测试
新集成依然基于 @langchain/core 的公开抽象,重点覆盖 chat model、embeddings、tools、middleware、checkpointer 与 sandbox。标准测试包为 @langchain/standard-tests;能力默认 opt-in,只有真实支持时才声明。Deep Agents sandbox 使用 @langchain/sandbox-standard-tests 的 sandboxStandardTests,并负责测试后资源清理。
发布规则
- 新集成作为独立 npm 包发布,例如
@your-org/langchain-yourservice;不要向langchainjs或 Deep Agents 核心仓库提交新集成实现。 - 默认只向 docs 的
integration_external_docs.yaml添加 npm 包与外部文档元数据。 - 月下载达到 50,000+ 或 maintainer 指定 featured,才可能托管完整指南。
- 包代码和用户文档的长期维护、供应链安全、版本兼容、真实 provider 测试由发布者承担。
- Co-marketing 优先有通用教育价值、复杂 agent、长期记忆、HITL、多代理或研究内容,而不是产品广告。
当前文档漂移风险
JavaScript 路由中的部分贡献页仍残留 Python 文案:
- integration overview 写成独立发布到 PyPI;
- implement 页面称“Python packages”;
- hosted guide 示例路径指向
src/oss/python/...; - standard tests 页面出现 Python 的 PyPI、namespace 与 Reference 链接;
- code 页面部分 LangGraph/Deep Agents 仓库结构仍描述为 Python monorepo。
因此实施时以语言专属的 publish 页面、目标 GitHub 仓库 CONTRIBUTING.md、workspace manifest 和实际测试脚本为准;发现冲突应提交 docs issue,不能机械照抄交叉语言残留内容。
八页覆盖结论
| 页面 | 核心结论 |
|---|---|
| Overview | 先批准、再分配、后 PR;AI 内容必须验证 |
| Documentation | 共址维护双语言、只改 src/、通过文档质量门 |
| Code | pnpm monorepo、最小改动、单测优先、真实集成测试独立运行 |
| Contributing integrations | 选择稳定组件接口,新包独立维护 |
| Implement integration | 继承公开 core contract,明确 runtime 与能力声明 |
| Standard tests | @langchain/standard-tests,能力 opt-in;sandbox 有独立套件 |
| Publish | 独立 npm 包;默认 YAML,50K+/featured 才托管指南 |
| Co-marketing | 教育价值和完整 agent 模式优先 |