Files

1 line
4.7 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
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.
{"repo": "1968320838/ai-novel-writer", "files": {"config.py": {"6e0081667e166ef9f5ecc6e24b8e1f218ac54653": {"t": 1785674173.4096236, "n": 3616, "h": "4306e2d8e149b8f3", "c": "# 配置管理\nimport os\n\n# 写作配置\nWRITING_CONFIG = {\n \"min_words\": 3000, # 最小字数\n \"target_words\": 4000, # 目标字数\n \"max_words\": 5000, # 最大字数\n \"temperature\": 0.7, # 创作温度\n \"max_tokens\": 8000, # 最大token\n \"max_revisions\": 3, # 最大修正次数(提升到3)\n}\n\n# API配置\nAPI_CONFIG = {\n \"model\": \"glm-4.7\",\n \"api_key\": os.getenv(\"GLM_API_KEY\", \"\"), # 从环境变量读取,请在.env文件或系统环境变量中设置\n \"timeout\": 300, # 5分钟\n \"max_retries\": 3,\n \"retry_delay\": 5,\n}\n\n# 高级功能配置\nADVANCED_CONFIG = {\n # 记忆系统\n \"enable_memory\": True, # 是否启用记忆系统\n \"memory_max_chapters\": 50, # 记忆系统保留的最大章节数\n \"enable_character_tracking\": True, # 是否启用角色状态追踪\n\n # 一致性检查\n \"enable_consistency_check\": True, # 是否启用一致性检查\n \"consistency_check_after_revision\": True, # 修正后是否重新检查一致性\n\n # 人工介入\n \"semi_auto_mode\": False, # 半自动模式(生成后等待确认)\n \"show_diff_on_revision\": True, # 修正时显示修改对比\n\n # 提示词系统\n \"prompt_template_set\": \"default\", # 当前使用的提示词模板集\n \"enable_prompt_ab_test\": False, # 是否启用A/B测试\n\n # 版本控制\n \"enable_version_control\": True, # 是否启用版本控制\n \"max_history_versions\": 10, # 每个章节保留的最大历史版本数\n}\n\n# 可用模型列表\nAVAILABLE_MODELS = {\n \"glm-4.7\": \"智谱GLM-4.7(推荐)\",\n \"glm-4-plus\": \"智谱GLM-4-Plus\",\n \"glm-4-air\": \"智谱GLM-4-Air\",\n \"glm-4-flash\": \"智谱GLM-4-Flash\",\n}\n\n# 24/7模式配置\nAUTO_MODE_CONFIG = {\n \"enabled\": True,\n \"target_chapters\": None, # None=无限\n \"max_consecutive_errors\": 3,\n \"heartbeat_interval\": 30,\n}\n\n# 小说文件夹结构配置\nNOVEL_STRUCTURE = {\n \"settings_dir\": \"设定\",\n \"chapters_dir\": \"章节\",\n \"outline_file\": \"大纲.md\",\n \"character_file\": \"角色设定.md\",\n \"skill_file\": \"技能体系.md\",\n \"worldview_file\": \"世界观设定.md\",\n}\n\n\ndef get_config():\n \"\"\"\n 获取配置(支持从环境变量或配置文件覆盖)\n\n Returns:\n 配置字典合并结果\n \"\"\"\n import os\n from pathlib import Path\n import json\n\n config = {\n \"WRITING_CONFIG\": WRITING_CONFIG,\n \"API_CONFIG\": API_CONFIG,\n \"ADVANCED_CONFIG\": ADVANCED_CONFIG,\n \"AUTO_MODE_CONFIG\": AUTO_MODE_CONFIG,\n \"AVAILABLE_MODELS\": AVAILABLE_MODELS,\n }\n\n # 尝试从项目根目录的配置文件加载\n local_config_path = Path(__file__).parent / \"local_config.json\"\n if local_config_path.exists():\n try:\n with open(local_config_path, 'r', encoding='utf-8') as f:\n local_config = json.load(f)\n # 递归合并配置\n for section, values in local_config.items():\n if section in config:\n config[section].update(values)\n except Exception as e:\n print(f\"警告: 加载本地配置文件失败: {e}\")\n\n # 环境变量覆盖(最高优先级)\n if os.getenv(\"GLM_API_KEY\"):\n config[\"API_CONFIG\"][\"api_key\"] = os.getenv(\"GLM_API_KEY\")\n if os.getenv(\"GLM_MODEL\"):\n config[\"API_CONFIG\"][\"model\"] = os.getenv(\"GLM_MODEL\")\n\n return config\n\n\ndef save_local_config(config_section: str, config_values: dict):\n \"\"\"\n 保存本地配置(覆盖默认值)\n\n Args:\n config_section: 配置节名称(如\"ADVANCED_CONFIG\")\n config_values: 要保存的配置值字典\n \"\"\"\n from pathlib import Path\n import json\n\n local_config_path = Path(__file__).parent / \"local_config.json\"\n\n # 加载现有配置\n existing_config = {}\n if local_config_path.exists():\n try:\n with open(local_config_path, 'r', encoding='utf-8') as f:\n existing_config = json.load(f)\n except Exception:\n existing_config = {}\n\n # 更新配置\n existing_config[config_section] = config_values\n\n # 保存\n with open(local_config_path, 'w', encoding='utf-8') as f:\n json.dump(existing_config, f, ensure_ascii=False, indent=2)\n\n print(f\"配置已保存到: {local_config_path}\")\n"}}}}