一个基于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
可用模板:
对于工作流默认设置(例如,git日志输出路径),应用程序配置现在存储在.myworkflow/app_config.json中,并由CLI命令自动加载。
CLI命令自动读取这些默认设置。
更多使用说明记录在docs/使用指南.md中,而面向开发者的指导则位于docs/开发指南.md中。
pipx install --include-deps .
安装后,使用短命令:
mw # 启动交互式shell(全局)
mw task list # 标准Typer子命令仍然可用
交互式shell提示:
/):使用↑↓浏览,按Tab插入高亮显示的命令(不自动运行),按Enter执行,按Esc取消。/task run)后,shell列出所有有效的任务/工作流/模板名称;继续使用↑↓/Tab完成参数,键入以过滤。/(如 /task list,/workflow run-by-name),或键入自然语言(如“执行 echo 输出你好”)直接调用解释流程。命令行用户体验增强:
myworkflow task run,myworkflow workflow info)包括任务/工作流/模板名称的自动补全——在大多数终端中按Tab两次即可探索选项。myworkflow task list)。mcp-usewatchdog 实现文件系统事件自动化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_path 和 content 参数如果参数名称不匹配,工作流执行将失败。使用 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:
uv run mw
# 或直接
mw
交互式命令选择:
/ 进入命令选择器Tab 填充所选命令(不执行)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所述。