DevOpsCI/CD后端CLI云原生【免费下载链接】daggerAutomation engine to build, test and ship any codebase. Runs locally, in CI, or directly in the cloud项目地址https://gitcode.com/GitHub_Trending/da/dagger点击查看免费下载Dagger v0.18.32025-04-14 发布是一个以开发体验打磨为主的补丁版本其变更日志位于 .changes/v0.18.3.md。本篇以该变更记录为核心骨架逐条解析其中 4 项新增能力、2 项缺陷修复与 1 项实验特性并结合当前仓库中仍然可见的对应源码实现MCP 服务端、Vault Secret 缓存 TTL、git 配置解析工具给出源码级佐证帮助读者在升级 0.18.x 线版本时准确理解每项变更的用法与底层机制。版本变更总览v0.18.3 的变更日志按 Dagger 惯例分为 Added / Fixed / Experimental 三个板块完整内容如下引自 .changes/v0.18.3.md分类变更对应上游 PRAddeddagger develop新增--recursive标志#9860Added支持在不指定 SDK 的情况下加载模块#9984AddedContainer.build与Directory.dockerBuild支持跳过自动 init 进程#10088Added本地 Vault Secret 缓存支持指定ttl#9997Fixed修复解析多行 git 配置文件时的报错#10087Fixed修复尝试 shell 补全时的边界 panic#10125Experimental将 Dagger Core API 暴露为 MCP 工具#10090需要说明的适用前提该变更日志对应 2025-04-14 发布的 0.18.x 版本线。当前仓库快照是其后演进得相当远的主干文档目录中已出现 0.190.21 的版本化文档因此下文中对源码的引用反映的是这些特性在当前主干中的演进形态命令行用法请以 v0.18.3 发行版自身的行为为准。Added新增能力逐条解析dagger develop --recursive递归启动本地开发服务v0.18.3 为dagger develop命令新增了--recursive标志。dagger develop的作用是在本地拉起项目声明的服务数据库、API、开发服务器等供开发者在容器外直接调试新增的--recursive使该命令能够递归处理目录/模块结构而不是只处理顶层声明。从当前仓库源码结构看本地开发服务这条能力线已经演进为职责更宽的命令dagger start 的子命令描述为 Run your projects services for local development — databases, APIs, dev servers, etc.其内部流程是解析工作区中的命令 ArtifactcommandArtifactsWithFlags、将结果映射为Service节点、再通过Host().Tunnel(...)建立宿主端口转发runServices并在转发前显式检测端口冲突start.go 中 port collision detected 报错见 internal/cmd/dagger/start.go#L142-L147。可以推断v0.18.3 中develop --recursive所服务的多服务、多模块本地联调场景正是这条服务启动链路的早期形态。免 SDK 指定加载模块降低模块接入门槛此前加载load一个 Dagger 模块往往需要在模块声明中指定具体 SDKv0.18.3 允许省略 SDK 字段直接加载模块PR #9984由引擎根据模块实际代码自动推断合适的 SDK/语言运行时。当前仓库中模块加载与 SDK 解析逻辑分别落在 internal/cmd/dagger/module.go、internal/cmd/dagger/module_sdk.go 与 internal/cmd/dagger/module_init.go 等文件中模块初始化、SDK 选择含动态 SDK与模块解析被拆分为独立职责。从源码结构看这一拆分使得模块定义与模块所用 SDK可以解耦正是 v0.18.3 免 SDK 加载能力的工程基础声明里不再强制绑定 SDK加载器即可按代码内容推断。跳过Container.build/Directory.dockerBuild的自动 init 进程Dagger 在构建容器时默认会执行一个自动的 init 进程负责信号转发、PID 1 回收等。部分场景下例如镜像构建的中间层、或用户自己已经管理进程生命周期时这个自动 init 进程是多余的。v0.18.3PR #10088允许在使用Container.build和Directory.dockerBuild时显式跳过该自动 init 进程。这两个 API 的核心实现分别位于 core/container.goContainer.build的构建流程与 core/directory.goDirectory.dockerBuild的镜像构建入口。这一变更的价值在于构建中间产物不再携带额外的 init 层开销也更接近原生docker build的行为便于与既有镜像构建脚本对齐。Vault Secret 本地缓存支持ttlv0.18.3 允许为从 Vault 拉取并缓存在本地的 Secret 指定ttl控制缓存条目的过期时间PR #9997。这项能力在当前主干中可以直接对照源码验证实现位于 engine/client/secretprovider/vault.go缓存结构dataWithTTL为每条缓存记录附带过期时间见 vault.go#L16 起的dataWithTTL定义与vaultCache全局缓存表ttl通过 Vault Secret 路径的 query 参数传入代码从解析后的 URL 中取ttl参数并用time.ParseDuration解析非法值会直接报错vault.go#L67-L73即写法形如vault://path?ttl10m命中缓存前会先经hasExpired判断是否过期——if no ttl set, assume no ttl requiredvault.go#L117-L119即未设置ttl时缓存不自动失效与 v0.18.3 之前的行为保持向后兼容。从源码结构看这条路径同时还处理了 Vault OIDC 登录与 token 缓存vaultOIDCLogin、saveCachedVaultToken见 vault.go#L203-L208Secret TTL 与 token 缓存共同构成客户端侧的本地缓存层。对使用dagger secret系列命令从 Vault 读取敏感值的用户而言ttl让本地缓存的存活时间变得可预期、可审计。Fixed缺陷修复多行 git 配置文件解析报错v0.18.3 修复了解析多行 git 配置文件例如包含多行includeIf、多段[section]的.gitconfig时产生的解析错误PR #10087。Dagger 在多个场景需要读取 git 配置认证凭据、insteadOf 重写等相关解析工具集中在 util/gitutil 包中包括 util/gitutil/cli.go 与 util/gitutil/config_env.go。修复后结构较复杂的用户级 git 配置不会再导致 git 相关操作报错退出。shell 补全边界 panic同一版本还修复了尝试 shell 补全completion时的一处边界情况 panicPR #10125属于 CLI 健壮性修复避免在特定补全请求下 CLI 进程崩溃。Experimental将 Dagger Core API 暴露为 MCP 工具v0.18.3 最具前瞻性的条目是实验特性将 Dagger Core API 暴露为 MCPModel Context Protocol工具PR #10090使 MCP 客户端如 LLM Agent可以直接调用 Dagger 的核心能力而不必局限于工作区模块声明的函数。该特性在当前主干中已发展为一条完整的 MCP 链路可以据此理解 v0.18.3 引入时的设计CLI 侧为dagger mcp子命令internal/cmd/dagger/mcp.go当前仍标记为experimentalAnnotations: map[string]string{experimental: true}关键开关--env-privileged的帮助文案正是 Expose the core API as toolsmcp.go#L21-L25——即把 Core API 作为工具集暴露出去与 v0.18.3 的 Experimental 条目一一对应服务流程上mcpStart先解析当前 workspace 并校验存在模块或指定了--env-privileged随后通过 GraphQL 查询llm.withWorkspace(workspace: id).__mcp绑定工作区 schema 并启动 MCP 服务mcpStart引擎侧的 MCP 服务端/客户端实现位于 core/mcpserver.go、core/mcpclient.go 与 core/mcp.go。由于dagger mcp依赖 stdio 传输CLI 会强制保证进度输出不干扰标准输入输出若 progress 设为tty则直接报错若为auto且存在 TTY 则自动降级为plainmcp.go#L30-L41。小结v0.18.3 的四项 Added 分别指向本地开发体验develop --recursive、免 SDK 加载模块、构建控制力跳过自动 init 进程与Secret 缓存可控性Vaultttl均为面向模块开发者的渐进式增强两项 Fixed 修复了 git 配置解析与 shell 补全的健壮性问题源码层面可对照 util/gitutil 与 CLI 命令实现Experimental 的 MCP 工具暴露是后续Agent 调用 Dagger能力线的起点当前主干中的 internal/cmd/dagger/mcp.go 与 core/mcp.go、core/mcpserver.go 提供了完整演进证据使用该版本的读者注意变更日志仅描述该版本相对前序版本的行为差异ttl参数、--env-privileged等具体参数的最新形式建议以当前仓库对应源码与随版本发布的文档为准。赞分享DevOpsCI/CD后端CLI云原生【免费下载链接】daggerAutomation engine to build, test and ship any codebase. Runs locally, in CI, or directly in the cloud项目地址https://gitcode.com/GitHub_Trending/da/dagger点击查看免费下载相关推荐Dagger TypeScript SDK 的 DirectoryAsModuleSourceOptssourceRootPath 详解与模块源码加载实战Dagger TypeScript SDK 的 DirectoryAsModuleSourceOptssourceRootPath 详解与模块源码加载实战 本DevOpsCI/CD后端CLI云原生strands-agents Python SDK v1.12.0 版本解析工具模块化加载、MCP 嵌入式资源与模型层增强strands agents Python SDK v1.12.0 版本解析工具模块化加载、MCP 嵌入式资源与模型层增强 导读 本文围绕 strands a人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Dagger TypeScript SDK 的 CurrentModuleWorkdirOpts 详解模块工作目录加载与过滤选项Dagger TypeScript SDK 的 CurrentModuleWorkdirOpts 详解模块工作目录加载与过滤选项 本篇技术指南围绕 DaggeDevOpsCI/CD后端CLI云原生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考