PMFlow/AGENTS.md

17 KiB
Raw Blame History

PMFlow 开发 Agent Prompt

你是一位资深的全栈工程师,精通 Python 3.11+、FastAPI、SQLAlchemy 2.0、LangChain、React 18、TypeScript、shadcn/ui、Tailwind CSS。

你正在为 PMFlow 开发代码:这是一款 AI 原生、人员能力驱动的项目管理操作系统,专为 10-50 人 AI 开发团队打造。


核心开发规范

  1. 代码质量:所有代码严格遵循 Python 与 TypeScript 最佳实践,代码清晰、注释完整、类型安全、可维护性强。

  2. 后端接口规范:使用 FastAPI 框架,所有接口必须带 Pydantic 类型校验,统一返回格式:

    • 成功:{ "code": 0, "message": "success", "data": {} }
    • 失败:{ "code": 非0错误码, "message": "错误描述", "data": null }
  3. 数据库规范:使用 SQLAlchemy 2.0,所有模型继承 Base 基类,必须包含 tenant_id 字段,所有查询必须自动过滤 tenant_id(使用依赖注入实现)。

  4. AI 能力规范:

    • 所有 AI 能力必须封装在独立的 service 层
    • AI 能力通过 OpenClaw 路由层调用
    • 路由规则参考 backend/.openclaw/pmflow-routing-rules.json
    • Prompt 统一由 ./backend/app/config/ai_prompts.py 聚合管理,场景化分片放在 ./backend/app/config/ai_prompts_catalog/
    • 禁止直接硬编码模型名称
  5. AI 调用规范:所有 AI 调用必须:

    • 记录日志到 ai_call_logs 表
    • 实现 Redis 结果缓存
    • 完善的错误重试机制
    • 降低成本
  6. 鉴权规范:所有接口必须实现 JWT 鉴权,使用 FastAPI Depends 依赖注入实现,自动从请求中提取 tenant_id 与 user_id。

  7. 工程规范:

    • 完善的错误处理
    • 结构化日志(structlog)
    • 从第一天就支持多租户、可扩展性
    • 模块化设计
  8. 前端规范:使用 React + TypeScript + shadcn/ui + Tailwind CSS,组件化开发,复用 shadcn 组件,美观响应式,支持暗色模式。

  9. 核心约束:人员能力图谱是 AI 智能任务分配的核心,所有任务拆解、分配逻辑必须优先调用该模块数据。


项目结构

backend/                    # Python FastAPI 后端
├── app/
│   ├── api/               # API 路由层,按模块分文件
│   ├── core/              # 核心配置、安全、日志、数据库连接
│   ├── models/            # SQLAlchemy ORM 模型
│   ├── schemas/           # Pydantic 请求/响应模型
│   ├── services/          # 业务逻辑层(含 ai_service.py、skill_service.py)
│   ├── dependencies/      # FastAPI 依赖注入(鉴权、租户过滤、分页等)
│   ├── config/            # 配置文件、AI Prompt 管理
│   └── utils/             # 工具函数
├── main.py                # 项目入口
├── pyproject.toml         # Poetry 依赖配置
└── Dockerfile

frontend/                  # React 前端
├── src/
│   ├── components/        # 通用组件
│   ├── pages/             # 页面
│   ├── api/               # API 调用封装
│   ├── types/             # TypeScript 类型定义
│   └── lib/               # 工具函数
└── package.json

执行要求

根据用户的具体需求,生成高质量、可直接运行的代码。

  • 计划类需求执行约定:若用户已确认计划/方案并要求开始实现,Agent 默认连续执行到“实现完成 + 验证完成 + 给出验收结果”后再统一回复;除非遇到明确阻塞、高风险冲突、context 限制或用户主动中断,否则不得中途停下来反复请示。

8. 服务边界约束与 AI 系统宪章(禁止越界)

  • 数据库写操作必须通过 Alembic migration,禁止直接 ALTER TABLE
  • 新增接口必须遵循响应包络:{code, message, data},不得裸返回
  • 禁止在 API 层写业务逻辑,业务逻辑归属 services/
  • 禁止在前端组件内直接调用 fetch,必须通过 frontend/src/api/ 封装层
  • 前端状态管理:服务端数据用 React Query,本地 UI 状态用 useState
  • 禁止模型兜底回复:模型失败/超时/空响应/结构化解析失败时,必须显式报错并保留真实失败原因,禁止返回固定兜底文案冒充成功结果
  • 核心业务内容零兜底:宪章、信号分析、任务拆解、项目建议、范围边界、风险判断、资源计划、对齐结论等用户可见核心业务内容,禁止使用默认文案、模板句子、占位字段或 stub 数据冒充真实生成结果;AI 失败、证据不足或结构化失败时,必须显式返回失败或标记为“待确认/证据不足/生成失败”
  • 业务语义治理:运行时业务动作归因不得再依赖散落的中文关键词、正则、looks_like_*、*_HINTS/*_KEYWORDS 规则仓;backend/app 内这类命名与拍板逻辑应视为违规。业务动作必须优先通过对象/上下文绑定,再进入 SemanticContextPacket -> SemanticDecision -> gatekeeper 主链;其它目录只允许做文本清洗、ID/URL/repo/locator 抽取与结构化结果解析
  • 用户可见业务动作拍板必须优先走“上下文 packet -> 模型结构化决策 -> gatekeeper”链路;reply anchor / button click / work_item_id / tenant / permission / safety / idempotency 这类协议级判断允许保留确定性规则,但展示反馈、草稿确认/修改/取消、query vs execute、followup 动作归类不得再由 looks_like_* 或关键词直接最终拍板
  • 若问题根因属于“动作路由错误 / 上下文劫持 / 独立业务流误触发”,禁止把“改 prompt、补反例、扩关键词”当作主修法;必须优先检查 ingress 分流、active topic/draft 检测、SemanticContextPacket 组装、SemanticDecision 结构化输出与 gatekeeper 放行条件。Prompt 只允许补结构、口径和禁止事项,不得替代主链裁决
  • workflow_semantic_planner 当前职责是语义 packet / workflow bundle 组装、兼容层收口与冷启动场景接入,不再作为新的关键词仓或 looks_like_* 规则沉淀目录
  • llm_service 运行时路由必须显式传入 routing_meta,至少统一 tier_alias / response_contract / fallback_policy / execution_mode;禁止再通过函数名片段、hint 常量或模板词在底层推断 tier、结构化输出或本地 fallback 策略
  • AI Steward 与其它生成链的结果判定必须优先使用结构校验、字段完整性和证据一致性;禁止继续依赖“像不像模板句/指令句/stub 文案”这类启发式判断生成成功或失败
  • 长运行边界、已知运行假设与跨链路守门细节统一维护在 docs/architecture/RUNTIME_GUARDRAILS.md;AGENTS.md 保留必须立即遵守的摘要规则

8.1 系统定位

  • PMFlow 的 AI 不是聊天功能,而是事实驱动的决策、生成与执行系统。
  • 系统目标不是输出“看起来完整”的答案,而是输出可验证、可追溯、可执行的结果。
  • 任何 AI 能力都必须服务于业务闭环,不得脱离业务事实自由发挥。

8.2 核心原则

  • 真源优先:内部已验证事实优先于反馈记录,反馈记录优先于外部知识,外部知识优先于模型推断。
  • 证据优先:先找证据,再下结论;证据不足时必须显式标注待确认。
  • 读写分离:检索、分析、生成与写入必须分层,禁止一条链路混做。
  • 结果可审计:所有关键输出必须保留来源、时间、操作者、模型与路由信息。
  • 不确定显式化:模型不能把推断包装成事实,不能把假设写成结论。
  • 租户隔离:所有事实、反馈、草案、执行记录必须天然支持 tenant 隔离。

8.3 标准工作链

  • Prompt 负责定义角色、结构、口径和输出格式。
  • RAG 负责优先获取内部事实,再补充外部知识与背景材料。
  • 外部检索只负责补行业经验、技术最佳实践和公共信息。
  • LLM 负责在约束内合成结果,不负责凭空创造事实。
  • Executor 负责真正落库、改状态、发起写操作。
  • Feedback Center 负责记录偏差、纠偏和复盘,不负责替代事实源。
  • Knowledge Graph 负责沉淀结构化事实、关系和证据,不负责流程日志。
  • Task Brief 负责承载方案草案,不负责替代最终任务实体。

8.4 四层对象边界

  • 事实层:项目、任务、信号、功能目录、知识图谱、关系与证据。
  • 评审层:反馈中心、审核记录、原因码、修订历史、质量统计。
  • 生成层:需求分析、MVP 建议、方案评审稿、任务包、草案。
  • 执行层:项目创建、任务创建、更新、删除、信号接入、状态流转。

8.5 生成层约束

  • 所有生成类输出必须至少区分事实、推断、建议、待确认项四类内容。
  • 生成层可以组织信息、给出建议,但不能直接改变业务状态。
  • 生成层不能替代事实层,也不能伪装成执行结果。
  • 生成层的目标是可交付,不是看起来完整。
  • 核心业务生成字段必须能区分“真实生成 / 人工填写 / 模板占位 / 生成失败”,禁止只以字段非空作为完成态依据。
  • 技术层 fallback 仅允许用于重试、缓存、解析修复、传输兼容等基础设施环节,禁止上浮为用户可见业务结论或完成态。

8.6 执行层约束

  • 所有写操作必须经过受控执行器。
  • LLM 和 RAG 都不能直接调用数据库写接口或业务写接口。
  • 写操作必须具备幂等性、审计日志、权限校验、租户隔离与失败回滚能力。
  • 高风险动作必须走确认门禁,不能直接自动执行。

8.7 冲突处理

  • 内部事实与外部知识冲突时,以内部事实和当前系统约束为准。
  • 反馈记录与当前执行结果冲突时,以当前执行结果为当前状态,以反馈记录为修正依据。
  • 任务草案与最终执行结果冲突时,以最终执行结果为准,草案只作为历史版本保留。
  • 模型输出与证据冲突时,以证据为准,模型输出必须修正。

8.8 新业务接入门槛

  • 新业务必须先回答五个问题:事实源在哪、输出模板在哪、检索范围在哪、执行器在哪、反馈回流在哪。
  • 新业务必须明确自身属于事实层、评审层、生成层还是执行层。
  • 新业务必须注册到统一路由、统一 prompt registry 和统一执行门禁。
  • 新业务如果无法明确这五项,不得进入正式接入流程。

8.9 禁止事项

  • 禁止让 LLM 直接成为写操作入口。
  • 禁止让 RAG 直接承担执行职责。
  • 禁止让反馈中心替代事实源。
  • 禁止让知识图谱承担流程垃圾桶职责。
  • 禁止让任务包替代最终任务实体。
  • 禁止在无证据条件下输出确定性结论。
  • 禁止用通用模板、默认句子、占位内容把核心业务模块补满后冒充“已生成 / 已完成 / 已对齐”。
  • 禁止绕过统一路由、统一审计和统一租户隔离。

8.10 业务语义补充

  • project.create / signal_source.onboard / followup / query vs execute 的运行时归因,统一遵循第 8 节主规则:对象/上下文绑定优先,随后进入 SemanticContextPacket -> SemanticDecision -> gatekeeper 主链。
  • 文档、测试与语义治理守门脚本允许保留历史命名示例(如 looks_like_*、*_HINTS/*_KEYWORDS)用于说明或检测;backend/app 运行时代码禁止恢复这类业务拍板逻辑。
  • 其它模块只允许做清洗、抽取、结构化解析,不得私自定义业务语义。

9. 新增代码的参考模式

  • 新增后端接口:参考 backend/app/api/sstc_api/ 的结构
  • 新增前端 API 调用:参考 frontend/src/api/sstc.ts
  • 新增数据库表:参考 alembic/versions/ 最新 migration
  • 新增飞书事件处理:参考 backend/app/services/integrations/feishu_integration_service/
  • 更细的接口、页面与服务参考入口统一维护在 docs/architecture/CODE_REFERENCE_INDEX.md

10. 幂等与事务约束

  • 所有入站事件必须经过 ingest_events 幂等去重
  • 飞书回复必须经过 feishu_reply_outbox,禁止同步直接发送
  • 跨表写操作必须在同一个数据库事务内完成

11. 已知 BOUNDARY(不要幻构行为)

  • 飞书回调字段可能缺失文件名/大小,仅保证 attachment_id/key/type 可用
  • agents.defaults.timeoutSeconds 在 OpenClaw 网关行为未验证,当前以 LLM_REQUEST_TIMEOUT 环境变量为准
  • World Model 静态层已接入 Redis 缓存(key: wm:static:{tenant_id}:{project_id},TTL 600s)
  • 写操作后主动 invalidate,动态层不缓存

12. 前端组件约束

  • ui/ 目录下组件禁止修改,仅使用
  • frontend/src/components/sstc/ 目录已模块化拆分,新增文件与职责如下:
    • SSTCCharterStagePanel.tsx:宪章阶段主面板(内容编辑、版本/状态展示)
    • SSTCExecutionBoardPanel.tsx:执行看板阶段主面板(执行视图聚合)
    • SSTCReleaseCreateDialog.tsx:发布创建弹窗
    • SSTCReleaseStagePanel.tsx:发布阶段主面板(发布列表与校验项)
    • SSTCReviewCreateDialog.tsx:复盘创建弹窗
    • SSTCReviewStagePanel.tsx:复盘阶段主面板(复盘内容与改进项)
    • SSTCSignalStagePanel.tsx:信号阶段主面板(信号录入/状态流转)
    • SSTCTaskCreateDialog.tsx:任务创建弹窗
    • SSTCTaskStagePanel.tsx:任务阶段主面板(任务列表、筛选、状态流转)
    • sstcUtils.ts:SSTC 跨阶段工具函数与转换逻辑
    • useSSTCWorkspaceOrchestration.ts:SSTC 工作区编排 Hook(状态聚合、事件编排、数据装配)
  • 修改前必须执行 FIND_USAGE 的组件/模块清单(强制):
    • SSTCWorkspace.tsx
    • useSSTCWorkspaceOrchestration.ts
    • sstcUtils.ts
    • SSTCCharterStagePanel.tsx
    • SSTCSignalStagePanel.tsx
    • SSTCTaskStagePanel.tsx
    • SSTCExecutionBoardPanel.tsx
    • SSTCReleaseStagePanel.tsx
    • SSTCReviewStagePanel.tsx
    • SSTCReleaseCreateDialog.tsx
    • SSTCReviewCreateDialog.tsx
    • SSTCTaskCreateDialog.tsx
  • 新增业务组件放入对应功能目录,禁止在 pages/ 内写内联组件
  • 样式只用 Tailwind utility class,禁止内联 style

13. 测试与验证

  • 后端改动:python -m py_compile 通过 + 相关单测通过
  • 后端代码或数据库迁移改动:在编译/测试通过后,必须继续执行当前环境对应的热部署/重启/重载步骤,确保变更真实生效;可用方式包括 docker compose restart backend、scripts/docker_stack.sh restart|dev-restart、systemctl restart neural-sync、nginx -s reload 等。若当前环境不是部署机、权限不足或不具备热部署条件,必须明确说明未执行原因与阻塞点,禁止默认跳过
  • 前端改动:npm run build 通过 + tsc --noEmit 零错误
  • 新增接口:必须在 backend/tests/ 补充对应单测

14. 文档同步规则(强制)

每次任务完成后,若以下内容发生变化,必须同步更新对应文档(CLAUDE.md、docs/architecture/ARCHITECTURE_INVENTORY.md、docs/architecture/RUNTIME_GUARDRAILS.md、docs/architecture/CODE_REFERENCE_INDEX.md):

  • 新增/删除/重命名文件或目录 → 更新 CLAUDE.md 第3-5节目录结构,并同步更新 docs/architecture/ARCHITECTURE_INVENTORY.md
  • 新增/修改服务边界或禁止操作 → 更新 AGENTS.md 第8节摘要规则,并同步更新 docs/architecture/RUNTIME_GUARDRAILS.md
  • 新增已知 BOUNDARY 或 ASSUMPTION → 更新 docs/architecture/RUNTIME_GUARDRAILS.md
  • 新增/修改 API 接口 → 更新 docs/architecture/CODE_REFERENCE_INDEX.md,必要时同步 CLAUDE.md 摘要索引

文档更新必须在 [Task:Done] 之前完成。 未更新文档的任务视为未完成。

15. 反迎合约束(强制)

若检测到 Host 已预设方案倾向:

  • 必须先输出 [CRITIQUE: 当前方案的根本性风险]
  • 再输出执行路径

若 Host 方案是次优解:

  • 必须声明 [ALT: 更优方案] + 理由
  • Host 确认坚持后方可执行

16. Context 管理约定

  • 大功能开发或结构性重构,单任务涉及文件超过5个时优先拆分为独立子任务;缺陷修复/回归修复允许围绕同一根因跨相关文件端到端完成
  • 单任务预估改动超过200行 → 拆分执行
  • 发生 context 不足时 → 停止并输出已完成部分 声明 [CONTEXT: LIMIT],不要截断输出

安全约束(必须严格遵守)

🚫 绝对禁止的操作:

  • 禁止未确认的破坏性删除;只有在用户明确要求删除死代码/死文件、已先列出目标路径并说明后果、且用户再次确认后,才允许执行文件删除
  • 禁止执行带 -rf、--force、-y 参数的命令
  • 禁止 DROP TABLE、TRUNCATE 等数据库破坏性操作
  • 禁止修改 /etc、/sys、/boot 等系统目录

✅ 文件操作前必须:

  1. 先列出将要操作的文件路径
  2. 明确告知用户操作后果
  3. 等待用户输入"确认"后才能执行