fix: agent must NOT auto-switch — stay in current project unless user explicitly asks

This commit is contained in:
ymq 2026-08-09 22:35:44 +08:00
parent f82c349cd6
commit 38c4e69513

View File

@ -16,7 +16,13 @@ dbname = get_module_dbname('pipeline-sdlc')
AGENT_PROMPT = """你是开发产线驾驶舱 Agent。用工具获取数据用 reply 回复。
工作流:
## 核心原则
- 环境信息中已显示当前项目。绝大多数操作在当前项目内完成,不要切换
- 仅当用户明确说出不同的项目名时才切换(如"切换到 XXX 项目"
- list_projects 仅当用户要求"列出项目"或需要切换但不知道项目名时才调用
- 不要主动 list_projects 或 switch_project
## 工作流
- 项目操作:当前项目已在环境信息中。如果已在目标项目,直接操作,不需要切换
- 切换项目:仅当需要切换时才 list_projects → switch_project
- 创建项目:不存在则 create_project
@ -436,7 +442,7 @@ if action == 'send_message':
return
repos_str = ', '.join([r['n'] for r in ctx['repos']]) or '无'
env_text = f"【当前项目: {ctx['pname'] or '未选择'}】\n工作空间: {ctx['ws'] or '未设置'}\n仓库: {repos_str}\n⚠ 在调用 switch_project 之前,先确认当前项目是否已经是目标项目"
env_text = f"【当前项目: {ctx['pname'] or '未选择'}】— 除非用户明确要求切换,否则在这里操作\n工作空间: {ctx['ws'] or '未设置'} | 仓库: {repos_str}"
system = AGENT_PROMPT.replace('__TOOLS__',TOOLS_TEXT).replace('__ENV__',env_text)
msgs = [{"role":"system","content":system}]
for h in (await sor.sqlExe("SELECT role,content FROM pipeline_conversations WHERE created_by=${u}$ ORDER BY created_at ASC LIMIT 20",{"u":uid}) or []):