学习笔记 · Obsidian

TypeScript 贡献与集成发布差异

LangChainTypeScript

与 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/、通过文档质量门
Codepnpm monorepo、最小改动、单测优先、真实集成测试独立运行
Contributing integrations选择稳定组件接口,新包独立维护
Implement integration继承公开 core contract,明确 runtime 与能力声明
Standard tests@langchain/standard-tests,能力 opt-in;sandbox 有独立套件
Publish独立 npm 包;默认 YAML,50K+/featured 才托管指南
Co-marketing教育价值和完整 agent 模式优先