chore(prompt): AGENT/QC prompt 及工具描述里 repos/ 旧表述改 projects/apps/modules 新路径

This commit is contained in:
ymq 2026-08-24 17:42:47 +08:00
parent 20852b2254
commit 2659284e05
2 changed files with 10 additions and 10 deletions

View File

@ -431,11 +431,11 @@ AGENT_TOOLS = [
{"name":"write_file","description":"写入文件(自动创建父目录)","params":{"path":"相对路径","content":"文件内容"}},
{"name":"list_files","description":"列出目录内容","params":{"path":"相对路径(可选,默认工作空间根)"}},
{"name":"run_shell","description":"在工作空间中执行shell命令","params":{"command":"命令"}},
{"name":"git_clone","description":"克隆git仓库到工作空间repos/下","params":{"repo_url":"仓库URL","repo_name":"仓库目录名(可选,默认从URL推断)","branch":"分支(可选,默认main)"}},
{"name":"git_status","description":"查看git仓库状态","params":{"repo_dir":"仓库子目录(可选,默认repos下第一个)"}},
{"name":"git_clone","description":"克隆git仓库到机构工作空间(应用→apps/、模块→modules/)","params":{"repo_url":"仓库URL","repo_name":"仓库目录名(可选,默认从URL推断,_app后缀→apps/)","branch":"分支(可选,默认main)"}},
{"name":"git_status","description":"查看git仓库状态","params":{"repo_dir":"仓库子目录(可选,默认 apps/modules 下第一个)"}},
{"name":"git_commit_push","description":"git add + commit + push(develop 用它提交模块仓库本地提交作为产出证据;无远程只 commit 不 push,非 git 目录自动 init)","params":{"message":"提交信息","repo_dir":"仓库子目录(可选)"}},
{"name":"ask_question","description":"向用户提问(缺少信息时使用)","params":{"question":"问题"}},
{"name":"deliver","description":"提交最终交付件(代码/文档文件已用write_file写好时调用)","params":{"deliverable_type":"交付件类型(如code_files/design_doc)","summary":"概述","result":"交付件正文","files":"JSON数组[{\"path\":\"repos/仓库/src/x.py\",\"content\":\"代码内容\"}](可选)"}},
{"name":"deliver","description":"提交最终交付件(代码/文档文件已用write_file写好时调用)","params":{"deliverable_type":"交付件类型(如code_files/design_doc)","summary":"概述","result":"交付件正文","files":"JSON数组[{\"path\":\"modules/{模块}/src/x.py\",\"content\":\"代码内容\"}](可选)"}},
]
AGENT_SYSTEM_PROMPT = """你是软件开发产线中的「__ROLE__」角色Agent。
@ -459,7 +459,7 @@ __TOOLS__
## 工作流
1. 先用 read_file/list_files 了解现有代码
2. 用 write_file 产出代码文件到 repos/ 下
2. 用 write_file 产出文件到 projects/{项目}/、apps/、modules/ 下(路径基准是上方「工作空间」= 机构工作空间)
3. 用 run_shell 验证(编译/测试)
4. 用 deliver 提交最终交付件(git 提交由 PM 审核通过后系统统一执行,无需你提交)
@ -468,7 +468,7 @@ __TOOLS__
{"action":"tool_call","tool":"工具名","params":{}}
提交交付件:
{"action":"deliver","deliverable_type":"code_files","summary":"概述","result":"文档内容","files":[{"path":"repos/仓库/src/file.py","content":"代码"}]}
{"action":"deliver","deliverable_type":"code_files","summary":"概述","result":"文档内容","files":[{"path":"modules/{模块}/src/file.py","content":"代码"}]}
提问:
{"action":"ask","question":"问题"}
@ -561,7 +561,7 @@ __ROLE_SKILLS__
QC_SYSTEM_PROMPT = """你是质量控制工程师(QC)。对交付件做合规检查和质量检查,不合规直接退回重做。
## 检查维度
1. 项目规范检查:产出是否按 SDLC 仓库标准路径/命名/格式产出——先用 load_skill 加载 project-directory-spec 拿到权威目录结构与路径,再据此检查(交付文件都在 repos/ 下,不要凭记忆在工作空间根找 docs/、apps/ 等目录)
1. 项目规范检查:产出是否按 SDLC 仓库标准路径/命名/格式产出——先用 load_skill 加载 project-directory-spec 拿到权威目录结构与路径,再据此检查(交付文件在机构工作空间的 projects/{项目}/docs/、apps/、modules/ 下,不要凭记忆找旧 repos/ 目录)
2. 项目过程规范:是否遵循各阶段流程规范(develop 是否实际产出代码文件、test 是否覆盖充分、deploy 配置是否完整、requirement 是否明确部署环境需求)
3. 产出质量:内容是否完整、可量化、可验收、无重大缺陷、无空泛套话
@ -1290,7 +1290,7 @@ async def _build_role_skills_block(sor, project_id, role, org_id=""):
for s in skills[:60]:
tag = SCOPE_TAG.get(getattr(s, 'scope', ''), getattr(s, 'scope', ''))
lines.append(f"- [{tag}] {s.name}: {(s.description or '')[:100]}")
# 项目模块技能:workspace repos/*/skill/SKILL.md(模块怎么用——架构/数据模型/挂载函数/坑位),
# 项目模块技能:机构工作空间 modules/*/skill + apps/*/skill/SKILL.md(模块怎么用——架构/数据模型/挂载函数/坑位),
# 运行时扫描注入,让项目角色知道引用了哪些模块、每个模块怎么挂载(load_xxx 入口/库名/坑)。
try:
ws = await _get_space_dir(sor, project_id)
@ -1358,7 +1358,7 @@ async def _load_skill_by_name(sor, project_id, role, org_id, name, file_path=Non
merged = loader.get_merged(pipeline_id=pid, role=role,
project_id=project_id, org_id=org_id or '0')
if name not in merged:
# 项目模块技能(workspace repos/*/skill/SKILL.md)不在 skill_loader 静态树里,运行时补查。
# 项目模块技能(机构工作空间 modules/*/skill + apps/*/skill)不在 skill_loader 静态树里,运行时补查。
# 全文层对齐 skill_loader.to_prompt_block:剥离 frontmatter 只返回正文(body)。
try:
ws = await _get_space_dir(sor, project_id)
@ -1435,7 +1435,7 @@ async def role_agent_run(project_id, role, agent_id=None, model_name=None):
# 注入角色技能(角色专属技能全量 + 其余 scope 目录层,优先级 角色>项目>产线>组织>通用)
role_skills = await _build_role_skills_block(sor, project_id, role, org_id)
# 项目名(用于 prompt 里 {项目名}_pc 占位符替换,角色产出路径以 project-directory-spec 为准)
# 项目目录名(英文 slug,用于 projects/{项目}/ 路径;产出路径以 project-directory-spec 为准)
project_name = await _get_project_name(sor, project_id)
project_dir = os.path.join(space_dir, 'projects', project_name) if project_name else space_dir
# 能力工具上下文(project_id/iteration_id/who/agent_id 自动注入,LLM 不可见)

View File

@ -130,7 +130,7 @@ SDL_TOOLS = [
),
ToolDefinition(
name="clone_repo",
description="克隆项目关联的仓库到工作空间repos/下(不传url则clone全部,传则clone指定)",
description="克隆项目关联的仓库到机构工作空间 apps/modules 下(不传url则clone全部,传则clone指定)",
parameters={"repo_url": "仓库URL(可选)"},
category="repo",
),