Files
task_pilot/docs/RELEASE.md
T
CNWei 1914d38451 feat: 本地 uv 与托管 Python 环境管理
- 新增 uv 管理:只认程序目录副本或指定路径,支持从科大镜像下载并按 sha256 校验

- uv 环境变量(UV_*)可配置,默认相对程序目录(python / uv-cache),同时注入 uv 调用与任务进程

- 新增托管虚拟环境与 Python 版本管理:用 uv 下载解释器、预创建环境、查看已装包

- 新建任务保存时自动创建 .venv,运行期只校验、不再自动装依赖;镜像只在装包时使用

- 前端改为顶部品牌栏 + 三栏工作台,uv / 镜像源 / 虚拟环境各自独立弹窗

- 发布包构建后去掉工作区继承的低完整性标签

- 修复调度集成测试并发时误取 skipped 运行的问题
2026-11-07 16:57:27 +08:00

71 lines
3.0 KiB
Markdown
Raw 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.
# TaskPilot Windows 本地版
## 启动
```powershell
.\start.ps1
```
然后访问 <http://127.0.0.1:3000>。
需要自动打开浏览器时:
```powershell
.\start.ps1 -OpenBrowser
```
## 数据目录
- SQLite 数据库:`data/task_pilot.db`(WAL 模式,运行中会额外出现 `-wal`/`-shm` 文件)
- 运行日志:`logs/{task_id}/{run_id}.log`
- 托管虚拟环境:`data/envs/<名称>/`(「虚拟环境」页创建,删除环境就是删掉整个目录)
- uv 下载的 Python 解释器:`python/<版本>/`(`UV_PYTHON_INSTALL_DIR` 默认指这里)
## Python 与 uv
用 uv 创建虚拟环境时,uv 的来源在「Python 环境」页切换(不读系统 PATH):
- 本目录下的 `uv/uv.exe`(默认):没有 uv 时点「下载 uv」,会从科大镜像下载并校验 sha256 后放进来;也可以自己下载后放到这里
- 任意位置的 `uv.exe`:选「指定路径」,保存时会先校验能运行;本机已装 uv 就把它的路径填进来
同一页还能配置 `UV_*` 环境变量(如 `UV_CACHE_DIR`、`UV_PYTHON_INSTALL_DIR`),会注入到每一次 uv 调用。
「下载 uv」依赖 `mirrors.ustc.edu.cn` 可达;离线环境请自己准备 uv 并指定路径。
## 配置
```powershell
$env:TASK_PILOT_PORT = "3000"
$env:TASK_PILOT_DATABASE_URL = "sqlite://data/task_pilot.db"
$env:TASK_PILOT_LOG_DIR = "logs"
$env:TASK_PILOT_LOG_RETENTION_DAYS = "30"
$env:TASK_PILOT_LOG_MAX_TOTAL_MB = "512"
$env:TASK_PILOT_LOG_ENCODING = "auto"
$env:TASK_PILOT_STATIC_DIR = "web"
```
`TASK_PILOT_LOG_ENCODING` 默认 `auto`,会按 UTF-8 → 系统 ANSI 代码页(简体中文为 GBK)的顺序解码子进程输出;日志出现乱码时可显式指定 `gbk` 或 `utf-8`。
单次运行日志上限 5 MiB,单行上限 256 KiB;日志按保留期与总容量清理,正在写入的文件不会被删除。
## 安全边界
- 服务只监听 `127.0.0.1`。
- 浏览器跨站 Origin 会被拒绝。
- 写操作需要运行期随机管理令牌,进程重启后自动更换。
- 请求体上限 2 MiB。
## 离线使用
前端资源、字体(`LXGW WenKai` / `Outfit-Medium`)与所有脚本都随包自带,不需要联网即可打开界面与执行任务。
## 故障排查
- 3000 端口被占用时,通过 `TASK_PILOT_PORT` 修改端口;打包版前端使用同源 API,无需重新构建。
- 页面无法打开时,确认 `web/index.html` 存在。
- 任务未执行时,确认任务已启用、Cron 正确,并在任务表的「调度周期」列查看下次触发时间。
- PowerShell 脚本任务报「不是数字签名」时,是执行策略拦截未签名脚本:在参数里加 `-ExecutionPolicy Bypass`,或对脚本目录执行 `Unblock-File`。
- 进程无法启动时,检查解释器或可执行文件路径、工作目录和执行权限。
- 日志里出现 `����`:改用 UTF-8 输出,或设置 `TASK_PILOT_LOG_ENCODING=gbk`。
- 进程被强杀后,遗留的运行会在下次启动时标记为「已取消(进程重启中断)」,不是数据损坏。