个人项目经理(PM)
基于Python的个人项目经理,专为跟踪工作任务而设计,特别是为在NVIDIA从事自动驾驶汽车项目的深度学习工程师而设计。
特性
- 任务管理:跟踪DAT票证、跨团队依赖关系、项目和培训运行
- 周刊:通过自动周报和季度总结跟踪每日进度
- CLI接口:易于使用的命令行界面,格式丰富
- Markdown存储:存储在人类可读的markdown文件中的任务和日志
- 灵活排班:配置每个任务的检查频率(每日、每周、每两周、每月)
- 时间线通知:为任务设置特定的通知时间(例如,“在34小时内通知我”)
- 季度跟踪:自动汇总季度绩效报告的每周摘要
- 多个接口:CLI、markdown编辑、MCP服务器和Web UI
- MCP服务器:通过模型上下文协议与AI代理(Claude Desktop、Cursor等)集成
- Web用户界面:使用Streamlit的基于浏览器的周刊只读视图
- 后台服务:Web UI的系统集成(CLI检查即将到来)
- 电子邮件通知:收到逾期任务和提醒的通知(未来功能)
安装
先决条件
- Python 3.10或更高版本
- 点
从源代码安装
- 克隆或导航到pm应用程序目录:
cd pm-app- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Linux/Mac
# or
venv\Scripts\activate # On Windows- 安装软件包:
pip install -e .或者直接安装依赖项:
pip install -r requirements.txt- 设置配置(可选):
mkdir -p ~/.config/pm
cp config.yaml.example ~/.config/pm/config.yaml
# Edit ~/.config/pm/config.yaml with your settings如果你不创建配置文件,应用程序将使用默认值并将数据存储在 ~/pm-data.
用法
基本命令
添加任务
# Simple task
pm add "Review DAT-12345 labeling status"
# DAT ticket with weekly check
pm add "Check DAT-12345" --type dat_ticket --check-freq weekly
# Cross-team dependency with ETA
pm add "Wait for perception team API" --type cross_team --eta "2026-01-20" --priority high
# Training run with notification
pm add "WaitNet training v2.3" --type training_run --notify "2026-01-12 14:00"
# With description and tags
pm add "Update model architecture" --desc "Implement new attention mechanism" --tags "model,research" --priority high列出任务
# List all active tasks
pm list
# List by status
pm list --status in_progress
# List by type
pm list --type dat_ticket
# List by priority
pm list --priority high
# Search tasks
pm list --search "labeling"
# Include done tasks
pm list --done查看任务详细信息
pm show task-abc123更新任务
# Update status
pm update task-abc123 --status in_progress
# Update ETA
pm update task-abc123 --eta "2026-01-25"
# Update multiple fields
pm update task-abc123 --priority high --status blocked为任务添加注释
pm note task-abc123 "Contacted team, waiting for response"
pm note task-abc123 "Team confirmed ETA is next week"将任务标记为已完成
pm done task-abc123删除任务
pm delete task-abc123
# Skip confirmation
pm delete task-abc123 --yes查看状态摘要
pm status检查需要注意的任务
pm check任务类型
- 日期票:需要定期状态检查的DAT(数据标签)票证
- 横梁:依赖于其他团队的任务
- 项目:项目里程碑和交付成果
- 训练_轮:DNN培训运行,并附有完成通知
- 通用:一般任务
任务属性
每个任务都有:
- ID:自动生成的唯一标识符
- 标题:简短描述
- 描述:详细信息
- 类型:任务类别
- 状态:todo,正在进行中,等待中,已阻止,已完成
- 优先级:高、中、低
- 检查频率:多久检查一次(每天、每周、每两周、每月)
- 预计到达时间:预计完成日期/时间
- 通知时间:具体通知时间
- 标签:组织的自定义标签
- 依赖项:这取决于其他任务ID
- 备注:带时间戳的笔记和更新
Markdown文件编辑
任务作为markdown文件存储在数据目录中(默认值: ~/pm-data/tasks/).您可以直接编辑这些文件,更改将反映在CLI中。
示例任务文件(task-abc123.md):
---
id: task-abc123
title: Check DAT-12345 labeling status
type: dat_ticket
status: in_progress
priority: medium
created_at: 2026-01-10T10:00:00
updated_at: 2026-01-10T15:30:00
eta: 2026-01-17T17:00:00
check_frequency: weekly
last_checked: 2026-01-10T10:00:00
dependencies: []
tags:
- dat
- labeling
---
## Description
Check status of DAT-12345 for pedestrian detection labeling
## Notes
- 2026-01-10 10:00: Created ticket, waiting for team response
- 2026-01-10 15:30: Team confirmed, ETA next week周报工作流程
PM应用程序包括一个强大的日志系统,用于跟踪每日进度和生成季度摘要。
快速开始
# Morning: Start your day
pm journal-start
# or: pm js
# Open weekly journal in vim/nvim
pm journal
# or: pm j
# End of day: Sync and review
pm journal-end
# or: pm je
# Friday: Generate weekly summary
pm journal-summary
# or: pm jws
# Quarterly review
pm quarterly 2026 1 # Q1 2026 summary运作原理
- 周刊:每周一个降价文件(
2026-W02.md)每天都有部分 - 每日章节:每天都有计划、进行中、已完成、已阻止和注释部分
- 复选框同步:选中日志中的复选框以标记已完成的任务,与任务管理器自动同步
- 每周总结:自动生成的摘要,显示成就和阻碍者
- 季度报告:汇总每周绩效跟踪总结
日常工作流程示例
上午(8:00 AM):
pm js # Start day - auto-populates today's tasks
pm j # Open journal to review and add notes白天:
- 在日志或CLI中工作
- 完成任务时勾选复选框
- 添加上下文注释
一天结束(下午6:00):
pm je # End day - syncs checkboxes with tasks星期五EOD:
pm jws # Generate weekly summary有关详细的日记账文档,请参阅 期刊.md.
MCP服务器
PM应用程序包括一个MCP(模型上下文协议)服务器,该服务器向Claude等AI代理公开任务管理和日志操作。
启动MCP服务器
pm mcp-server配置AI客户端
克劳德桌面 (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"pm": {
"command": "/path/to/venv/bin/pm",
"args": ["mcp-server"],
"cwd": "/path/to/pm-app"
}
}
}光标IDE (~/.cursor/mcp.json):
{
"mcpServers": {
"PM App": {
"command": "/path/to/venv/bin/pm",
"args": ["mcp-server"],
"cwd": "/path/to/pm-app"
}
}
}MCP服务器为任务管理、查询和日志操作提供了18个工具。有关详细文档,请参阅 MCP.md.
Web用户界面
一个只读的Streamlit web界面,用于查看周报,无需打开markdown文件或运行CLI命令。
启动Web UI
# Start in foreground (opens browser)
pm web
# Start on custom port
pm web -p 8080
# Start without opening browser
pm web --no-browser
# Start in background (daemon mode)
pm web -b
# Check if running
pm web-status
# Stop background server
pm web-stop作为系统服务运行
对于持久访问,请作为systemd服务安装:
# Copy service file
sudo cp service/pm-web.service /etc/systemd/system/pm-web@.service
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable pm-web@$USER
sudo systemctl start pm-web@$USER
# Check status
sudo systemctl status pm-web@$USER访问Web UI: http://:8501
特性
- 📅 带导航按钮的周选择器
- 📋 计划/完成/阻止任务的每日部分
- 📈 完成统计和进度跟踪
- 🔄 自动刷新按钮
- 🌙 暗模式优化
配置
配置文件位置: ~/.config/pm/config.yaml
看 config.yaml.example 查看包含所有选项的完整示例。
关键设置:
data_dir:存储任务文件的位置(默认值:~/pm-data)storage_mode:multi_file(每个任务一个文件)或single_file(全部在一个文件中)- 电子邮件通知设置(用于未来功能)
- 计划程序设置(用于未来的后台服务)
工作流示例
管理DAT票
# Add DAT ticket with weekly check
pm add "Review DAT-45678 annotations" --type dat_ticket --check-freq weekly
# Check which DAT tickets need review
pm list --type dat_ticket
# Add status update
pm note task-xyz789 "50% complete, on track for Monday delivery"
# Mark as done when complete
pm done task-xyz789跟踪跨团队依赖关系
# Add dependency task
pm add "Wait for sensor team calibration data" --type cross_team --status waiting
# Regular updates
pm note task-abc456 "Slacked @sensor-team, they said Wednesday"
pm update task-abc456 --eta "2026-01-15"
# When unblocked
pm update task-abc456 --status in_progress训练运行管理
# Training that will finish in 34 hours
pm add "WaitNet v3 QAT training" --type training_run --notify "2026-01-12 10:00"
# Add notes during training
pm note task-train99 "Loss converging well, ETA still on track"
# When complete, check eval
pm add "Check WaitNet v3 eval results" --desc "Review KPIs from training task-train99"项目跟踪
# Add project milestone
pm add "Complete Q1 model release" --type project --eta "2026-03-31" --priority high
# Track sub-tasks
pm add "Merge detection improvements" --tags "q1-release" --eta "2026-02-15"
pm add "Run benchmark suite" --tags "q1-release" --eta "2026-02-28"
pm add "Write release notes" --tags "q1-release" --eta "2026-03-28"
# Check progress
pm list --tags "q1-release"数据目录结构
~/pm-data/
└── tasks/
├── task-abc123.md
├── task-def456.md
└── task-ghi789.md未来功能
马上就来:
- 后台服务:用于自动检查和通知的系统化服务
- 电子邮件通知:自动电子邮件摘要和提醒
- Slack集成:向Slack频道发送更新
- JIRA/GitHub集成:与外部票务系统同步
- 分析:任务完成率、时间跟踪、报告
发展
运行测试
该项目具有涵盖所有核心功能的全面单元测试(178次测试,100%通过)。
# Run all tests
pytest tests/
# Run with verbose output
pytest tests/ -v
# Run specific test modules
pytest tests/test_task.py # Core task tests
pytest tests/mcp/ # MCP server tests (80 tests)
pytest tests/web/ # Web UI tests (14 tests)
# Run tests in quiet mode
pytest tests/ -q看 测试.md 获取详细的测试文档。
代码格式化
black pm/
ruff check pm/项目结构
pm-app/
├── pm/
│ ├── core/ # Core business logic
│ │ ├── task.py # Task data model
│ │ ├── storage.py # Markdown I/O
│ │ ├── manager.py # Task CRUD operations
│ │ ├── journal.py # Weekly journal model
│ │ └── journal_manager.py # Journal operations
│ ├── cli/ # CLI interface
│ │ └── commands.py # CLI commands
│ ├── mcp/ # MCP server
│ │ ├── server.py # MCP server setup
│ │ ├── serializers.py # JSON serialization
│ │ └── tools/ # MCP tools (18 tools)
│ ├── web/ # Web UI
│ │ ├── app.py # Streamlit app
│ │ ├── data_loader.py # Data access layer
│ │ └── components/ # UI components
│ └── utils/ # Utilities
│ └── config.py # Configuration
├── tests/ # Unit tests (178 tests)
│ ├── conftest.py # Test fixtures
│ ├── test_*.py # Core tests (84 tests)
│ ├── mcp/ # MCP tests (80 tests)
│ └── web/ # Web UI tests (14 tests)
├── service/ # Systemd service files
│ └── pm-web.service # Web UI service
├── .streamlit/ # Streamlit configuration
│ └── config.toml # Theme settings
├── pyproject.toml # Package configuration
├── README.md
├── MCP.md # MCP documentation
├── JOURNAL.md # Journal documentation
└── TESTING.md # Testing documentation故障排除
任务未显示
- 检查数据目录:
ls ~/pm-data/tasks/ - 验证配置:
cat ~/.config/pm/config.yaml - 尝试重新加载:只需运行任何
pm命令,它会自动重新加载
配置不起作用
- 确保配置文件位于
~/.config/pm/config.yaml - 检查YAML语法(缩进很重要!)
- 使用
config.yaml.example作为参考
日期解析问题
- 使用ISO格式:
2026-01-20或2026-01-20 14:30 - 自然语言同样适用:
next friday,tomorrow 2pm
许可证
MIT许可证
贡献
这是一个个人项目,但欢迎提出建议和意见!
支持
有关问题或疑问,请联系维护人员或在存储库中打开问题。
