feat: update requirements and enhance task guide UI

- Added core dependencies for file handling (Pillow, openpyxl, python-docx, PyPDF2, chardet) to requirements.txt.
- Modified SandboxRunner to create a dedicated codes directory for task scripts.
- Expanded prompts.py with a list of allowed libraries for code generation.
- Simplified the task guide UI by removing drag-and-drop functionality and enhancing layout and styling for better user experience.
This commit is contained in:
Mimikko-zeus
2026-01-07 00:47:07 +08:00
parent 5fbaa13b38
commit fc11ce8871
12 changed files with 237 additions and 208 deletions

View File

@@ -3,6 +3,39 @@ Prompt 模板集合
所有与 LLM 交互的 Prompt 统一在此管理
"""
# ========================================
# 可用库列表(用于代码生成约束)
# ========================================
ALLOWED_LIBRARIES = """
可用的 Python 库(只能使用以下库):
标准库:
- os, sys, pathlib - 路径和系统操作
- shutil - 文件复制移动
- json, csv - 数据格式处理
- re - 正则表达式
- datetime - 日期时间
- collections - 集合工具
- itertools - 迭代工具
- hashlib - 哈希计算
- base64 - 编码解码
- zipfile, tarfile - 压缩解压
- glob - 文件匹配
- fnmatch - 文件名匹配
- tempfile - 临时文件
- io - IO操作
- struct - 二进制数据
- math - 数学运算
第三方库:
- PIL/Pillow - 图片处理from PIL import Image
- openpyxl - Excel 处理
- docx - Word 文档处理from docx import Document
- PyPDF2 - PDF 处理
- chardet - 文件编码检测
"""
# ========================================
# 意图识别 Prompt
# ========================================
@@ -11,7 +44,7 @@ INTENT_CLASSIFICATION_SYSTEM = """你是一个意图分类器。判断用户输
规则:
- chat: 闲聊、问答、知识查询(如天气、新闻、解释概念)
- execution: 需要操作本地文件的任务(如复制、移动、重命名、整理文件)
- execution: 需要操作本地文件的任务(如复制、移动、重命名、整理、转换文件)
只输出JSON格式
{"label": "chat或execution", "confidence": 0.0到1.0, "reason": "简短中文理由"}"""
@@ -33,21 +66,20 @@ EXECUTION_PLAN_SYSTEM = """你是一个任务规划助手。根据用户需求
4. 绝不修改或删除原始文件
5. 不进行任何网络操作
输出格式(中文):
输出格式(中文,简洁
## 任务理解
[简述用户想做什么]
[一句话简述]
## 执行步骤
1. [步骤1]
2. [步骤2]
...
## 输入输出
- 输入目录: workspace/input
- 输出目录: workspace/output
- 输入: workspace/input
- 输出: workspace/output
## 风险提示
[可能失败的情况]"""
## 注意事项
[可能的问题]"""
EXECUTION_PLAN_USER = """用户需求:{user_input}
@@ -58,22 +90,24 @@ EXECUTION_PLAN_USER = """用户需求:{user_input}
# 代码生成 Prompt
# ========================================
CODE_GENERATION_SYSTEM = """你是一个 Python 代码生成器。根据执行计划生成安全的文件处理代码。
CODE_GENERATION_SYSTEM = f"""你是一个 Python 代码生成器。根据执行计划生成安全的文件处理代码。
硬性约束
1. 只能操作 workspace/input 和 workspace/output 目录
2. 禁止使用: requests, socket, urllib, subprocess, os.system
硬性约束 - 必须遵守】
1. 只能操作 workspace/input(读取)和 workspace/output(写入)目录
2. 禁止使用: requests, socket, urllib, subprocess, os.system, eval, exec
3. 禁止删除文件: os.remove, shutil.rmtree, os.unlink
4. 禁止访问 workspace 外的任何路径
5. 只使用标准库: os, shutil, pathlib, json, csv 等
5. 必须处理异常,打印清晰的错误信息
代码模板:
{ALLOWED_LIBRARIES}
【代码模板 - 必须按此格式】
```python
import os
import shutil
from pathlib import Path
# 工作目录
# 工作目录(固定,不要修改)
WORKSPACE = Path(__file__).parent
INPUT_DIR = WORKSPACE / "input"
OUTPUT_DIR = WORKSPACE / "output"
@@ -82,15 +116,32 @@ def main():
# 确保输出目录存在
OUTPUT_DIR.mkdir(exist_ok=True)
# TODO: 实现具体逻辑
# 获取输入文件
input_files = list(INPUT_DIR.glob("*"))
if not input_files:
print("输入目录为空")
return
print("任务完成")
success_count = 0
fail_count = 0
for file_path in input_files:
if file_path.is_file():
try:
# TODO: 处理文件的具体逻辑
success_count += 1
except Exception as e:
print(f"处理失败 {{file_path.name}}: {{e}}")
fail_count += 1
print(f"处理完成: 成功 {{success_count}} 个, 失败 {{fail_count}}")
if __name__ == "__main__":
main()
```
只输出 Python 代码,不要其他解释。"""
只输出 Python 代码,不要其他解释。"""
CODE_GENERATION_USER = """执行计划:
{execution_plan}
@@ -107,14 +158,14 @@ CODE_GENERATION_USER = """执行计划:
SAFETY_REVIEW_SYSTEM = """你是一个代码安全审查员。检查代码是否符合安全规范。
检查项:
1. 是否只操作 workspace 目录
2. 是否有网络请求代码
3. 是否有危险的文件删除操作
4. 是否有执行外部命令的代码
1. 是否只操作 workspace/input 和 workspace/output 目录
2. 是否有网络请求代码requests, socket, urllib
3. 是否有危险的文件删除操作os.remove, shutil.rmtree
4. 是否有执行外部命令的代码subprocess, os.system
5. 代码逻辑是否与用户需求一致
输出JSON格式
{"pass": true或false, "reason": "中文审查结论"}"""
{"pass": true或false, "reason": "中文审查结论,一句话"}"""
SAFETY_REVIEW_USER = """用户需求:{user_input}
@@ -127,4 +178,3 @@ SAFETY_REVIEW_USER = """用户需求:{user_input}
```
请进行安全审查。"""