“我每天要处理几十个任务,整理清单就要花半小时。”“工具换了一个又一个,还是没解决‘记了但不做’的问题。”——这是很多人在效率管理上的真实困扰。GTD(Getting Things Done)方法论提供了很好的框架:把所有待办事项从大脑中“倒出来”,然后分类、分级处理。但分类靠主观判断容易误判,优先级分配随意,容易做“舒服的事”而不是“重要的事”。如果把AI引入这个流程呢?它可以快速分析文本、识别任务特性、评估重要性并智能排序。本文将带你从零到一,用Python和OpenAI API构建一个命令行待办事项工具,实现“AI帮你排优先级”的智能任务管理。

一、为什么要在命令行里做这件事?
很多人问:为什么不做成网页或App,非要搞命令行?有三个理由。第一,命令行是“无干扰环境”——没有浏览器标签页的诱惑,没有微信消息的打断,你面对的就是纯粹的任务清单。第二,命令行天然适合与AI工具集成——你可以直接在终端里调用API,不需要额外的前端开发工作。第三,命令行的工作流最“程序员友好”——用起来顺手,改起来方便,还能轻松集成到其他自动化脚本中。
Codex CLI正是这类工具的代表——它可以在终端中根据自然语言描述生成代码、解释代码、修复Bug、重构建议,甚至可以生成shell命令来自动化操作。下面我们将借鉴这种思路,构建一个专属的AI待办事项助手。

二、环境准备与项目初始化
首先,确保你的Python版本在3.9以上。然后创建项目目录并安装依赖:
bash
mkdir ai-todo-cli
cd ai-todo-cli
pip install openai python-dotenv
这里需要说明:openai是官方Python包,用于调用OpenAI的各种模型API;python-dotenv用于从.env文件读取环境变量,避免把API密钥硬编码在代码里。
接下来,在项目根目录创建.env文件:
OPENAI_API_KEY=你的API密钥
千万注意:不要把包含真实API密钥的.env文件上传到GitHub或其他公开仓库,否则密钥会被泄露。
三、实现基础的任务管理功能
首先构建核心的任务管理类。数据用JSON文件存储,方便后续扩展。创建todo_core.py:
python
import json
import os
f rom datetime import datetime
class TodoManager:
def __init__(self, filename=”todos.json”):
self.filename = filename
self.todos = self._load()
def _load(self):
if os.path.exists(self.filename):
with open(self.filename, ‘r’, encoding=’utf-8′) as f:
return json.load(f)
return []
def _save(self):
with open(self.filename, ‘w’, encoding=’utf-8′) as f:
json.dump(self.todos, f, ensure_ascii=False, indent=2)
def add(self, text):
todo = {
”id”: len(self.todos) + 1,
”text”: text,
”status”: “pending”,
”created_at”: datetime.now().isoformat()
}
self.todos.append(todo)
self._save()
return todo
def list(self, status=None):
if status:
return [t for t in self.todos if t[“status”] == status]
return self.todos
def complete(self, todo_id):
for todo in self.todos:
if todo[“id”] == todo_id:
todo[“status”] = “done”
self._save()
return todo
return None
def delete(self, todo_id):
self.todos = [t for t in self.todos if t[“id”] != todo_id]
self._save()
这个类实现了基础的CRUD(增删改查)。数据存储在本地JSON文件中,而不是内存里,所以关了终端再打开,任务清单还在。
四、接入OpenAI实现智能分析与排序
这是整个工具的灵魂所在。AI能做什么?把一堆杂乱的任务列表,智能分类成开发类、沟通类、调研类、琐事类等;标注任务是否紧急、是否重要;用爱森豪威尔矩阵(紧急-重要矩阵)自动划分优先级。简单来说,AI会告诉你:先做哪件事,哪件事可以往后放。
创建ai_planner.py:
python
import openai
import os
f rom dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv(“OPENAI_API_KEY”)
def classify_and_prioritize(tasks_text):
prompt = f”””
你是一个专业的任务管理助手。请分析以下待办事项列表,为每个任务:
1. 分类(开发类/沟通类/调研类/琐事类/学习类)
2. 标注是否紧急(是/否)
3. 标注是否重要(是/否)
4. 给出建议处理顺序(数字越小越优先)
最后输出优先级排序后的完整清单。
任务列表:
{tasks_text}
请以JSON格式返回结果,结构如下:
[
{{“task”: “…”, “category”: “…”, “urgent”: true/false, “important”: true/false, “order”: 1}},
…
]
”””
response = openai.chat.completions.create(
model=”gpt-3.5-turbo”,
messages=[{“role”: “user”, “content”: prompt}],
temperature=0.3
)
return response.choices[0].message.content
这里的关键是提示词(Prompt)设计。通过明确指定输出格式(JSON),我们可以直接解析AI的返回结果,避免处理乱七八糟的自然语言回复。temperature=0.3让AI的回答更确定、更一致,减少“胡说八道”的概率。
五、构建命令行交互界面
最后,把所有功能整合到一个命令行入口。创建main.py:
python
import sys
import json
f rom todo_core import TodoManager
f rom ai_planner import classify_and_prioritize
def main():
manager = TodoManager()
if len(sys.argv)
print(“用法:”)
print(” python main.py add “)
print(” python main.py list”)
print(” python main.py done “)
print(” python main.py delete “)
print(” python main.py plan ← AI智能排序”)
return
cmd = sys.argv[1]
if cmd == “add”:
text = ” “.join(sys.argv[2:])
todo = manager.add(text)
print(f”✓ 已添加: {todo[‘text’]} (ID: {todo[‘id’]})”)
elif cmd == “list”:
todos = manager.list()
print(“n待办事项:”)
for todo in todos:
status = “✓” if todo[“status”] == “done” else “○”
print(f”[{status}] #{todo[‘id’]} {todo[‘text’]}”)
elif cmd == “done”:
todo_id = int(sys.argv[2])
updated = manager.complete(todo_id)
if updated:
print(f”✓ 已完成: {updated[‘text’]}”)
else:
print(“未找到该任务”)
elif cmd == “delete”:
todo_id = int(sys.argv[2])
manager.delete(todo_id)
print(f”✓ 已删除 ID: {todo_id}”)
elif cmd == “plan”:
pending = [t for t in manager.list() if t[“status”] == “pending”]
if not pending:
print(“没有待办任务”)
return
tasks_text = “n”.join([f”- {t[‘text’]}” for t in pending])
result = classify_and_prioritize(tasks_text)
print(“nAI智能规划结果:”)
print(json.dumps(json.loads(result), indent=2, ensure_ascii=False))
else:
print(f”未知命令: {cmd}”)
if __name__ == “__main__”:
main()
六、测试与使用示例
添加几个任务试试:
bash
python main.py add “给后端开接口文档”
python main.py add “下午开需求评审会”
python main.py add “提交项目日报”
python main.py add “看AI技术大会直播”
python main.py add “优化登录模块代码”
然后运行AI智能规划:
bash
python main.py plan
AI会返回一个排好序的清单,告诉你哪个任务最紧急、最重要,应该先做哪个。参考示例输出:
json
[
{“task”: “给后端开接口文档”, “category”: “开发类”, “urgent”: true, “important”: true, “order”: 1},
{“task”: “下午开需求评审会”, “category”: “会议”, “urgent”: true, “important”: true, “order”: 2},
{“task”: “优化登录模块代码”, “category”: “开发类”, “urgent”: false, “important”: true, “order”: 3},
{“task”: “提交项目日报”, “category”: “汇报类”, “urgent”: false, “important”: true, “order”: 4},
{“task”: “看AI技术大会直播”, “category”: “学习类”, “urgent”: false, “important”: false, “order”: 5}
]
常见问答(Q&A)
Q1:这个工具必须联网才能用吗?
是的,因为需要调用OpenAI的API。如果你希望完全离线运行,可以考虑使用本地部署的模型(如Ollama + Llama),但需要调整代码中的API调用部分。
Q2:API调用会不会很贵?
GPT-3.5-turbo的价格非常便宜,处理几十个任务的成本可以忽略不计。如果每天用几次,一个月可能花不到1块钱。
Q3:AI排序的结果一定准确吗?
不一定。AI基于“通用最优实践”来判断,但你的个人情况可能特殊。如果你对排序结果有异议,可以通过修改prompt来引导AI(比如加上“我当前的项目重点是XXX”)。

Q4:数据是存在本地的,AI会不会把我的任务内容上传到云端?
会。当你运行plan命令时,任务文本会被发送到OpenAI的服务器进行推理。如果你处理的是敏感数据(如商业机密),建议不要使用这个功能,或者换用本地模型。
Q5:可以用其他模型代替GPT吗?
可以。OpenAI Python包支持多种模型,你也可以换成Claude、Gemini等,只要修改model参数就行。甚至可以用兼容OpenAI格式的第三方网关。
Q6:这个工具能和其他软件集成吗?
可以。你可以把任务数据导出,通过脚本同步到Notion、Todoist等工具。也可以扩展AI能力,让它自动把总结报告发邮件或写入Google Docs。

当你理清了AI编程的完整路径,却因时间紧张、API集成经验不足或需要更专业的AI Agent开发支持,而无法快速将这套方案落地时,不必独自从零啃文档。途傲科技网汇聚了百万级专业技术服务商,无论你需要的是精通Python+OpenAI的AI应用开发工程师、能帮你搭建完整任务管理系统的全栈开发者,还是擅长CLI工具设计的软件架构师,这里都能快速找到对的人。你可以直接在任务大厅发布你的AI应用开发需求,清晰描述功能目标和交付标准,等待各路技术大牛带案例来投标;也可以走进人才大厅,根据服务商的技术标签、项目经验和客户评价,筛选出最契合你需求的合作伙伴;若你还在纠结技术选型,服务大厅的海量商铺案例库就是最好的参考,看看优秀的AI工具是如何从想法到成品的。通过威客攻略学习高效沟通与需求拆解的技巧,借助V客优享服务获得优先推荐和专业诊断,途傲科技正在用平台的力量改变技术协作的方式。别再让“没时间写代码”成为你的效率瓶颈,立即登录途傲科技网,让专业的人帮你把AI助手变成现实。
