agent/config.py
2025-11-14 16:44:12 +08:00

183 lines
6.2 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# config.py - 系统配置文件(添加了终端配置)
# API配置
API_BASE_URL = "https://ark.cn-beijing.volces.com/api/v3"
API_KEY = "3e96a682-919d-45c1-acb2-53bc4e9660d3" # 替换为你的API密钥
MODEL_ID = "kimi-k2-250905" #模型ID
#API_BASE_URL = "https://api.moonshot.cn/v1"
#API_KEY = "sk-xW0xjfQM6Mp9ZCWMLlnHiRJcpEOIZPTkXcN0dQ15xpZSuw2y" # 替换为你的API密钥
#MODEL_ID = "kimi-k2-thinking" #模型ID
# Tavily搜索配置
TAVILY_API_KEY = "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" # 替换为你的Tavily API密钥
# 系统配置
DEFAULT_PROJECT_PATH = "./project" # 默认项目文件夹
MAX_CONTEXT_SIZE = 100000 # 最大上下文字符数约100K
MAX_FILE_SIZE = 10 * 1024 * 1024 # 最大文件大小 10MB
MAX_OPEN_FILES = 20 # 最多同时打开的文件数
MAX_UPLOAD_SIZE = 50 * 1024 * 1024 # 单次上传最大50MB
UPLOAD_ALLOWED_EXTENSIONS = []
AGENT_VERSION = "v1.1" # 前端显示版本号
# 执行配置
CODE_EXECUTION_TIMEOUT = 60 # 代码执行超时(秒)
TERMINAL_COMMAND_TIMEOUT = 30 # 终端命令超时(秒)
SEARCH_MAX_RESULTS = 10 # 搜索最大结果数
# 持久化终端配置(新增)
MAX_TERMINALS = 3 # 最大同时开启的终端数量
TERMINAL_BUFFER_SIZE = 100000 # 每个终端的最大缓冲区大小(字符)
TERMINAL_DISPLAY_SIZE = 50000 # 终端显示大小限制(字符)
TERMINAL_TIMEOUT = 300 # 终端空闲超时(秒)
TERMINAL_OUTPUT_WAIT = 5 # 等待终端输出的默认时间(秒)
TERMINAL_SNAPSHOT_DEFAULT_LINES = 50 # 终端快照默认返回的行数
TERMINAL_SNAPSHOT_MAX_LINES = 200 # 终端快照允许的最大行数
TERMINAL_SNAPSHOT_MAX_CHARS = 60000 # 终端快照返回的最大字符数
TERMINAL_INPUT_MAX_CHARS = 20000 # terminal_input返回的最大字符数
# 在 config.py 中添加以下配置项
# 自动修复配置
AUTO_FIX_TOOL_CALL = False # 是否自动修复工具调用格式错误
AUTO_FIX_MAX_ATTEMPTS = 3 # 最大自动修复尝试次数
# 工具调用安全限制
MAX_ITERATIONS_PER_TASK = 100# 单个任务最大迭代次数
MAX_CONSECUTIVE_SAME_TOOL = 50 # 连续相同工具调用的最大次数
MAX_TOTAL_TOOL_CALLS = 100 #单个任务最大工具调用总数
TOOL_CALL_COOLDOWN = 0.5 # 工具调用之间的最小间隔(秒)
# 文件路径
PROMPTS_DIR = "./prompts"
DATA_DIR = "./data"
LOGS_DIR = "./logs"
# 多用户空间配置
USER_SPACE_DIR = "./users" # 每个用户的工作区根目录
USERS_DB_FILE = f"{DATA_DIR}/users.json" # 用户信息存储
INVITE_CODES_FILE = f"{DATA_DIR}/invite_codes.json" # 邀请码存储文件
# 记忆文件
MAIN_MEMORY_FILE = f"{DATA_DIR}/memory.md"
TASK_MEMORY_FILE = f"{DATA_DIR}/task_memory.md"
CONVERSATION_HISTORY_FILE = f"{DATA_DIR}/conversation_history.json"
# 日志配置
LOG_LEVEL = "INFO" # DEBUG, INFO, WARNING, ERROR
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
# 安全配置
FORBIDDEN_COMMANDS = [
"rm -rf /",
"rm -rf ~",
"format",
"shutdown",
"reboot",
"kill -9",
"dd if=",
]
FORBIDDEN_PATHS = [
"/System",
"/usr",
"/bin",
"/sbin",
"/etc",
"/var",
"/tmp",
"/Applications",
"/Library",
"C:\\Windows",
"C:\\Program Files",
"C:\\Program Files (x86)",
"C:\\ProgramData"
]
# 这些是绝对不允许的根路径
FORBIDDEN_ROOT_PATHS = [
"/",
"C:\\",
"~"
]
# 确认操作列表
NEED_CONFIRMATION = [
"delete_file",
"delete_folder",
"clear_file",
"execute_terminal",
"batch_delete"
]
# 输出格式
OUTPUT_FORMATS = {
"thinking": "💭 [思考]",
"action": "🔧 [执行]",
"file": "📁 [文件]",
"search": "🔍 [搜索]",
"code": "💻 [代码]",
"terminal": "⚡ [终端]",
"memory": "📝 [记忆]",
"success": "✅ [成功]",
"error": "❌ [错误]",
"warning": "⚠️ [警告]",
"confirm": "❓ [确认]",
"info": " [信息]",
"session": "📺 [会话]" # 新增:终端会话标记
}
# 在 config.py 文件末尾添加以下对话持久化相关配置
# ==========================================
# 对话持久化配置(新增)
# ==========================================
# 对话存储配置
CONVERSATIONS_DIR = f"{DATA_DIR}/conversations" # 对话存储目录
CONVERSATION_INDEX_FILE = "index.json" # 对话索引文件名
CONVERSATION_FILE_PREFIX = "conv_" # 对话文件前缀
# 对话管理配置
DEFAULT_CONVERSATIONS_LIMIT = 20 # API默认返回的对话数量
MAX_CONVERSATIONS_LIMIT = 100 # API允许的最大对话数量限制
CONVERSATION_TITLE_MAX_LENGTH = 100 # 对话标题最大长度
CONVERSATION_SEARCH_MAX_RESULTS = 50 # 搜索结果最大数量
# 对话清理策略配置
CONVERSATION_AUTO_CLEANUP_ENABLED = False # 是否启用自动清理旧对话
CONVERSATION_RETENTION_DAYS = 30 # 对话保留天数(如果启用自动清理)
CONVERSATION_MAX_TOTAL = 1000 # 最大对话总数(超过时清理最旧的)
# 对话备份配置
CONVERSATION_BACKUP_ENABLED = True # 是否启用对话备份
CONVERSATION_BACKUP_INTERVAL_HOURS = 24 # 备份间隔(小时)
CONVERSATION_BACKUP_MAX_COUNT = 7 # 最多保留多少个备份文件
# 对话安全配置
CONVERSATION_MAX_MESSAGE_SIZE = 50000 # 单条消息最大字符数
CONVERSATION_MAX_MESSAGES_PER_CONVERSATION = 10000 # 每个对话最大消息数
CONVERSATION_EXPORT_MAX_SIZE = 10 * 1024 * 1024 # 导出文件最大大小10MB
# 对话性能配置
CONVERSATION_LAZY_LOADING = True # 是否启用懒加载(只加载对话元数据,不加载完整消息)
CONVERSATION_CACHE_SIZE = 50 # 内存中缓存的对话数量
CONVERSATION_INDEX_UPDATE_BATCH_SIZE = 100 # 批量更新索引的大小
# 工具输出字符数限制
MAX_READ_FILE_CHARS = 30000 # read_file工具限制
MAX_FOCUS_FILE_CHARS = 30000 # focus_file工具限制
MAX_RUN_COMMAND_CHARS = 10000 # run_command工具限制
MAX_EXTRACT_WEBPAGE_CHARS = 80000 # extract_webpage工具限制
# 待办事项配置
TODO_MAX_TASKS = 4
TODO_MAX_OVERVIEW_LENGTH = 999
TODO_MAX_TASK_LENGTH = 999
# 登录配置
ADMIN_USERNAME = "jojo"
ADMIN_PASSWORD_HASH = "pbkdf2:sha256:600000$FSNAVncPXW6CBtfj$b7f093f4256de9d1a16d588565d4b1e108a9c66b2901884dd118c515258d78c7"
# 模型调用相关
DEFAULT_RESPONSE_MAX_TOKENS = 32768 # 每次API响应的默认最大tokens可在此调整