fix: 建任务时归一化 role(裸名 design/test → agent.design/agent.test)

会话agent create_task 工具(_h_create_task)和 storage.create_task 把 LLM 传来的
裸角色名原样入库,而角色agent认领时 _claim_task→_normalize_role 用规范名
(agent.{role})匹配,导致裸名任务永远匹配不上、卡 submitted 无人认领
(poller 每10秒空转 dispatch)。统一在建任务入口归一化 role 根治。
This commit is contained in:
ymq 2026-08-17 18:13:05 +08:00
parent 853f3d5082
commit 8cfae215e0
2 changed files with 11 additions and 0 deletions

View File

@ -313,6 +313,12 @@ async def _h_create_task(sor, p, ctx):
if not title:
return "需要任务标题"
# 归一化角色名:裸名(design/test/develop/requirement) → agent.{role}。
# 角色agent认领时(_claim_task→_normalize_role)用规范名匹配,裸名入库会永远匹配不上,
# 任务卡 submitted 无人认领poller 每10秒空转 dispatch
from .agent_loop import _normalize_role
role = _normalize_role(role)
tid = getID()
await sor.C("pipeline_tasks", {
"id": tid, "tenant_id": pid, "pipeline_id": "role_task",

View File

@ -61,6 +61,11 @@ async def create_task(tenant_id: str, pipeline_id: str, owner_id: str, title: st
role: 目标角色需求/设计/开发/测试/运维空串=不限角色兼容旧任务
带角色的任务由角色agent循环认领执行不带步骤记录
"""
if role:
# 归一化角色名(裸名 design/test/develop → agent.{role}),与 _claim_task 匹配口径一致,
# 避免裸名入库导致角色agent认领时匹配不上、任务卡 submitted。
from .agent_loop import _normalize_role
role = _normalize_role(role)
db, dbname = _get_db()
async with db.sqlorContext(dbname) as sor:
task_id = getID()