Python 扩展需要
DEEPAGENTS_CODE_EXPERIMENTAL=1。这是一个实验性 API,可能会更改或未经通知被移除。创建扩展
扩展的入口文件必须暴露一个异步extension 设置函数。dcode 会传递一个 ExtensionAPI 注册器,其中包含只读会话上下文和添加功能的方法。
以下扩展将 LangGraph 存储提供给智能体的文件工具,路径为 /memories/:
extension.py
-e 或 --extension 以加载多个文件或目录。目录扫描包括直接 *.py 文件和包含 __init__.py 或 extension.py 的直接子目录。加载还需要启用扩展发现([extensions].enabled 或 DEEPAGENTS_CODE_EXTENSIONS);当发现被禁用时,Deep Agents Code 会跳过每个源,包括 CLI 路径。
注册功能
扩展 API 支持以下方法:
注册器还暴露了以下只读上下文:
d.cwd: 会话的工作目录。d.mode:interactive或headless。d.has_ui: 会话是否具有交互式终端 UI。d.path: 扩展的入口文件。
on_shutdown 回调来释放它。
注册中间件
注册 LangChain 中间件以向智能体添加模型或工具行为。dcode 在构建智能体图时加载中间件。AgentMiddleware 实例。您也可以传递一个具有零参数构造函数的中间件类。
注册工具
注册一个可调用对象或BaseTool 以使其对模型可用。
路由虚拟存储
后端路由前缀必须是带首尾斜杠的小写绝对路径,例如/memories/ 或 /company/knowledge/。dcode 会拒绝无效路径和与其内部工件或对话历史存储重叠的路由。
路由内容可以通过模型的文件工具访问。Shell execute 仍然附加到默认本地或沙盒存储,因此 shell 命令无法访问虚拟路由内容。沙盒化智能体也会拒绝直接由 FilesystemBackend 支持的路由,因为那会在 shell 执行仍处于沙盒的情况下暴露主机存储。
扩展工具和中间件会替换同名的内置工具。在扩展之间,第一个注册的路由前缀或单元名称将生效。
应用运行时更改
启动后注册的工具会在下一个模型请求时出现。中间件和后端路由会更改智能体图构建,需要/reload。运行 /extensions 以列出注册信息、它们的源路径和作用域、加载失败情况以及是否需要重启。
必须由其操作员重启或重新部署单独管理的远程智能体服务器。
选择扩展源
dcode 按以下顺序加载授权的扩展源,并忽略后续的重复入口路径:~/.deepagents/extensions/中的 Python 文件。[extensions].extra_paths中的文件和目录。- 使用
-e或--extension传递的文件和目录。 - 启用且版本化的插件中的 Python 扩展。
- 通过
dcode.extensionsPython 入口点组暴露的模块。 <project>/.deepagents/extensions/中的可信项目扩展。
~/.deepagents/extensions/ 进行快速用户范围扩展。使用 plugin 进行版本化分发和更新。使用项目扩展来维护一个代码库。
信任项目扩展
<project>/.deepagents/extensions/ 中的项目扩展只有在获得项目信任后才执行。在交互模式下,dcode 会在您允许当前文件一次,记住用于未来会话和编辑的规范项目路径,或跳过它们之间提示您。取消提示(例如,使用 Esc)会中止启动。
对于无头或 CI 运行,为该调用授予权限:
[extensions].trust 或 DEEPAGENTS_CODE_EXTENSIONS_TRUST 将默认项目策略设置为 ask、always 或 never。仅在您打开的每个项目都是可信的情况下使用 always。
配置扩展
在~/.deepagents/config.toml 中配置发现:
~/.deepagents/config.toml
DEEPAGENTS_CODE_EXTENSIONS 覆盖 enabled,DEEPAGENTS_CODE_EXTENSIONS_TRUST 覆盖 trust。两者仍然需要 DEEPAGENTS_CODE_EXPERIMENTAL=1。当 enabled 为 false 时,Deep Agents Code 会跳过每个扩展源。
将扩展打包为插件
版本化的 plugin 是分发扩展的首选方式。在插件清单中,在 Deep Agents Code 命名空间下声明一个入口文件或一个列表:.claude-plugin/plugin.json
./ 开头,并保留在已安装的插件快照中。dcode 拒绝绝对路径、父目录遍历、符号链接逃逸、缺失文件和非 Python 条目。声明 pythonExtensions 的插件必须声明一个非空的 version。安装并启用插件会授权其扩展代码。
安装后,在会话期间启用、禁用、更新或删除插件扩展,请运行 /restart 以重建智能体图。
处理失败
每个扩展设置都是事务性的。如果导入或初始化失败,Deep Agents Code 会移除该扩展的部分注册,在调试日志和/extensions 中记录失败,并继续加载后续扩展。关闭回调失败也不会阻止其他回调运行。
参见
官方原文:src/oss/deepagents/code/extensions.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。