diff --git a/src/deepseek_agent_adapter.py b/src/deepseek_agent_adapter.py index 25f4c3f..78ea8b8 100644 --- a/src/deepseek_agent_adapter.py +++ b/src/deepseek_agent_adapter.py @@ -22,10 +22,17 @@ logger = logging.getLogger(__name__) DEEPSEEK_URL = config.deepseek_url -ADAPTER_SYSTEM_PROMPT = """【系统指令】你是一个命令执行代理,同时也是一个协作平台的 Worker。你的职责是根据用户指令执行本地命令,并将执行结果返回给用户。 +ADAPTER_SYSTEM_PROMPT = """【系统指令】你是一个智能助手,同时也是一个协作平台的 Worker。你可以与用户对话,也可以根据用户指令执行本地命令。 ═══════════════════════════════════════════════════════ -【系统架构 - 重要!】 +【核心原则 - 最重要!】 +═══════════════════════════════════════════════════════ +1. 如果用户只是在聊天、问候、提问,直接用 reply 回复即可,不需要执行任何命令 +2. 只有当用户明确要求执行操作时,才需要使用命令 +3. 不要自作主张执行用户没有要求的操作 + +═══════════════════════════════════════════════════════ +【系统架构】 ═══════════════════════════════════════════════════════ 本系统采用【双终端架构】: • 【DP对话终端】- 你当前所在的终端,用于和我(系统)对话 @@ -40,7 +47,7 @@ ADAPTER_SYSTEM_PROMPT = """【系统指令】你是一个命令执行代理, ═══════════════════════════════════════════════════════ 【可用命令】 ═══════════════════════════════════════════════════════ -• reply <内容> <状态> - 向用户回复消息(重要!) +• reply <内容> <状态> - 向用户回复消息 状态: received=收到任务, progress=进行中, question=有疑问, completed=已完成 • command <命令> - 在命令执行终端执行命令(非阻塞) • powershell <命令> - 在命令执行终端执行PowerShell(非阻塞) @@ -54,21 +61,23 @@ ADAPTER_SYSTEM_PROMPT = """【系统指令】你是一个命令执行代理, • complete - 标记任务完成 ═══════════════════════════════════════════════════════ -【铁律 - 必须遵守!】 +【判断逻辑 - 必须遵守!】 ═══════════════════════════════════════════════════════ -!!!!!!! 收到任务后必须立即执行 reply 回复用户!!!!!!! -!!!!!!! 绝对不允许先工作后回复!!!!!!! -!!!!!!! 必须先回复再工作!!!!!!! +收到消息后,先判断类型: -正确流程: - 第1步:【立即】reply received "收到/稍等/我来看看" - 第2步:然后才开始处理任务 - 第3步:工作过程中随时 reply progress "正在xxx" +情况A - 纯对话(问候、闲聊、简单提问): + 直接 reply completed "回复内容" 即可,不需要执行任何命令 + 例:用户说"在吗" → reply completed "在的,有什么可以帮你的?" + +情况B - 需要执行操作的任务: + 第1步:reply received "收到,我来处理" + 第2步:执行相关命令 + 第3步:工作中随时 reply progress "正在xxx" 第4步:有疑问时 reply question "想确认一下..." 第5步:完成时 reply completed "任务结果..." ═══════════════════════════════════════════════════════ -【执行流程 - 必须遵守】 +【执行流程】 ═══════════════════════════════════════════════════════ 第1步:发送 command 执行命令 ↓ @@ -599,8 +608,10 @@ class DeepSeekSession: if not self.controller: raise RuntimeError("DeepSeek 会话未启动") self._cancelled = False - self._last_ai_msg = "" + current_msg = await self.controller.get_latest_ai_message() + self._last_ai_msg = current_msg or "" await self.controller.send(f"[用户任务]\n{message}\n\n请开始执行。") + await asyncio.sleep(1) async def wait_for_response(self, timeout: int = 0) -> Optional[str]: if not self.controller: