用途
mise-tasks 用于编排多步骤项目工作流,基于 mise 的 [tasks] 配置段,提供依赖管理、参数处理与文件追踪能力。它适合在 .mise.toml 中定义构建、测试、迁移等自动化任务,并让 AI 代理能够发现和调用这些任务。
主要能力
- 任务定义:在 [tasks.名称] 中通过 description 和 run 定义任务。
- 运行方式:支持单任务、多任务、并行(使用 ::: 分隔)以及短命令 mise r。
- 依赖类型:depends(任务前运行)、depends_post(任务成功后运行)、wait_for(仅在运行时等待)。
- 任务属性:description、alias、dir、env、hide、sources、outputs、confirm、quiet、silent、raw、tools、shell、usage 等。
- 命名空间:支持通配符运行(如 test:*、db:**),以及查看隐藏任务。
- 单仓库(Monorepo,实验性):需 MISE_EXPERIMENTAL=1 和 experimental_monorepo_root = true,支持 //projects/frontend:build、:build、//...:test 等写法,子目录任务自动发现并加路径前缀。
- 多语言单仓库:可与 Pants 结合,mise 负责运行时版本与环境变量,Pants 负责构建编排与受影响检测。
- 环境集成:任务自动继承 [env] 值,支持 _.file 加载外部环境文件,redact = true 隐藏密钥。
使用方式
定义任务示例:
[tasks.build] description = "Build the project" run = "cargo build --release"
运行任务:
mise run build mise run test build mise run test ::: build mise r build
依赖示例:
depends = ["lint", "test"] depends_post = ["notify"] wait_for = ["db"]
环境集成示例:
[env] DATABASE_URL = "postgresql://localhost/mydb" _.file = { path = ".env.secrets", redact = true }
[tasks._check-env] hide = true run = '[ -n "$API_KEY" ] || { echo "Missing API_KEY"; exit 1; }'
[tasks.deploy] depends = ["_check-env"] run = "deploy.sh"
适用场景
- 项目构建、测试、迁移等多步骤工作流自动化。
- 需要在 .mise.toml 中集中管理任务依赖与参数。
- 单仓库或多语言单仓库的任务编排。
- 与 mise-configuration 技能配合,统一环境变量配置。
限制与注意事项
- 单仓库功能为实验性,需设置 MISE_EXPERIMENTAL=1 和 experimental_monorepo_root = true。
- 避免在任务中硬编码密钥,应使用 _.file 配合 redact = true。
- 避免巨型单体任务,建议拆分为带依赖的小任务。
- 任务描述应丰富,便于 AI 代理理解用途。
- 发布任务应添加 depends = ["build"],避免运行时失败。
- 常见问题包括任务未找到、依赖未运行(循环依赖)、sources 通配符错误、watch 未触发、环境变量不可用、脚本路径问题等,可通过 mise tasks 列出任务、检查依赖数组、使用相对路径等方式排查。
其他说明
该技能为自进化技能,若发现指令错误、参数漂移或需要变通方法,应即时修复文件,但仅针对真实可复现的问题更新。执行后应检查命令是否成功、参数或输出是否变化、是否需要变通,并据此更新 SKILL.md。