工作流自动化
工作流分类
按频率分类
- 超高频 (每小时): 快速启动、信息捕获、搜索查询
- 高频 (每天多次): 代码提交、文档编辑、通信处理
- 中频 (每天1-2次): 环境切换、任务规划、复盘总结
- 低频 (每周/月): 数据备份、系统优化、报告生成
按场景分类
- 开发工作流: 编码、测试、部署
- 知识工作流: 学习、笔记、写作
- 协作工作流: 会议、沟通、项目管理
- 生活工作流: 日程、财务、健康
核心工作流详解
1. 开发工作流
1.1 项目启动工作流
触发方式: ⌘+Space → "dev" → 选择项目
workflow: "开发环境启动"
steps:
- name: "检查项目状态"
action: |
# 检查git状态
cd $PROJECT_DIR
git fetch origin
git status
- name: "更新依赖"
condition: package.json 有变更
action: |
npm install
- name: "启动服务"
parallel: true
tasks:
- 启动开发服务器 (npm run dev)
- 启动数据库 (docker-compose up)
- 启动Mock API (json-server)
- name: "打开工作环境"
parallel: true
tasks:
- 打开VS Code
- 打开浏览器 (localhost:3000)
- 打开API文档页
- 打开项目管理工具
- name: "窗口布局"
action: |
# 使用Rectangle设置窗口
# 左半屏: VS Code
# 右上: Chrome
# 右下: Terminal
- name: "加载上下文"
action: |
# AI 加载项目上下文
claude load-context $PROJECT_DIR
# 显示今日任务
show-tasks today
notification:
success: "🚀 开发环境已就绪"
duration: 3秒
实现示例:
#!/bin/bash
# ~/.automation/workflows/dev/start-project.sh
PROJECT_NAME=$1
PROJECT_DIR="$HOME/Developer/$PROJECT_NAME"
if [ ! -d "$PROJECT_DIR" ]; then
echo "❌ 项目不存在"
exit 1
fi
cd "$PROJECT_DIR"
# 检查git状态
echo "📥 检查更新..."
git fetch origin
BEHIND=$(git rev-list HEAD..origin/$(git branch --show-current) --count)
if [ $BEHIND -gt 0 ]; then
git pull
fi
# 检查依赖
if [ -f "package.json" ]; then
if [ ! -d "node_modules" ] || [ "package.json" -nt "node_modules" ]; then
echo "📦 安装依赖..."
npm install
fi
fi
# 启动服务
echo "🚀 启动服务..."
npm run dev &
# 打开编辑器
code .
# 打开浏览器
sleep 3
open "http://localhost:3000"
echo "✅ 开发环境已就绪"
1.2 智能代码提交工作流
触发方式: 保存文件后自动,或手动 ⌘+Shift+G
workflow: "智能代码提交"
steps:
- name: "代码质量检查"
parallel: true
tasks:
- 运行linter
- 运行类型检查
- 运行单元测试
on_failure: abort
- name: "AI代码审查"
action: |
# 获取变更
changes=$(git diff --cached)
# AI审查
review=$(echo "$changes" | claude "
审查这段代码:
1. 潜在bug
2. 性能问题
3. 安全隐患
4. 代码风格
5. 最佳实践
简明输出,严重问题才报告。
")
# 如果有严重问题,中止
if echo "$review" | grep -q "严重\|critical\|security"; then
echo "$review"
exit 1
fi
- name: "生成提交信息"
action: |
# AI生成commit message
message=$(git diff --cached | claude "
根据以下变更生成符合约定式提交的message:
- 格式: type(scope): subject
- type: feat/fix/docs/style/refactor/test/chore
- subject: 简洁描述,不超过50字符
只输出message,不要解释。
")
echo "$message"
- name: "创建提交"
action: |
git commit -m "$message"
- name: "可选推送"
interactive: true
prompt: "是否推送到远程?"
on_yes: git push
notification:
success: "✅ 代码已提交: $message"
实现示例:
#!/bin/bash
# ~/.automation/workflows/dev/smart-commit.sh
echo "🔍 运行检查..."
# Lint
if ! npm run lint --silent; then
echo "❌ Lint检查失败"
exit 1
fi
# 类型检查
if [ -f "tsconfig.json" ]; then
if ! npm run type-check --silent 2>/dev/null; then
echo "⚠️ 类型检查有警告"
fi
fi
# 测试
if ! npm test --silent; then
read -p "⚠️ 测试失败,是否继续? (y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
# AI审查
echo "🤖 AI代码审查中..."
git diff --cached > /tmp/diff.txt
REVIEW=$(cat /tmp/diff.txt | claude-cli "快速审查代码,只报告严重问题")
if echo "$REVIEW" | grep -qi "严重\|critical\|security"; then
echo "❌ 发现严重问题:"
echo "$REVIEW"
exit 1
fi
# 生成commit message
echo "✍️ 生成提交信息..."
COMMIT_MSG=$(cat /tmp/diff.txt | claude-cli "生成约定式提交message,只输出message")
echo "提交信息: $COMMIT_MSG"
read -p "是否使用此信息? (Y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Nn]$ ]]; then
read -p "请输入提交信息: " CUSTOM_MSG
COMMIT_MSG=$CUSTOM_MSG
fi
# 提交
git commit -m "$COMMIT_MSG"
# 询问是否推送
read -p "是否推送到远程? (y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
git push
echo "🚀 已推送"
fi
echo "✅ 完成"
1.3 自动化测试工作流
workflow: "智能测试"
triggers:
- 文件保存 (*.test.js, *.spec.ts)
- 手动触发 (⌘+Shift+T)
- Git hook (pre-push)
steps:
- name: "识别变更范围"
action: |
# 分析变更文件
changed_files=$(git diff --name-only HEAD)
# 找出受影响的测试
affected_tests=$(find-affected-tests $changed_files)
- name: "运行测试"
action: |
# 只运行相关测试
npm test -- $affected_tests
- name: "生成覆盖率报告"
condition: 全量测试时
action: |
npm run test:coverage
open coverage/index.html
- name: "AI测试建议"
condition: 覆盖率 < 80%
action: |
# AI分析未覆盖代码
uncovered=$(get-uncovered-code)
suggestions=$(echo "$uncovered" | claude "
为以下未测试代码生成测试用例建议:
$uncovered
")
echo "$suggestions" > test-suggestions.md
notification:
success: "✅ 测试通过 (覆盖率: {coverage}%)"
failure: "❌ 测试失败: {failed_count} 个用例"
2. 知识管理工作流
2.1 快速笔记捕获
触发方式: 全局快捷键 ⌘+⌥+N
workflow: "快速笔记"
steps:
- name: "获取输入"
action: |
# 弹出输入框或使用语音
content=$(get-input)
- name: "智能分类"
action: |
# AI判断类型和类别
analysis=$(echo "$content" | claude "
分析这段文本:
1. 类型: [想法/任务/知识/提醒/问题]
2. 标签: 提取3-5个关键标签
3. 优先级: [高/中/低]
4. 相关项目: 识别相关项目名称
JSON格式输出
")
- name: "保存到对应位置"
action: |
type=$(echo "$analysis" | jq -r '.type')
case $type in
"任务")
# 添加到Things
things-cli add "$content"
;;
"知识")
# 保存到Obsidian
save-to-obsidian "$content"
;;
"想法")
# 保存到想法收集箱
save-to-inbox "$content"
;;
esac
- name: "创建关联"
action: |
# 找出相关笔记
related=$(search-similar-notes "$content")
# 创建双向链接
create-backlinks "$content" "$related"
notification:
success: "✅ 已保存到 $type"
2.2 学习工作流
触发方式: "learn [主题]"
workflow: "学习新主题"
input:
- name: topic
type: string
description: 学习主题
steps:
- name: "创建学习计划"
action: |
# AI生成学习路径
plan=$(claude "
为'$topic'创建30天学习计划:
1. 分解为模块
2. 每个模块的学习目标
3. 推荐资源
4. 练习项目
5. 检验标准
Markdown格式
")
# 保存计划
save-note "Learning/$topic/Plan.md" "$plan"
- name: "搭建学习环境"
action: |
# 创建项目结构
mkdir -p ~/Learning/$topic/{notes,projects,resources}
# 创建笔记模板
create-note-template "$topic"
# 搜索资源
resources=$(search-resources "$topic")
save-note "Learning/$topic/Resources.md" "$resources"
- name: "设置提醒"
action: |
# 创建每日学习提醒
create-reminder "学习 $topic" "daily" "20:00"
# 创建复习提醒 (间隔重复)
create-spaced-repetition-schedule "$topic"
- name: "创建练习项目"
action: |
# AI生成项目想法
project_ideas=$(claude "
为学习'$topic'设计3个渐进式练习项目:
1. 基础项目 (1-2天)
2. 进阶项目 (3-5天)
3. 综合项目 (1-2周)
")
save-note "Learning/$topic/Projects.md" "$project_ideas"
notification:
success: "📚 学习计划已创建: ~/Learning/$topic"
2.3 每日复习工作流
触发方式: 每天早上9:00自动,或手动 "review"
workflow: "每日复习"
schedule: "0 9 * * *"
steps:
- name: "收集待复习内容"
action: |
# 获取需要复习的笔记 (间隔重复算法)
due_notes=$(get-due-reviews)
# 获取最近学习内容
recent_notes=$(get-recent-notes 3)
- name: "生成复习问题"
action: |
questions=""
for note in $due_notes; do
# AI从笔记生成问题
q=$(cat "$note" | claude "
基于以下笔记生成2-3个复习问题:
$(cat $note)
")
questions+="$q\n\n"
done
- name: "进行复习"
interactive: true
action: |
# 显示问题,等待回答
for q in $questions; do
echo "$q"
read -p "你的答案: " answer
# AI评估回答
feedback=$(echo "$answer" | claude "
问题: $q
回答: $answer
评估回答质量,给出反馈
")
echo "$feedback"
# 根据回答质量调整复习间隔
update-review-interval "$note" "$feedback"
done
- name: "生成复习总结"
action: |
summary=$(generate-review-summary)
save-note "Reviews/$(date +%Y-%m-%d).md" "$summary"
notification:
success: "✅ 今日复习完成"
3. 协作工作流
3.1 会议准备工作流
触发方式: 会议前15分钟自动
workflow: "会议准备"
trigger:
type: calendar
before: 15分钟
steps:
- name: "收集会议信息"
action: |
# 从日历获取信息
meeting=$(get-next-meeting)
title=$(echo "$meeting" | jq -r '.title')
attendees=$(echo "$meeting" | jq -r '.attendees[]')
- name: "准备会议材料"
action: |
# 搜索相关文档
related_docs=$(search-docs "$title")
# 查找历史会议记录
previous_meetings=$(search-meeting-notes "$title")
# AI生成会议大纲
outline=$(claude "
即将参加会议: $title
参会人: $attendees
相关文档: $related_docs
上次会议: $previous_meetings
生成会议准备大纲:
1. 需要了解的背景
2. 讨论要点
3. 我的目标
4. 准备问题
")
- name: "创建会议笔记"
action: |
note_file="Meetings/$(date +%Y-%m-%d)-${title}.md"
create-meeting-note "$note_file" "$outline"
# 在编辑器中打开
open-note "$note_file"
- name: "设置提醒"
action: |
# 5分钟前提醒进入会议室
create-reminder "进入会议: $title" "$(meeting_time - 5min)"
notification:
type: system
message: "📅 会议准备完成: $title"
3.2 邮件处理工作流
触发方式: 每天特定时间 或 手动 "process-emails"
workflow: "批量处理邮件"
steps:
- name: "获取未读邮件"
action: |
emails=$(get-unread-emails)
- name: "AI智能分类"
action: |
for email in $emails; do
# AI分析邮件
analysis=$(echo "$email" | claude "
分析这封邮件:
1. 重要性: [高/中/低]
2. 类别: [需回复/仅供参考/待办事项/垃圾邮件]
3. 紧急度: [紧急/正常/不急]
4. 建议操作: 具体建议
JSON格式
")
# 自动标记
importance=$(echo "$analysis" | jq -r '.importance')
category=$(echo "$analysis" | jq -r '.category')
# 根据分类处理
case $category in
"需回复")
# AI草拟回复
draft=$(draft-reply "$email")
create-email-draft "$email" "$draft"
;;
"待办事项")
# 转化为任务
create-task-from-email "$email"
archive-email "$email"
;;
"仅供参考")
# 保存到笔记
save-email-to-notes "$email"
archive-email "$email"
;;
"垃圾邮件")
# 删除或归档
delete-email "$email"
;;
esac
done
- name: "生成处理摘要"
action: |
summary="
📧 邮件处理完成
- 需回复: $reply_count
- 已创建任务: $task_count
- 已归档: $archive_count
- 已删除: $delete_count
"
echo "$summary"
notification:
success: "$summary"
4. 生活工作流
4.1 晨间仪式
触发方式: 每天早上8:00
workflow: "晨间仪式"
schedule: "0 8 * * *"
steps:
- name: "获取今日信息"
parallel: true
tasks:
- 获取天气预报
- 读取日历事件
- 获取待办任务
- 检查重要邮件
- 获取新闻摘要
- name: "AI生成日计划"
action: |
plan=$(claude "
今天是$(date)
天气: $weather
日历事件: $calendar
待办任务: $todos
重要邮件: $emails
生成今日计划:
1. 时间安排建议
2. 优先级排序
3. 可能的冲突
4. 健康提醒(休息、运动)
5. 一句激励
")
- name: "展示和保存"
action: |
# 语音播报
say "$plan"
# 显示通知
show-notification "☀️ 早安" "$plan"
# 保存日计划
save-note "Daily/$(date +%Y-%m-%d).md" "$plan"
- name: "启动晨间工具"
action: |
# 打开今日笔记
open-daily-note
# 打开任务管理器
open-tasks
# 播放专注音乐
play-focus-music
4.2 番茄工作法
触发方式: "focus [任务]"
workflow: "番茄工作法"
input:
- name: task
type: string
description: 当前任务
steps:
- name: "准备工作环境"
action: |
# 开启勿扰模式
enable-do-not-disturb
# 关闭干扰网站
block-distracting-sites
# 清空桌面
minimize-all-windows
# 打开工作相关应用
open-work-apps "$task"
- name: "开始番茄钟"
action: |
duration=25 # 分钟
# 记录开始时间
start_time=$(date +%s)
# 显示计时器
show-timer $duration
# 播放白噪音
play-focus-sound
# 等待25分钟
sleep $((duration * 60))
- name: "休息时间"
action: |
# 通知休息
show-notification "⏰ 番茄钟结束" "休息5分钟"
# 解除限制
unblock-sites
# 播放提示音
play-break-sound
# 5分钟休息
sleep 300
- name: "记录完成"
action: |
# 记录本次番茄钟
log-pomodoro "$task" "$start_time"
# 询问继续
read -p "继续下一个番茄钟? (Y/n) " -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]; then
restart-workflow
fi
- name: "生成统计"
action: |
# 今日番茄钟统计
today_count=$(count-pomodoros today)
echo "🍅 今日已完成 $today_count 个番茄钟"
4.3 晚间复盘
触发方式: 每天晚上22:00
workflow: "晚间复盘"
schedule: "0 22 * * *"
steps:
- name: "收集今日数据"
action: |
# 完成的任务
completed_tasks=$(get-completed-tasks today)
# 番茄钟记录
pomodoros=$(get-pomodoros today)
# 代码提交
commits=$(git log --all --since="today" --oneline)
# 笔记
notes=$(get-notes today)
# 健康数据
health=$(get-health-data today)
- name: "AI生成复盘报告"
action: |
review=$(claude "
今日数据:
- 完成任务: $completed_tasks
- 专注时间: $pomodoros 个番茄钟
- 代码提交: $(echo '$commits' | wc -l) 次
- 笔记数: $(echo '$notes' | wc -l) 篇
- 运动: $health
生成复盘报告:
1. 今日亮点
2. 完成度评估
3. 时间分配分析
4. 改进建议
5. 明日建议
")
- name: "保存复盘"
action: |
save-note "Reviews/$(date +%Y-%m-%d)-daily.md" "$review"
- name: "清理和准备"
action: |
# 清理下载文件夹
clean-downloads
# 关闭不需要的应用
close-unused-apps
# 设置明日提醒
set-tomorrow-reminders
notification:
success: "✅ 复盘完成,休息时间到了!"
工作流编排技巧
1. 条件执行
- name: "步骤名"
condition: |
# Bash条件判断
[ -f "package.json" ] && [ ! -d "node_modules" ]
action: npm install
2. 错误处理
- name: "步骤名"
action: risky-command
on_error:
strategy: retry # retry / ignore / abort / fallback
max_retries: 3
fallback_action: safe-command
3. 并行执行
- name: "并行任务"
parallel: true
max_concurrent: 4
tasks:
- task1
- task2
- task3
4. 参数传递
workflow: "示例"
parameters:
- name: input1
type: string
required: true
default: "default value"
validation: "^[a-z]+$"
steps:
- name: "使用参数"
action: echo "$input1"
工作流测试
# 测试工作流
automation test workflow-name
# 调试模式
automation run workflow-name --debug
# 模拟运行(不执行实际操作)
automation run workflow-name --dry-run
# 查看工作流定义
automation show workflow-name
下一步: 查看 AI增强方案 了解如何用AI提升自动化系统。