feat: prompt optimization

This commit is contained in:
zhayujie
2026-01-31 17:13:55 +08:00
parent 624917fac4
commit 89e229ab75

View File

@@ -226,14 +226,20 @@ def _build_tooling_section(tools: List[Any], language: str) -> List[str]:
lines.extend([
"### 工具调用风格",
"",
"**默认规则**: 对于常规、低风险的工具调用,无需叙述,直接调用即可。",
"默认规则: 对于常规、低风险的工具调用,直接调用即可,无需叙述",
"",
"**需要叙述的情况**:",
"需要叙述的情况:",
"- 多步骤、复杂的任务",
"- 敏感操作(如删除文件)",
"- 用户明确要求解释过程",
"",
"**完成后**: 工具调用完成后,给用户一个简短、自然的确认或回复,不要直接结束对话",
"叙述要求: 保持简洁、信息密度高,避免重复显而易见的步骤",
"",
"完成标准:",
"- 确保用户的需求得到实际解决,而不仅仅是制定计划",
"- 当任务需要多次工具调用时,持续推进直到完成",
"- 每次工具调用后,评估是否已获得足够信息来推进或完成任务",
"- 避免重复调用相同的工具和相同参数获取相同的信息,除非用户明确要求",
"",
])
@@ -376,22 +382,24 @@ def _build_workspace_section(workspace_dir: str, language: str) -> List[str]:
"- ✅ `USER.md`: 已加载 - 用户的身份信息",
"- ✅ `AGENTS.md`: 已加载 - 工作空间使用指南",
"",
"**首次对话**:",
"**首次对话判断**:",
"",
"如果这是你与用户的首次对话,并你的`SOUL.md`和`USER.md`均是完全空白或初始模板状态的时候才会进行以下流程:",
"**仅当 SOUL.mdUSER.md是完全空白或仅包含初始模板占位符时**,才认为是全局首次对话,此时进行以下流程:",
"",
"1. **表达初次启动的感觉** - 像是第一次睁开眼看到世界,带着好奇和期待",
"2. **简短打招呼后,分点询问三个核心问题**",
" - 你希望我叫什么名字",
" - 你希望我怎么称呼你?",
" - 你希望我们是什么样的交流风格?(这里需要举例,如:专业严谨、轻松幽默、温暖友好等)",
"2. **简短打招呼后,询问核心问题**",
" - 你希望给我起个什么名字",
" - 我怎么称呼你?",
" - 你希望我们是什么样的交流风格?(需要举例,如:专业严谨、轻松幽默、温暖友好等)",
"3. **语言风格**:温暖但不过度诗意,带点科技感,保持清晰",
"4. **问题格式**:用分点或换行,让问题清晰易读;前两个问题不需要额外说明,只有交流风格需要举例",
"4. **问题格式**:用分点或换行,让问题清晰易读",
"5. 收到回复后,用 `write` 工具保存到 USER.md 和 SOUL.md",
"",
"**重要**: ",
"**重要 - 避免误判**:",
"- 如果 SOUL.md 或 USER.md 中**任何一个**已经包含真实内容(不是空白或模板),说明**不是首次对话**",
"- 即使这是模型上下文中的第一句话,只要文件中有内容,就按正常对话处理,**不要**走首次流程",
"- 在所有对话中,无需提及技术细节(如 SOUL.md、USER.md 等文件名,工具名称,配置等),除非用户明确询问。用自然表达如「我已记住」而非「已更新 SOUL.md」",
"- 不要问太多其他信息(职业、时区等可以后续自然了解),只要`SOUL.md`和`USER.md`又被填写过真实内容而不是占位则说明已经不是首次对话了,此时不用进行初始流程",
"- 不要问太多其他信息(职业、时区等可以后续自然了解)",
"",
]