用途 vendor-sync 用于把项目内按上游来源引入(vendored)的技能升级到新的固定版本,并保持这些技能内容不被本地修改。更新方式是:将技能从上游某个提交整体替换,再以 skills-lock.json 在 CI 中校验一致性。
版本记录位置 每个上游的 pin 定义在 src/design_agent/skills_lock.py 的 UPSTREAMS 中,并记录它引入到 skills/(运行时)和 .agents/skills/(编码智能体)的技能。运行 uv run design-agent skills sync-vendor --check-only 会把每个 pin 与上游最新版本比对:HyperFrames 比对其最新发布,LangChain 的两个技能包比对其 main 提交。
HyperFrames 的更新流程
- 选择最新稳定版 HyperFrames 标签(不使用预发布版)及其提交。阅读其变更日志,关注 CLI 变化,例如标志、命令重命名或弃用(如 validate 变为 check)。
- 更新 UPSTREAMS 中 hyperframes 条目的 commit 与 release,更新 sandbox/render/package.json 中的 hyperframes 版本,然后在 sandbox/render/ 执行 npm install --package-lock-only,并运行 uv run python scripts/sync_sandbox_recipe.py(把锁定内容嵌入 setup.sh)。
- 运行 uv run design-agent skills sync-vendor --upstream hyperframes,审查 git diff skills/ skills-lock.json。检查排除列表是否仍能拦截第三方媒体、无授权字体和打包库。上游技能自带 .gitignore,被其忽略的锁定文件需用 git add -f 添加(test_git_tracks_every_locked_file 会列出这些文件)。
- 重新构建并验证:uv run design-agent sandbox build、sandbox test、uv run pytest -q -m render、uv run design-agent demo。由于 recipe 变更,MDA 部署需要再次执行 sandbox publish。
LangSmith 与 Deep Agents 技能的更新流程
- 查看 langchain-ai/langsmith-skills 或 langchain-ai/langchain-skills 的 main 自固定提交以来的变化,然后更新 UPSTREAMS 中对应条目的 commit。
- 运行 uv run design-agent skills sync-vendor --upstream langsmith-skills(或 langchain-skills),审查 git diff skills/ .agents/skills/ skills-lock.json。
- 如果 langsmith-trace 发生变化,检查 config/vendored-skills.toml 中它的一行摘要是否仍能引导已部署智能体使用 list_traces 和 read_trace:其沙箱无网络且无 LangSmith key,因此该技能教授的 CLI 无法在那里运行。
适用于所有上游的通用事项 新增或重命名的运行时技能需在 config/vendored-skills.toml 添加一行摘要,并在 pyproject.toml 的 extend-exclude 中加入该文件夹(两处与锁不匹配时测试会失败)。新增编码智能体技能需要在 AGENTS.md 中加入路由(test_coding_agent_skills.py 会检查)。最后运行 uv run design-agent skills verify 和 uv run pytest -q 验证,并在 NOTICE.md、docs/sources/ 和 CHANGELOG.md 中记录新的 pin 及所有变化。