待办事项工具¶
待办事项工具为 AI 驱动的工作流提供结构化的任务管理和进度跟踪功能。该工具使 AI 助手能够组织、跟踪和管理复杂的多步骤任务、项目工作流和长时间运行的操作,并提供清晰的状态可见性。
更新日志
0.5.1 初始版本,支持 planned、pending、done 和 cancelled 状态
概述¶
TodoList 类提供了以下功能:
- 工作流管理: 跟踪多步骤 AI 任务和操作
- 进度监控: 监控任务完成情况和工作流进度
- 状态跟踪: 在复杂工作流中保持清晰的任务状态可见性
- 任务组织: 结构化和组织相关任务
- 执行规划: 规划和记录 AI 任务执行序列
- 输出格式化: 为不同上下文生成格式化报告
快速开始¶
from toolregistry_hub.todo_list import TodoList
# 创建工作流任务列表
workflow_tasks = [
"[analyze-requirements] 分析用户需求和约束 (planned)",
"[design-solution] 设计解决方案架构 (planned)",
"[implement-core] 实现核心功能 (planned)",
"[test-integration] 测试系统集成 (planned)",
"[deploy-production] 部署到生产环境 (planned)"
]
# 更新工作流状态
TodoList.update(workflow_tasks)
print("工作流已初始化")
# 获取格式化的进度报告
progress_report = TodoList.update(workflow_tasks, format="markdown")
print(progress_report)
API 参考¶
TodoList.update(todos, format="simple")¶
更新或创建待办事项列表,支持可选的格式化输出用于工作流跟踪。
参数:
todos(List[str]): 任务条目列表,格式为[id] description (status)format(str, 可选): 输出格式 -"simple"、"markdown"或"ascii"。默认为"simple"
返回值:
Optional[str]: 格式化的任务列表输出(simple 格式返回 None)
状态值:
planned- 任务已计划但尚未开始pending- 任务正在执行中done- 任务已成功完成cancelled- 任务已取消或放弃
AI 工作流用例¶
多步骤任务执行¶
from toolregistry_hub.todo_list import TodoList
# AI 助手管理复杂的分析任务
analysis_workflow = [
"[data-collection] 收集和验证输入数据 (done)",
"[preprocessing] 清理和规范化数据 (pending)",
"[feature-extraction] 提取相关特征 (planned)",
"[model-training] 训练预测模型 (planned)",
"[evaluation] 评估模型性能 (planned)",
"[reporting] 生成分析报告 (planned)"
]
# 跟踪工作流进度
TodoList.update(analysis_workflow)
# 生成状态报告
status = TodoList.update(analysis_workflow, format="markdown")
print("分析工作流状态:")
print(status)
迭代问题求解¶
from toolregistry_hub.todo_list import TodoList
def solve_problem_iteratively(problem_description, max_iterations=3):
"""AI 助手通过迭代细化来解决问题。"""
iteration_tasks = [
f"[iteration-1] 初始分析和方法设计 (pending)",
f"[iteration-2] 基于约束条件细化解决方案 (planned)",
f"[iteration-3] 优化和验证解决方案 (planned)",
f"[finalization] 记录最终解决方案 (planned)"
]
# 跟踪迭代进度
TodoList.update(iteration_tasks)
# 生成迭代报告
report = TodoList.update(iteration_tasks, format="markdown")
return report
# 在 AI 工作流中使用
problem = "为高流量 API 设计高效的缓存策略"
result = solve_problem_iteratively(problem)
print(result)
代码生成和审查工作流¶
from toolregistry_hub.todo_list import TodoList
# AI 助手管理代码生成和审查
code_workflow = [
"[understand-spec] 理解需求和规范 (done)",
"[design-architecture] 设计代码架构 (done)",
"[generate-code] 生成实现代码 (pending)",
"[add-tests] 生成单元测试 (planned)",
"[code-review] 执行代码审查和优化 (planned)",
"[documentation] 生成文档 (planned)",
"[final-validation] 根据需求验证 (planned)"
]
# 跟踪代码生成工作流
TodoList.update(code_workflow)
# 获取详细进度
progress = TodoList.update(code_workflow, format="ascii")
print("代码生成进度:")
print(progress)
研究和分析任务¶
from toolregistry_hub.todo_list import TodoList
# AI 助手进行研究
research_workflow = [
"[literature-review] 审查相关研究论文 (pending)",
"[data-analysis] 分析收集的数据 (planned)",
"[pattern-identification] 识别关键模式和趋势 (planned)",
"[hypothesis-formation] 形成研究假设 (planned)",
"[validation] 根据标准验证发现 (planned)",
"[synthesis] 综合结论 (planned)"
]
# 跟踪研究进度
TodoList.update(research_workflow)
# 生成研究状态
status = TodoList.update(research_workflow, format="markdown")
print("研究进度:")
print(status)
决策制定过程¶
from toolregistry_hub.todo_list import TodoList
# AI 助手管理决策制定工作流
decision_workflow = [
"[gather-options] 收集和记录所有选项 (done)",
"[analyze-criteria] 定义评估标准 (done)",
"[evaluate-options] 根据标准评估每个选项 (pending)",
"[risk-assessment] 评估每个选项的风险 (planned)",
"[recommendation] 生成建议 (planned)",
"[justification] 记录决策理由 (planned)"
]
# 跟踪决策过程
TodoList.update(decision_workflow)
# 获取决策报告
report = TodoList.update(decision_workflow, format="markdown")
print("决策分析报告:")
print(report)
输出格式¶
简单格式(默认)¶
适合内部工作流跟踪,无需生成输出。
Markdown 表格格式¶
tasks = [
"[step-1] 完成初始分析 (done)",
"[step-2] 设计解决方案 (pending)",
"[step-3] 实现解决方案 (planned)"
]
report = TodoList.update(tasks, format="markdown")
print(report)
输出:
| id | task | status |
| ------ | ------------ | ------- |
| step-1 | 完成初始分析 | done |
| step-2 | 设计解决方案 | pending |
| step-3 | 实现解决方案 | planned |
ASCII 表格格式¶
输出:
+--------+---------------------------+---------+
| ID | TASK | STATUS |
+--------+---------------------------+---------+
| step-1 | 完成初始分析 | done |
| step-2 | 设计解决方案 | pending |
| step-3 | 实现解决方案 | planned |
+--------+---------------------------+---------+
AI 工作流最佳实践¶
结构化任务分解¶
from toolregistry_hub.todo_list import TodoList
def decompose_complex_task(main_task, subtasks):
"""将复杂的 AI 任务分解为可管理的子任务。"""
task_list = [
f"[analyze] 分析 {main_task} (pending)",
]
for i, subtask in enumerate(subtasks, 1):
task_list.append(f"[subtask-{i}] {subtask} (planned)")
task_list.append(f"[integrate] 集成所有子任务结果 (planned)")
task_list.append(f"[validate] 验证最终输出 (planned)")
TodoList.update(task_list)
return TodoList.update(task_list, format="markdown")
# 示例:AI 助手分解复杂分析
subtasks = [
"收集和验证数据源",
"执行统计分析",
"识别关键见解",
"生成可视化"
]
result = decompose_complex_task("市场趋势分析", subtasks)
print(result)
工作流状态管理¶
from toolregistry_hub.todo_list import TodoList
def update_workflow_state(tasks, completed_task_id, next_task_id):
"""随着任务进展更新工作流状态。"""
updated_tasks = []
for task in tasks:
if f"[{completed_task_id}]" in task:
# 标记为完成
parts = task.split('] ')
content = parts[1].split(' (')[0]
updated_tasks.append(f"[{completed_task_id}] {content} (done)")
elif f"[{next_task_id}]" in task:
# 标记为进行中
parts = task.split('] ')
content = parts[1].split(' (')[0]
updated_tasks.append(f"[{next_task_id}] {content} (pending)")
else:
updated_tasks.append(task)
TodoList.update(updated_tasks)
return updated_tasks
# 跟踪工作流进度
workflow = [
"[step-1] 初始分析 (done)",
"[step-2] 设计阶段 (pending)",
"[step-3] 实现 (planned)",
"[step-4] 测试 (planned)"
]
# 移至下一步
workflow = update_workflow_state(workflow, "step-2", "step-3")
进度监控¶
from toolregistry_hub.todo_list import TodoList
def calculate_workflow_progress(tasks):
"""计算和报告工作流进度。"""
total = len(tasks)
completed = sum(1 for t in tasks if "(done)" in t)
in_progress = sum(1 for t in tasks if "(pending)" in t)
planned = sum(1 for t in tasks if "(planned)" in t)
progress_pct = (completed / total * 100) if total > 0 else 0
return {
"total": total,
"completed": completed,
"in_progress": in_progress,
"planned": planned,
"progress_percentage": progress_pct
}
# 监控工作流
tasks = [
"[task-1] 完成 (done)",
"[task-2] 进行中 (pending)",
"[task-3] 计划中 (planned)",
"[task-4] 计划中 (planned)"
]
progress = calculate_workflow_progress(tasks)
print(f"工作流进度: {progress['progress_percentage']:.1f}%")
print(f"已完成: {progress['completed']}/{progress['total']}")
重要说明¶
格式要求¶
任务条目必须遵循确切的格式:[id] description (status)
# 正确的格式
correct_tasks = [
"[analyze-data] 分析输入数据集 (pending)",
"[train-model] 训练机器学习模型 (planned)",
"[evaluate] 评估模型性能 (planned)"
]
# 错误的格式(会抛出错误)
incorrect_tasks = [
"analyze-data Analyze input dataset pending", # 缺少括号和括号
"[analyze-data] Analyze input dataset", # 缺少状态
"[analyze-data] Analyze input dataset (invalid)" # 无效状态
]
状态验证¶
仅支持四个状态值:
planned- 任务已计划但未开始pending- 任务正在执行done- 任务已成功完成cancelled- 任务已取消或放弃
错误处理¶
from toolregistry_hub.todo_list import TodoList
try:
# 无效的状态会抛出 ValueError
invalid_tasks = ["[task] 描述 (invalid_status)"]
TodoList.update(invalid_tasks)
except ValueError as e:
print(f"状态验证错误: {e}")
try:
# 格式错误会抛出 ValueError
malformed_tasks = ["task without proper format"]
TodoList.update(malformed_tasks)
except ValueError as e:
print(f"格式验证错误: {e}")
与 AI 工作流集成¶
工作流编排¶
from toolregistry_hub.todo_list import TodoList
def orchestrate_ai_workflow(user_request):
"""使用任务跟踪编排复杂的 AI 工作流。"""
# 定义工作流任务
workflow = [
"[parse-request] 解析和理解用户请求 (pending)",
"[gather-context] 收集相关上下文和信息 (planned)",
"[analyze-problem] 分析问题并确定方法 (planned)",
"[execute-solution] 执行解决方案方法 (planned)",
"[validate-output] 验证输出质量 (planned)",
"[generate-report] 生成最终报告 (planned)"
]
# 初始化工作流
TodoList.update(workflow)
# 获取初始状态
status = TodoList.update(workflow, format="markdown")
print("工作流状态:")
print(status)
return workflow
# 在 AI 助手中使用
request = "分析客户反馈并识别改进领域"
workflow = orchestrate_ai_workflow(request)
任务依赖跟踪¶
from toolregistry_hub.todo_list import TodoList
def track_task_dependencies(tasks_with_deps):
"""跟踪具有依赖关系的任务以进行顺序执行。"""
task_list = []
for task_id, description, dependencies, status in tasks_with_deps:
dep_info = f" (depends on: {', '.join(dependencies)})" if dependencies else ""
task_list.append(f"[{task_id}] {description}{dep_info} ({status})")
TodoList.update(task_list)
return TodoList.update(task_list, format="markdown")
# 示例:具有依赖关系的任务
tasks = [
("data-prep", "准备和验证数据", [], "done"),
("feature-eng", "工程特征", ["data-prep"], "pending"),
("model-train", "训练模型", ["feature-eng"], "planned"),
("evaluation", "评估结果", ["model-train"], "planned")
]
report = track_task_dependencies(tasks)
print("任务依赖报告:")
print(report)