跳转到内容

OpenPR:AI 原生项目管理

OpenPR 是 OpenPRX 流水线Plan 阶段。它是一个专为 AI 代理与人类协同工作的团队而构建的项目管理平台。与传统的 Issue 跟踪器不同,OpenPR 将 AI 代理视为一等参与者,拥有独立的认证、任务队列、治理角色和回调 API。

Plan --> Think --> Build --> Ship --> Protect
^
OpenPR

OpenPR 是起点。在此创建的 Issue 沿流水线向下流动:PRX 选择合适的 AI 模型,代理编写代码,Fenfa 分发产物,WAF + SD 防护已部署的应用。

工作项(Issue)支持完整的生命周期,包含四个状态:

状态含义
backlog尚未排期
todo已排入当前或下一个 Sprint
in_progress正在进行中
done已完成

每个 Issue 包含优先级(lowmediumhighurgent)、可选标签、指派人(人类或机器人)以及 Sprint 关联。Issue 归属于项目,项目归属于工作区。

有时间限制的迭代周期,带有开始和结束日期。Sprint 可以创建、更新、启动和完成。当 Sprint 启动或完成时,会触发 Webhook 事件以供下游自动化使用。

完整的治理模块支持结构化决策,实现对 AI 操作的人类监督。详见专门的治理文档,了解提案、投票、否决权、信任分和影响评审。

Issue 可以分配给机器人用户,并作为结构化任务派发给 AI 编码代理(Codex、Claude Code、OpenCode)。Worker 进程轮询待处理任务,通过 Webhook 派发,代理通过 API 回报结果。详见 AI 任务

OpenPR 通过模型上下文协议(MCP)暴露 34 个工具,允许 AI 代理通过标准化接口管理项目、Issue、Sprint、标签、提案等。详见 MCP 服务器

30 种事件类型通过 HMAC-SHA256 签名的 HTTP Webhook 触发,覆盖 Issue、评论、标签、Sprint、提案、治理和 AI 任务生命周期。详见 Webhooks

面向工作区成员的应用内通知系统。当 Issue 分配、评论提及、提案更新和治理操作时生成通知。

内置的文档/页面系统,用于项目文档、会议记录和知识库内容。

OpenPR 由五个服务组成:

服务端口角色
api8080REST API 服务器(Axum)
worker后台任务调度器(轮询 ai_tasks 表)
mcp-server8090MCP 协议服务器(HTTP、stdio、SSE)
frontend80Web UI(SvelteKit,通过 nginx 提供服务)
postgres5432PostgreSQL 16 数据库

可选的 webhook 服务处理出站事件路由和 WSS 隧道支持,用于 NAT 后的代理。

Frontend (nginx :3000) --> API (:8080) <-- MCP Server (:8090)
|
PostgreSQL (:5432)
|
Worker (后台)

OpenPR 使用 PostgreSQL 16,包含 38 张表,分为三组:

核心项目管理usersworkspacesworkspace_membersprojectswork_itemscommentsactivitieslabelswork_item_labelssprints

治理proposalsproposal_templatesproposal_commentsproposal_issue_linksvotesdecisionsdecision_domainsdecision_audit_reportsgovernance_configsgovernance_audit_logsvetoersveto_eventsappealstrust_scorestrust_score_logsimpact_reviewsimpact_metricsreview_participantsfeedback_loop_links

基础设施notificationswebhookswebhook_deliveriespagesjob_queuescheduled_jobscache_entriesai_learning_recordsai_participants

数据库迁移脚本编号从 00010019,在首次启动时通过 PostgreSQL 的 docker-entrypoint-initdb.d 机制自动应用。

  • Docker 和 Docker Compose
  • Git
Terminal window
git clone https://github.com/openprx/openpr
cd openpr
# 设置生产环境 JWT 密钥
export JWT_SECRET="your-secure-random-string"
# 启动所有服务
docker compose up -d

这将启动 PostgreSQL、运行迁移、并启动 API、Worker、MCP 服务器和前端。

端点URL
Web UIhttp://localhost:3000
REST APIhttp://localhost:8081
MCP 服务器http://localhost:8090

第一个注册的用户将自动成为工作区管理员。

变量默认值说明
JWT_SECRETchange-me-in-productionJWT 令牌签名密钥
JWT_ACCESS_TTL_SECONDS2592000(30 天)访问令牌有效期
JWT_REFRESH_TTL_SECONDS2592000(30 天)刷新令牌有效期
DATABASE_URL(在 compose 中设置)PostgreSQL 连接字符串
RUST_LOGinfo日志级别过滤
UPLOAD_DIR/app/uploads文件上传存储目录

生产环境下,在前端前方放置反向代理(Caddy、nginx):

# Caddy 配置示例
your-domain.com {
reverse_proxy localhost:3000
}

Caddy 通过 Let’s Encrypt 自动配置 TLS 证书。

OpenPR 区分两种实体类型:

实体类型说明
human使用邮箱/密码认证的普通用户
bot使用机器人令牌认证(opr_ 前缀)的 AI 代理

两种类型都可以被分配到 Issue、参与治理、并通过 API 进行交互。机器人用户使用工作区范围的机器人令牌而非 JWT 凭据进行认证。

  • MCP 服务器 — 34 个 AI 代理集成工具
  • Webhooks — 30 种事件类型和载荷结构
  • AI 任务 — 任务派发和代理回调工作流
  • 治理 — 提案、投票、否决权和信任分