From b31cb6c8163cd3fac3e757d445698dc23f641141 Mon Sep 17 00:00:00 2001 From: ymq Date: Sat, 22 Aug 2026 00:12:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20pm/qc=20=E8=A7=92=E8=89=B2=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E5=8A=A0=E8=BD=BD=E5=BD=92=E4=B8=80=E5=8C=96=20role?= =?UTF-8?q?=EF=BC=88agent.pm/agent.qc=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pm_review_run/qc_review_run 传裸名 'pm'/'qc' 给 _build_role_skills_block, get_merged 按 role_key 精确匹配目录,裸名匹配不上 agent.pm/agent.qc 目录, 导致 pm/qc 角色技能永远不注入。改为 _normalize_role('pm'/'qc')。 --- pipeline_service/agent_loop.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipeline_service/agent_loop.py b/pipeline_service/agent_loop.py index dff7dbf..d9b1612 100644 --- a/pipeline_service/agent_loop.py +++ b/pipeline_service/agent_loop.py @@ -1512,7 +1512,7 @@ async def pm_review_run(project_id, agent_id=None, model_name=None): repo_state = await _get_repo_state(workspace_dir) repos_str = ", ".join([r['name'] for r in repos]) if repos else "无" content_preview = deliverable_content[:6000] - role_skills = await _build_role_skills_block(sor, project_id, 'pm', org_id) + role_skills = await _build_role_skills_block(sor, project_id, _normalize_role('pm'), org_id) pm_system = PM_SYSTEM_PROMPT.replace('__TITLE__', title)\ .replace('__ROLE__', task_role)\ @@ -1747,7 +1747,7 @@ async def qc_review_run(project_id, agent_id=None, model_name=None): return {"status": "rejected", "task_id": task_id, "reason": "没有交付件"} content_preview = deliverable_content[:6000] - role_skills = await _build_role_skills_block(sor, project_id, 'qc', org_id) + role_skills = await _build_role_skills_block(sor, project_id, _normalize_role('qc'), org_id) qc_system = QC_SYSTEM_PROMPT.replace('__TITLE__', title)\ .replace('__ROLE__', task_role)\