Files
countbot-ai__countbot/start_dev.py
T
w e3fd9ace50 修复(核心): 编译版本路径和编码问题 + 批量读取优化
主要修复:

1. 统一路径管理 (backend/utils/paths.py)
   - 新增统一路径管理模块
   - 编译版使用 sys.executable 定位 _internal 目录
   - 开发版使用项目根目录
   - 跨平台兼容 (Windows/macOS/Linux)
   - 修改 10 个后端文件使用统一路径

2. Unicode 编码错误修复
   - 启动脚本设置 PYTHONIOENCODING=utf-8
   - logger.py 包装 sys.stderr 为 UTF-8
   - 使用 errors='replace' 避免崩溃

3. 循环导入修复
   - 移除 backend/modules/agent/skills.py 自引用

4. macOS tkinter 线程错误
   - start_desktop.py 检测主线程,非主线程只打印

5. 注释优化
   - 移除冗长说明,保留核心信息

功能优化:

6. 批量文件读取 (backend/modules/tools/filesystem.py)
   - read_file 工具支持 paths 参数批量读取
   - 示例: read_file(paths=['a.py', 'b.py', 'c.md'])
   - 减少工具调用次数,提升效率
   - 上下文构建器提示使用批量读取

7. GitHub 工作流优化 (.github/workflows/build-desktop.yml)
   - 添加 backend.utils.paths 和 logger 隐藏导入
   - 添加 backend.models.personality 隐藏导入
   - 排除无用模块: playwright, pandas, numpy, PyQt, tkinter, torch 等
   - 优化 collect-data 顺序

8. 文档更新
   - requirements.txt: 依赖更新

修改文件统计:
- 新增: 1 个文件 (backend/utils/paths.py)
- 后端: 10 个文件 (路径管理相关)
- 工具: 2 个文件 (filesystem.py, context.py)
- 启动: 3 个脚本 (Windows编码问题)
- 工作流: 1 个文件 (build-desktop.yml)
- 文档: 1 个文件 ( requirements.txt)

测试: macOS 开发环境通过
2026-02-23 14:27:47 +08:00

59 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""
CountBot 应用启动脚本
开发模式启动,支持热重载
"""
import os
import sys
from pathlib import Path
# Windows 平台强制 UTF-8 编码,避免 GBK 编码错误
if sys.platform == "win32":
# Python 3.7+ 支持
os.environ["PYTHONIOENCODING"] = "utf-8"
# 设置控制台代码页为 UTF-8
try:
import ctypes
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleCP(65001)
kernel32.SetConsoleOutputCP(65001)
except Exception:
pass
# 添加项目根目录到 Python 路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
def main():
"""启动应用(开发模式)"""
import uvicorn
from loguru import logger
# 配置
host = os.getenv("HOST", "127.0.0.1")
port = int(os.getenv("PORT", "8000"))
logger.info("=" * 60)
logger.info("CountBot 开发模式启动中...")
logger.info(f"访问地址: http://localhost:{port}")
logger.info("热重载已启用")
logger.info("=" * 60)
# 不自动打开浏览器,用户可以手动访问
# 启动服务器(开发模式)
uvicorn.run(
"backend.app:app",
host=host,
port=port,
reload=True, # 开发模式启用热重载
reload_dirs=["backend"], # 监控 backend 目录
log_level="debug"
)
if __name__ == "__main__":
main()