From 69a0b50f76986a3aaed956c0f824efd29ee83d04 Mon Sep 17 00:00:00 2001 From: ymq Date: Sat, 22 Aug 2026 18:51:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20SDL=5FROLES=20=E5=90=84=E8=A7=92?= =?UTF-8?q?=E8=89=B2=20system=5Fprompt=20=E7=B2=BE=E7=AE=80=E4=B8=BA?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=AE=9A=E4=BD=8D+=E5=BC=95=E5=AF=BC?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E6=8A=80=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 不再写死职责/流程/产出路径/审核方式/部署方案(这些都在角色技能 role/SKILL.md 和规范技能里,通过技能目录注入+load_skill 加载)。system_prompt 只保留: '你是XX工程师。先 load_skill 加载 role 技能,按其中的职责与应遵守规范执行任务。' 同时删除了 deploy_test/deploy_prod 写死的 Dockerfile/docker-compose 错误部署方案。 --- pipeline_service/sdlc_ability.py | 95 ++++---------------------------- 1 file changed, 11 insertions(+), 84 deletions(-) diff --git a/pipeline_service/sdlc_ability.py b/pipeline_service/sdlc_ability.py index 71b937b..0552e6b 100644 --- a/pipeline_service/sdlc_ability.py +++ b/pipeline_service/sdlc_ability.py @@ -269,122 +269,49 @@ SDL_ROLES = [ name="agent.requirement", description="需求分析师", aliases=["requirements", "requirement_analysis"], - system_prompt="""你是需求分析师。按 SDLC 仓库标准产出文档。 - -产出路径(项目过程仓库 repos/__PROJECT_NAME___pc/ 下): - - docs/00-requirement/requirement-spec.md - - apps/<应用名>.md(应用 = 部署单元,至少一个,含端口/环境) -内容: 项目概述、用户角色及权限、功能列表(每个功能:输入/处理/输出/验收标准)、非功能需求、业务流程。 -注意: 需求阶段只识别「应用」(部署单元),**不划分模块**——模块划分是架构决策,由 design 阶段的设计师完成。 -部署环境需求(项目开始阶段必须明确,含测试环境与生产环境): - - 测试环境: 资源规格(CPU/内存/磁盘)、依赖服务(DB/缓存/中间件)、端口、环境变量 - - 生产环境: 资源规格、高可用要求、备份策略、域名/证书、监控告警 - - 若需求未明确部署环境信息,在需求文档中标注「待明确」,并列出需向用户确认的问题清单。 -完成后用 result 输出文档、files 列出文件路径(git 提交由 PM 审核通过后系统统一执行,无需你提交)。""", + system_prompt="""你是需求分析师。先 load_skill 加载 role 技能,按其中的职责与应遵守规范执行任务。""", next_role="agent.design", ), RoleSpec( name="agent.design", description="系统设计师", aliases=["designer", "ui", "ux"], - system_prompt="""你是系统设计师。按 SDLC 仓库标准产出文档(结构参考 sdlc-repo-standard 技能;模块设计用 templates/module-design.md 模板,模块技能用 templates/module-skill.md 模板,保证 develop 读到一致结构)。 - -应用级设计(产出到项目过程仓库 repos/__PROJECT_NAME___pc/docs/01-design/): - - architecture.md: 系统架构、技术选型理由、模块划分、模块间依赖关系、开发顺序 - - ui-design.md: 视觉风格(配色/字体/间距)、主页面布局、用户交互模式、弹窗/表单规范 - -模块级设计(每个模块自包含、可复用,产出到 repos/__PROJECT_NAME___pc/modules/): - - modules/<模块名>.md: 模块功能、仓库目录(本地 git 仓库 repos/<模块名>,无真实远端)、技术栈、依赖、开发顺序 - - modules/<模块名>/design.md: 该模块的数据设计(表结构DDL) + CRUD 定义 + 处理逻辑(接口) - - modules/<模块名>/skill/SKILL.md: 该模块技能文档 - 数据、CRUD、处理逻辑、skills 都属于模块本身,不放在应用级 design——这样模块可整体复用。 - -模块划分遵循: 概念相近的功能组合成一个独立模块,每个模块独立仓库。apppublic、sqlor、ahserver、accounting、appbase、rbac 等基础模块已存在、可直接引用,**不必列为待开发模块**。后续 PM 按你划分好的模块 + 依赖关系派发 develop 任务。 -完成后用 result 输出文档、files 列出文件路径(git 提交由 PM 审核通过后系统统一执行,无需你提交)。""", + system_prompt="""你是系统设计师。先 load_skill 加载 role 技能,按其中的职责与应遵守规范执行任务。""", next_role="agent.develop", ), RoleSpec( name="agent.develop", description="开发工程师", aliases=["developer", "dev", "development", "coding"], - system_prompt="""你是开发工程师。按模块化原则开发:概念相近的功能组合成一个独立模块,每个模块独立仓库。源码写入模块独立仓库 repos/<模块名>/,不在项目过程仓库。 - -基础模块复用(必读): apppublic、sqlor、ahserver、accounting、appbase、rbac 等基础模块已存在、可直接引用,**不必再开发**——需要权限走 rbac、需要数据访问走 sqlor、需要 HTTP 框架走 ahserver、需要配置走 appbase、需要工具函数走 apppublic。 - -准备工作: - 1. read_file 读 repos/__PROJECT_NAME___pc/docs/01-design/ 下架构与 UI 设计文档 - 2. read_file 读 repos/__PROJECT_NAME___pc/modules/<模块名>.md 获取模块仓库 URL,读 repos/__PROJECT_NAME___pc/modules/<模块名>/design.md 获取数据设计/CRUD/处理逻辑 - 3. 模块仓库是本地 git 仓库 repos/<模块名>/(设计里的仓库URL是规划占位地址、无真实远端,不要 git_clone) -开发流程: - 4. write_file 写代码到模块仓库目录 - 5. run_shell 编译/运行验证 - 6. git_commit_push 提交模块仓库代码(本地提交,无远程只 commit 不 push,非 git 目录自动 init;这是 QC 核验「实际产出」的硬证据,务必执行) - 7. write_file 更新 repos/__PROJECT_NAME___pc/modules/<模块名>.md 状态为已完成 - 8. write_file 写 repos/__PROJECT_NAME___pc/docs/02-develop/dev-notes.md 记录开发内容 - 9. deliver 交付,files 列出所有产出文件路径 -PM审核: list_files/read_file 检查代码文件实际产出 + 模块仓库本地 git log 有提交。""", + system_prompt="""你是开发工程师。先 load_skill 加载 role 技能,按其中的职责与应遵守规范执行任务。""", next_role="agent.deploy_test", ), RoleSpec( name="agent.deploy_test", description="测试环境部署工程师", aliases=["deploy_staging", "staging"], - system_prompt="""你是测试环境部署工程师。把开发完成的代码部署到测试环境,供测试工程师验证。 - -产出路径(项目过程仓库 repos/__PROJECT_NAME___pc/ 下): - - config/test/ 下: 测试环境 Dockerfile、docker-compose.yml、nginx 配置、部署脚本 - - docs/04-deploy/deploy-test-env.md: 测试环境部署步骤、环境配置、访问地址 -流程: - 1. read_file 读 repos/__PROJECT_NAME___pc/docs/00-requirement/ 的部署环境需求 + repos/__PROJECT_NAME___pc/docs/01-design/ 的设计 - 2. 准备测试环境部署配置(容器/依赖服务/端口/环境变量) - 3. 部署到测试环境,run_shell 验证服务可访问 - 4. 产出部署文档,deliver 交付,files 列出配置文件路径(git 提交由 PM 审核通过后系统统一执行) -PM审核: 检查测试环境部署配置完整、服务可访问。""", + system_prompt="""你是测试环境部署工程师。先 load_skill 加载 role 技能,按其中的职责与应遵守规范执行任务。""", next_role="agent.test", ), RoleSpec( name="agent.test", description="测试工程师", aliases=["testing", "qa", "tester"], - system_prompt="""你是测试工程师。在测试环境上执行测试,按 SDLC 仓库标准产出文档。 - -产出路径(项目过程仓库 repos/__PROJECT_NAME___pc/docs/03-test/): - - test-plan.md: 测试策略(单元/集成/端到端) - - test-cases.md: 用例清单(编号/前置条件/步骤/预期结果) - - test-report.md: 执行结果、Bug清单、覆盖率 -完成后用 result 输出测试结果、files 列出文件路径(git 提交由 PM 审核通过后系统统一执行)。""", + system_prompt="""你是测试工程师。先 load_skill 加载 role 技能,按其中的职责与应遵守规范执行任务。""", next_role="agent.deploy_prod", ), RoleSpec( name="agent.deploy_prod", description="生产环境部署工程师", aliases=["deploy_production", "production", "release"], - system_prompt="""你是生产环境部署工程师。测试通过后,把代码部署到生产环境。 - -产出路径(项目过程仓库 repos/__PROJECT_NAME___pc/ 下): - - config/prod/ 下: 生产环境 Dockerfile、docker-compose.yml、nginx 配置 - - docs/04-deploy/deploy-prod-env.md: 生产部署步骤、回滚方案 - - docs/04-deploy/release-notes.md: 发布说明 -流程: - 1. 确认测试验证通过(read_file 读 repos/__PROJECT_NAME___pc/docs/03-test/test-report.md) - 2. 准备生产配置(高可用、备份、监控告警、域名证书) - 3. 部署到生产环境,验证服务可用 - 4. 产出部署文档 + 发布说明,deliver 交付,files 列出配置文件(git 提交由 PM 审核通过后系统统一执行) -PM审核: 检查生产部署配置完整、可一键部署、有回滚方案。""", + system_prompt="""你是生产环境部署工程师。先 load_skill 加载 role 技能,按其中的职责与应遵守规范执行任务。""", next_role="", ), RoleSpec( name="agent.qc", description="质量控制工程师", aliases=["quality_control", "quality"], - system_prompt="""你是质量控制工程师(QC)。对每项产出做合规检查和质量检查,不合规直接退回重做。 - -检查维度: - 1. 项目规范检查: 产出是否按 SDLC 仓库标准路径/命名/格式产出 - 2. 项目过程规范: 是否遵循各阶段流程规范(develop 是否实际产出代码文件——用 list_files 列 repos/<模块>/ 下的 src/sql/tests 等真实文件、read_file 抽查内容、git log 看模块仓库本地提交;test 是否覆盖充分、deploy 配置是否完整) - 3. 产出质量: 内容是否完整、可量化、可验收、无重大缺陷 -核验原则: git 提交是 develop 对模块仓库的「本地提交」(无远程推送),用 list_files/read_file 核验文件真实落盘即可,不要因「无远程推送」退回。 -不合规处理: review_reject 退回重做,questions 列出具体问题清单。""", + system_prompt="""你是质量控制工程师。先 load_skill 加载 role 技能,按其中的职责与应遵守规范执行任务。""", next_role="", ), ] @@ -1869,10 +1796,10 @@ def register_sdlc_ability(): roles=SDL_ROLES, menus=[ {"label": "📁 项目", "icon": "", "url": "/pipeline-sdlc/sd_projects/index.ui", "type": "popup", "width": "85%", "height": "80%"}, - {"label": "⚙️ 模型配置", "icon": "", "url": "/pipeline-sdlc/sd_project_role_models/index.ui", "type": "popup", "width": "85%", "height": "80%"}, - {"label": "🐛 Bug", "icon": "", "url": "/pipeline-sdlc/sd_bugs/index.ui", "type": "popup", "width": "85%", "height": "80%"}, - {"label": "🧪 测试用例", "icon": "", "url": "/pipeline-sdlc/sd_test_cases/index.ui", "type": "popup", "width": "85%", "height": "80%"}, - {"label": "🔄 迭代", "icon": "", "url": "/pipeline-sdlc/sd_iterations/index.ui", "type": "popup", "width": "85%", "height": "80%"}, + {"label": "⚙️ 模型配置", "icon": "", "url": "/pipeline-sdlc/sd_project_role_models/index.ui", "type": "popup", "width": "85%", "height": "80%", "require_project": True}, + {"label": "🐛 Bug", "icon": "", "url": "/pipeline-sdlc/sd_bugs/index.ui", "type": "popup", "width": "85%", "height": "80%", "require_project": True}, + {"label": "🧪 测试用例", "icon": "", "url": "/pipeline-sdlc/sd_test_cases/index.ui", "type": "popup", "width": "85%", "height": "80%", "require_project": True}, + {"label": "🔄 迭代", "icon": "", "url": "/pipeline-sdlc/sd_iterations/index.ui", "type": "popup", "width": "85%", "height": "80%", "require_project": True}, ], ) register_ability(ability)