一个结合AI能力处理TaskPaper数据的Web工具,帮助用户通过自然语言指令来管理和操作TaskPaper格式的任务列表。
- 📝 TaskPaper编辑器: 左侧大尺寸文本框,支持显示、编辑TaskPaper数据
- 🤖 AI智能处理: 通过自然语言指令快速处理TaskPaper任务列表
- 🎤 语音输入: 支持录音和上传音频文件,自动转换为文字指令
- ✅ 结果确认: 所有AI处理结果都需要用户确认后才生效
- 🎨 简洁界面: 基于Gradio的现代化Web界面
- Python 3.12+
- Gradio 6.2+ - Web界面框架
- OpenAI SDK - Kimi API调用
- 智谱ASR API - 语音转文字服务
- Requests - HTTP客户端
- UV - Python包管理工具
uv sync在项目根目录创建 .env 文件,添加必要的API密钥:
# Kimi API(必需,用于AI处理)
KIMI_API_KEY=your_api_key_here
# 智谱ASR API(可选,用于语音输入功能)
ZAI_API_KEY=your_zai_api_key_here
# SSL/TLS配置(可选,用于启用HTTPS)
# SSL_KEYFILE=path/to/key.pem
# SSL_CERTFILE=path/to/cert.pem提示:
- 如果不配置
ZAI_API_KEY,语音输入功能将不可用,但文字输入功能仍可正常使用。- 如果配置了SSL证书,应用将以HTTPS模式运行;否则以HTTP模式运行。
- 使用自签名证书时,浏览器可能会显示安全警告,这是正常的。
uv run python main.py应用将在 http://localhost:7860 启动。
左侧 - TaskPaper编辑区
- 显示当前TaskPaper数据
- 支持手动编辑
- 可读写状态
右侧 - AI操作区
提供两种输入方式(Tab切换):
-
文字输入
- 直接输入文字指令
- 支持多行输入
-
语音输入
- 录制语音或上传音频文件
- 点击"转换为文字"按钮
- 查看并编辑识别结果
共用操作:
- 点击"执行处理"按钮
- 查看处理结果
- 选择"接受"或"拒绝"
项目1:
- 完成需求文档 @工作 @重要
- 联系客户确认细节 @待办
- 准备会议材料
项目2:
- 代码审查 @技术
- 修复Bug @紧急
- "将所有标记为 @紧急 的任务移到最前面"
- "删除所有已完成的任务"
- "给没有标签的任务添加 @待办 标签"
- "按项目分组整理任务列表"
taskpaper-demo/
├── main.py # 应用入口
├── .env # 环境变量配置
├── .env.example # 环境变量配置示例
├── pyproject.toml # 项目依赖
├── prompts/
│ ├── system.txt # 系统提示词
│ └── user.txt # 用户提示词模板
├── src/
│ ├── prompt.py # Prompt加载和组装
│ ├── llm_client.py # Kimi API封装
│ ├── asr_client.py # 智谱ASR API封装
│ └── ui.py # Gradio UI逻辑
├── tests/
│ ├── test_prompt.py # Prompt模块测试
│ ├── test_llm_client.py # LLM客户端测试
│ └── test_asr_client.py # ASR客户端测试
└── docs/
├── PRD.md # 产品需求文档
└── PRD-语音输入功能.md # 语音输入功能PRD
Prompt模板存放在 prompts/ 目录下,分为两个文件:
prompts/system.txt- 系统提示词(定义AI角色和规则)prompts/user.txt- 用户提示词模板(包含数据和处理指令)
user.txt 模板支持三个占位符:
{context}- 动态上下文信息(当前时间、时区等){existing_taskpaper}- 用户当前的TaskPaper数据{user_instruction}- 用户的处理指令
- 遵循 PEP 8 规范
- 模块化设计,功能解耦
- 完整的代码注释
项目使用 pytest 作为测试框架。
# 运行所有测试
uv run pytest
# 运行测试并显示详细输出
uv run pytest -v
# 运行测试并显示代码覆盖率
uv run pytest --cov=src --cov-report=term-missing
# 运行特定测试文件
uv run pytest tests/test_prompt.py
# 运行特定测试类或方法
uv run pytest tests/test_prompt.py::TestPromptManager::test_build_prompttests/
├── __init__.py # 测试模块初始化
├── conftest.py # pytest配置和共享fixtures
├── test_prompt.py # Prompt模块测试
└── test_llm_client.py # LLM客户端测试
- 确保已设置有效的
KIMI_API_KEY(必需) - 如需使用语音输入,请设置
ZAI_API_KEY(可选) - TaskPaper数据为纯文本格式,体积不宜过大
- API调用需要网络连接
- 语音输入支持格式:MP3, WAV, M4A, OGG, FLAC
MIT License