返回市场
工作流

工作流

作者:LucaZou2 星标更新:2025-10-10

项目介绍

MyWorkflow CLI

一个基于Typer的现代工作流命令行工具,用于编排日常自动化任务,集成基于LLM的意图解析、LangGraph工作流、MCP工具以及事件驱动触发器。

📚 文档

快速开始

uv sync
cp .env.example .env  # 更新内部值
uv run myworkflow --help  # 使用 `uv run mw` 或 `.venv/bin/mw` 在项目内

要安装全局 mw 命令,请通过 pipx 安装(见下文)。在 .env 中填充您的凭据和配置。示例条目(全部可选——没有API密钥时,CLI会回退到基于规则的意图解析):

MYWORKFLOW_LLM_API_KEY=sk-...
MYWORKFLOW_LLM_MODEL=deepseek-chat
MYWORKFLOW_LLM_BASE_URL=https://api.deepseek.com/v1
MYWORKFLOW_MCP_CONFIG=./.myworkflow/mcp_config.json
MYWORKFLOW_CONFIG_FILE=./.myworkflow/app_config.json

配置文件现在由 .myworkflow/ 目录管理以更好地组织:

.myworkflow/
├── app_config.json      # 应用程序配置
├── mcp_config.json      # MCP服务器配置
└── workflows/           # 工作流定义目录
    ├── git-log-notify.json
    ├── multi-branch-git-log.json
    └── custom_workflow.json

MCP配置遵循最新的mcp-use文档格式。

配置管理

自动初始化配置文件:

# 初始化所有配置文件
uv run myworkflow config init

# 检查配置状态
uv run myworkflow config status

# 自动初始化缺失的配置
uv run myworkflow config auto-init

工作流模板初始化

快速从模板或自定义任务列表创建新工作流:

# 列出可用的工作流模板
uv run myworkflow workflow-init list-templates

# 列出自定义工作流可用的任务
uv run myworkflow workflow-init list-tasks

# 查看模板详情
uv run myworkflow workflow-init template-info simple_sequence

# 从模板初始化工作流
uv run myworkflow workflow-init init --template simple_sequence --name my-workflow

# 创建具有特定任务的自定义工作流
uv run myworkflow workflow-init init --name custom-workflow --tasks echo,shell,git_command

# 检查工作流目录状态
uv run myworkflow workflow-init status

可用模板:

  • simple_sequence: 基本顺序执行工作流
  • git_workflow: Git操作工作流模板
  • file_processing: 文件处理工作流模板

对于工作流默认设置(例如,git日志输出路径),应用程序配置现在存储在.myworkflow/app_config.json中,并由CLI命令自动加载。 CLI命令自动读取这些默认设置。

更多使用说明记录在docs/使用指南.md中,而面向开发者的指导则位于docs/开发指南.md中。

使用pipx进行全局安装

pipx install --include-deps .

安装后,使用短命令:

mw            # 启动交互式shell(全局)
mw task list  # 标准Typer子命令仍然可用

交互式shell提示:

  • 命令面板 (/):使用↑↓浏览,按Tab插入高亮显示的命令(不自动运行),按Enter执行,按Esc取消。
  • 上下文感知补全:选择需要参数的命令(如 /task run)后,shell列出所有有效的任务/工作流/模板名称;继续使用↑↓/Tab完成参数,键入以过滤。
  • 斜杠快捷方式:在任何Typer命令前加上 /(如 /task list/workflow run-by-name),或键入自然语言(如“执行 echo 输出你好”)直接调用解释流程。
  • 实时状态与提示:命令渲染成功/错误状态并提供如何修正拼写错误(如最近的任务名称)的指导,并在长时间运行的工作流执行期间显示进度反馈。

命令行用户体验增强:

  • 所有Typer命令(如 myworkflow task runmyworkflow workflow info)包括任务/工作流/模板名称的自动补全——在大多数终端中按Tab两次即可探索选项。
  • 当提供的任务/工作流/模板不存在时,CLI现在建议最接近的匹配项并指出后续命令(如 myworkflow task list)。
  • 长时间运行的操作(任务执行、工作流运行、模板初始化)显示进度旋钮和时间总结,因此您始终知道CLI正在做什么。

主要特性

  • 基于Typer的现代CLI
  • 增强的交互式Shell:命令面板、上下文感知补全和实时执行状态反馈
  • 具有Pydantic验证和LangGraph工作流的任务注册表
  • 通过DeepSeek(兼容OpenAI)或基于规则的回退进行自然语言意图解析
  • 可选的MCP工具执行使用 mcp-use
  • 可重用的Git和文件系统任务用于组合自定义自动化
  • 通过 watchdog 实现文件系统事件自动化

示例用法

基本命令

uv run myworkflow task list
uv run myworkflow task run echo -p text="Hello"
uv run myworkflow interpret "Run echo with text hello" --execute
uv run myworkflow events watch --path .

工作流管理

列出所有可用的工作流:

uv run myworkflow workflow list

查看工作流详情:

uv run myworkflow workflow info git_log_notify

按名称执行工作流:

uv run myworkflow workflow run-by-name git_log_notify
uv run myworkflow workflow run-by-name multi_branch_git_log

顺序工作流示例(传统方法):

uv run myworkflow workflow run echo shell --parameters workflow.json

导出Git提交历史:

uv run myworkflow task run git_log_analysis --repository-path . --format oneline

工作流配置文件

新的工作流配置格式支持丰富的元数据和步骤定义。将配置文件放置在 .myworkflow/workflows/ 目录中:

重要提示:工作流中的参数名称必须与任务的Pydantic模型字段完全匹配。例如:

  • echo 任务需要 text 参数
  • shell 任务需要 command 参数
  • read_file 任务需要 path 参数
  • write_file 任务需要 file_pathcontent 参数

如果参数名称不匹配,工作流执行将失败。使用 uv run myworkflow task list 查看所有可用任务及其参数需求。

{
  "name": "git_log_notify",
  "version": "1.0.0",
  "description": "获取Git日志并发送桌面通知",
  "author": "MyWorkflow",
  "tags": ["git", "notification", "log"],
  "entry_step": "git_command",
  "steps": {
    "git_command": {
      "task": "git_command",
      "description": "获取最后10个Git提交日志",
      "next": "write_file",
      "parameters": {
        "command": "log",
        "args": ["--oneline", "-10"]
      }
    },
    "write_file": {
      "task": "write_file",
      "description": "将Git日志保存到临时文件",
      "next": "desktop_notification",
      "parameters": {
        "file_path": "/tmp/git-log.txt",
        "content": "{{git_command.output}}",
        "mode": "w"
      }
    },
    "desktop_notification": {
      "task": "desktop_notification",
      "description": "发送带有Git日志内容的桌面通知",
      "parameters": {
        "title": "Git日志完成",
        "message": "Git日志已保存至/tmp/git-log.txt\n{{git_command.output}}"
      }
    }
  },
  "timeout": 300,
  "environment": {},
  "variables": {},
  "metadata": {}
}

传统的 workflow.json 参数文件示例:

{
  "echo": {"text": "Hello"},
  "shell": {"command": ["echo", "World"]}
}

增强命令选择的交互式Shell

启动交互式shell:

uv run mw
# 或直接
mw

交互式命令选择:

  1. 输入 / 进入命令选择器
  2. 使用 ↑↓ 方向键导航命令
  3. Tab 填充所选命令(不执行)
  4. 根据需要添加参数
  5. Enter 执行

示例交互流程:

╭─[MyWorkflow]
╰─➤ /                    # 进入命令选择器
# 命令选择器打开,分类显示命令
# 使用 ↑↓ 导航,Tab 选择
╭─[MyWorkflow]
╰─➤ /task run            # 命令填充,准备参数
╭─[MyWorkflow]
╰─➤ /task run echo -p text="Hello World"
# 按 Enter 执行

# 与工作流相关的命令
╭─[MyWorkflow]
╰─➤ /workflow list       # 列出所有工作流
╭─[MyWorkflow]
╰─➤ /workflow info git_log_notify  # 查看工作流详情
╭─[MyWorkflow]
╰─➤ /workflow run-by-name git_log_notify  # 执行工作流

# 工作流初始化命令
╭─[MyWorkflow]
╰─➤ /workflow-init list-templates  # 列出可用模板
╭─[MyWorkflow]
╰─➤ /workflow-init init --template simple_sequence --name test  # 从模板创建

创建传统的 workflow.json 包含每个任务的参数:

{
  "echo": {"text": "Hello"},
  "shell": {"command": ["echo", "World"]}
}

当使用MCP工具时,请确保 .myworkflow/mcp_config.json 文件中的 mcpServers 键列出了MCP服务器,如上游README所述。