2.8 KiB
zcbot Windows Node
内网 MVP 的 Windows 执行节点,目标运行环境为 Windows 11 Enterprise + .NET 10 SDK 10.0.303。仓库根目录 global.json 固定 SDK patch;客户端只使用 .NET Windows Desktop Framework,不依赖第三方 NuGet 包。
当前实现托盘状态角标、小型配置窗口、注册、DPAPI/ACL 配置保存、WebSocket hello/心跳和退避重连,并只读探测 Origin/OriginPro 安装版本、COM 自动化组件与桌面会话状态。Node 可以接收受控的 origin.plot@v1 offer,在本机任务目录原子保存请求后回报 accept/reject;随后以 Node 身份流式下载任务绑定的 CSV/XLSX/JSON,校验大小与 SHA-256 后原子保存。固定 Origin Worker 独立于单次 WebSocket 执行,断线不终止已启动绘图。成功产物按 manifest 逐项流式上传并由云端复核大小与 SHA-256,全部完成后原子发布到任务工作目录的 origin/<job_id>/;中断后按本地 upload-complete.json 幂等续传。
固定 Origin Worker 已支持 line、scatter 和 line_scatter,生成 OPJU、PNG、SVG、PDF、plot spec、provenance 与原子 terminal.json。运行时独立于 zcbot 服务端 Python,管理员执行:
.\install-origin-runtime.ps1 -BootstrapPython D:\programs\Python312\python.exe
默认安装到 %ProgramData%\Zcbot\WindowsNode\runtimes\origin\python.exe;也可由管理员用绝对路径环境变量 ZCBOT_ORIGIN_PYTHON 指向固定解释器。任务请求不能指定解释器、脚本或路径。
注册和运行必须使用同一专用 Windows 账号。MVP 通过该账号的登录后计划任务自动启动,不以 Windows Service 在 Session 0 运行。
dotnet build windows-node/Zcbot.WindowsNode/Zcbot.WindowsNode.csproj
windows-node/Zcbot.WindowsNode/bin/Debug/net10.0-windows/Zcbot.WindowsNode.exe enroll `
--server http://zcbot.internal:8765 `
--name win-origin-01 `
--code ZCN-...
windows-node/Zcbot.WindowsNode/bin/Debug/net10.0-windows/Zcbot.WindowsNode.exe
直接双击 EXE 默认启动托盘 UI;红点表示未注册或身份失效,黄点表示正在连接,绿点表示在线。双击托盘图标打开配置窗口。无界面运行使用:
Zcbot.WindowsNode.exe run --headless
确认前台连接正常后,为当前专用账号注册登录后启动任务:
windows-node/install-startup.ps1 `
-ExecutablePath windows-node/Zcbot.WindowsNode/bin/Debug/net10.0-windows/Zcbot.WindowsNode.exe
注册结果保存在 %ProgramData%\Zcbot\WindowsNode\node.json。Token 使用 DPAPI LocalMachine 加密,目录与文件 ACL 只保留注册时的运行账号和 SYSTEM。复制配置到另一台机器不能解密 Token;Windows 重装、运行账号变更或身份丢失时应由管理员禁用旧节点并重新注册。