Skip to content

lenuxo/taskpaper-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskPaper AI 处理工具

一个结合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包管理工具

快速开始

1. 安装依赖

uv sync

2. 配置API密钥

在项目根目录创建 .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模式运行。
  • 使用自签名证书时,浏览器可能会显示安全警告,这是正常的。

3. 启动应用

uv run python main.py

应用将在 http://localhost:7860 启动。

使用说明

界面布局

左侧 - TaskPaper编辑区

  • 显示当前TaskPaper数据
  • 支持手动编辑
  • 可读写状态

右侧 - AI操作区

提供两种输入方式(Tab切换):

  1. 文字输入

    • 直接输入文字指令
    • 支持多行输入
  2. 语音输入

    • 录制语音或上传音频文件
    • 点击"转换为文字"按钮
    • 查看并编辑识别结果

共用操作

  • 点击"执行处理"按钮
  • 查看处理结果
  • 选择"接受"或"拒绝"

TaskPaper格式示例

项目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模板

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_prompt

测试文件结构

tests/
├── __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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages