托管深度代理目前处于私有测试阶段,仅在LangSmith Cloud的美国区域提供。加入等待列表以申请访问权限。
前提条件
- 使用
mda init创建的托管深度代理项目(或已有代理入口的现有项目)。 evals/目录下的 Harbor 任务(如需要,使用mda evals init脚手架化)。- 当使用 Harbor 默认的
docker环境时,本地运行的 Docker。 - 项目
.env文件或您的 shell 中的模型凭据(例如,对于openai:…模型是OPENAI_API_KEY)。 - 来自
managed-deepagents的mdaCLI(安装方式同 CLI 参考文档)。 - 您的
PATH环境变量中有 Harbor,或者安装了uv,以便运行uv run --with harbor …。
概念
脚手架化任务
在您的项目根目录下运行:evals),当 evals/ 目录不存在时,该命令会在其下创建起始任务。mda init 也会为新项目脚手架化起始的评估任务。
要稍后添加一个新任务:
任务布局
每个任务都是evals/ 下的一个 Harbor 任务目录。其布局符合 Harbor 的 任务结构:
指令
instruction.md 是 Harbor 向代理展示的自然语言任务描述。请保持其具体且可验证。
验证器
代理完成后,Harbor 通过运行您的验证器脚本来评分这次试运行:在 Linux 上是tests/test.sh(在 Windows 上是 tests/test.bat)。在评分运行结果的容器内,路径如下所示:
您的脚本检查
/app(或其他输出),然后必须写入一个奖励文件:
使用任一格式均可。Harbor 两者都接受。建议使用绝对路径(
/app/...、/tests/...),这样脚本就不会依赖于工作目录。您可以用 shell 实现检查、调用测试运行器或运行自定义评分逻辑——只要能写出奖励文件即可。
最小化示例:
task.toml 中的验证器环境变量以及 LLM 作为评判者的模式,请参阅 Harbor 的任务结构和 LLM 作为评判者文档。
身份感知项目
如果项目导出了身份(identity.ts 或 identity.py),则每个评估任务都必须包含 identity.json。脚手架化会自动添加一个默认的固定数据。当您的代理或测试依赖于特定的参与者、租户或声明时,可以自定义该固定数据。
identity.json
/app 下。
编译 Harbor 交付物
在您的项目根目录下运行:evals/ 下至少有一个 Harbor 任务(一个包含 instruction.md 和 tests/ 的子目录)。它会在 .mda/evals/ 下写入一个交付物:
可选的编译标志:
.mda/evals/ 是本地输出。请勿提交它,它也不属于部署存档的一部分。
使用 Harbor 运行试运行
mda evals compile 会打印一条可复制粘贴的 Harbor 命令。在项目根目录下运行:
PATH 中已有 harbor,则打印的命令会直接使用 harbor run,而不是 uv run --with harbor。
编辑 .mda/evals/harbor-job.json 可以更改任务、模型、环境类型、并发数或尝试次数。Harbor 负责试运行编排、后端和报告——而不是 mda CLI。关于 Harbor 标志和作业配置字段,请参阅 Harbor 文档。
在您更改代理或想要一个新的示例作业配置后,请重新运行 mda evals compile(每次编译都会在 .mda/evals/harbor-jobs/ 下使用一个新的 Harbor 作业目录)。
沙箱设置脚本
如果项目包含sandbox/setup.sh,托管深度代理 Harbor 适配器会在准备试运行环境时运行它一次(使用 bash,因此支持 set -o pipefail 等 bash 特性)。在评估期间,编写的沙箱提供程序配置会被忽略;试运行环境负责隔离。
后续步骤
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

