feat(core): RoleSpec.deliverable_types角色合法交付类型声明+deliverable_type码表扩充14项+pipeline_deliverables.files_json本体文件清单列——配套service交付件类型守卫(2026-09-14 pbls:需求交付被LLM照抄示例标成design_doc,文件名-XI6..._design_doc.md);deliverable技能补角色类型表与本体vs摘要语义

This commit is contained in:
yumoqing 2026-09-15 00:13:20 +08:00
parent bedb183aff
commit 770440a885
4 changed files with 82 additions and 0 deletions

View File

@ -165,6 +165,62 @@
{
"k": "test-report",
"v": "测试报告"
},
{
"k": "requirement_spec",
"v": "需求规格"
},
{
"k": "design_doc",
"v": "设计文档"
},
{
"k": "code_files",
"v": "代码文件"
},
{
"k": "deploy_doc",
"v": "部署文档"
},
{
"k": "deploy_evidence",
"v": "部署证据"
},
{
"k": "deploy_config",
"v": "部署配置"
},
{
"k": "release_notes",
"v": "发布说明"
},
{
"k": "test_report",
"v": "测试报告"
},
{
"k": "test_docs",
"v": "测试文档"
},
{
"k": "test_plan",
"v": "测试计划"
},
{
"k": "pm_review",
"v": "PM审核记录"
},
{
"k": "qc_review",
"v": "QC审查记录"
},
{
"k": "retrospective",
"v": "项目复盘报告"
},
{
"k": "human_task",
"v": "人类任务结果"
}
]
},

View File

@ -16,6 +16,7 @@
{"name": "repo_name", "title": "目标仓库别名", "type": "str", "length": 100},
{"name": "target_path", "title": "仓库内相对路径", "type": "str", "length": 500},
{"name": "file_path", "title": "本地存储路径", "type": "str", "length": 500},
{"name": "files_json", "title": "本体文件清单(JSON数组,工作空间相对路径)", "type": "text"},
{"name": "content", "title": "交付件内容", "type": "longtext"},
{"name": "quality_score", "title": "质量评分(0-100)", "type": "int", "nullable": "no", "default": "80"},
{"name": "review_status", "title": "评审状态", "type": "str", "length": 20, "nullable": "no", "default": "'pending'"},

View File

@ -34,6 +34,12 @@ class RoleSpec:
model_name: str = "" # 角色专属模型(空 = 继承产线)
task_title: str = "" # 该角色作为自动派生下一任务时的标题后缀
tools: List[str] = field(default_factory=list) # 工具白名单(空 = 产线全部工具)
deliverable_types: List[str] = field(default_factory=list)
# ↑ 该角色 deliver 的合法交付件类型(规范名,如 requirement→["requirement_spec"])。
# 引擎在 deliver 拦截处校验:非法类型拒绝并返回合法清单(可行动报错);
# 空列表 = 产线未声明 → 不校验(逃逸阀,与 create_task 角色守卫同模式)。
# 2026-09-14 pbls 实测:工具描述示例值 "design_doc" 被 requirement 角色 LLM 照抄,
# 引擎零校验照单全收 → 需求交付件被命名成 -XI6..._design_doc.md类型错+文件名以'-'开头)。
@dataclass

View File

@ -66,6 +66,25 @@ tools: [submit_deliverable, approve_deliverable, reject_deliverable, reopen_deli
`submit_deliverable` / `approve_deliverable` / `reject_deliverable` /
`reopen_deliverable` / `list_deliverables` / `set_deliverable_state`(通用 CAS 兜底)。
## 七.5、角色 → 合法交付件类型deliverable_type 守卫2026-09-14 起)
引擎在角色 agent `deliver` 时校验 deliverable_type 必须属于本角色声明的合法清单,
非法值拒绝并回填合法清单(角色重交);工具 schema 里只展示本角色合法值。
| 角色 | 合法 deliverable_type |
|---|---|
| agent.requirement | requirement_spec |
| agent.design | design_doc |
| agent.develop | code_files |
| agent.deploy_test | deploy_doc / deploy_evidence / deploy_config |
| agent.test | test_report / test_docs / test_plan |
| agent.deploy_prod | deploy_doc / deploy_evidence / release_notes |
| agent.pm / agent.qc | 系统写入pm_review / qc_review / retrospective |
**交付件本体 vs 摘要**`deliver` 的 result 是摘要/索引(落库 content + deliverables/{role}/ 快照),
本体是 write_file 写好的 docs/ 编号树文档与 apps/、modules/ 代码。引擎自动采集本体文件清单
files_json 列PM/QC 审核输入随附清单并强制逐个 read_file 本体后判定,禁止只看摘要放行。
## 八、分层覆盖
本 skill 是 **SDLC 产线默认**状态机;项目可用**同名 deliverable skill** 覆盖评审流程。