zcbot/windows-node
caoqianming c4ce89afa0 feat(origin): add publication layout controls 2026-08-14 13:32:07 +08:00
..
Zcbot.WindowsNode feat(origin): add publication layout controls 2026-08-14 13:32:07 +08:00
origin-worker feat(origin): add publication layout controls 2026-08-14 13:32:07 +08:00
README.md feat(origin): add publication layout controls 2026-08-14 13:32:07 +08:00
Zcbot.WindowsNode.slnx feat(compute): add Windows Node desktop client 2026-08-12 16:57:06 +08:00
install-windows-node.bat feat(origin): expand supported plot types 2026-08-14 12:16:37 +08:00
package-windows-node.bat refactor(software): introduce capability contracts 2026-08-14 12:55:46 +08:00

README.md

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/心跳和退避重连。Node Host 以语言无关的 job 目录协议负责持久化、下载、恢复、取消和上传,具体软件由 NodeAdapterRegistry 中的 adapter 负责探测、校验和执行adapter 可为 .NET 内置实现,也可由固定 runner 启动任意语言的受信进程。注册能力、配置校验和界面从 registry 与随包发布的 software-contracts/*.json 派生。当前安装包注册 origin.plot@v2,其 adapter 使用 Python Worker 驱动 Origin/OriginPro但 Python 不是 Node 通用协议的一部分。本机任务列表只读取已派发到该 Node 的持久化目录,不查询云端未派发队列;成功产物按 manifest 上传并由云端复核,全部完成后原子发布,中断后按本地 upload-complete.json 幂等续传。

在仓库根目录执行一条命令生成可分发 ZIP

windows-node\package-windows-node.bat

产物位于 windows-node\dist\zcbot-windows-node-<version>-win-x64.zip,旁边同时生成 SHA-256 文件。默认不包含 .NET Runtime目标机器需预装 .NET 10 Desktop Runtime需要免安装 .NET 的离线包时执行 package-windows-node.bat --self-contained。打包脚本是纯 BAT使用 .NET SDK 以及 Windows 自带的 tar.execertutil.exe

固定 Origin Worker 通过统一的 origin.plot@v2 / series[] 数据角色模型支持 linescatterline_scattercolumnbargrouped_columny_errorcontoursurface_3dternaryheatmap,并支持毫米画布、轴范围/尺度/刻度排版、标题、图例及逐系列样式,生成 OPJU、PNG、SVG、PDF、plot spec、provenance 与原子 terminal.json。热图输入必须是完整、等间距且坐标不重复的规则 XYZ 网格。运行时独立于 zcbot 服务端 Python。发布目录包含统一安装入口使用实际运行 Node 的专用 Windows 账号直接双击:

install-windows-node.bat

安装器是纯 BAT不依赖 PowerShell它先通过注册表检测本机软件检测到 Origin/OriginPro 或其 COM 自动化组件时,依次尝试 py -3.12 和 PATH 中的 python.exe,安装 Origin runtime未检测到则明确跳过。最后通过 schtasks.exe 为当前专用账号注册登录后启动任务成功或失败后都会保留窗口。Python 未加入 PATH 时,可在命令提示符执行 install-windows-node.bat "C:\Python312\python.exe"。默认 runtime 位于 %ProgramData%\Zcbot\WindowsNode\runtimes\origin\Scripts\python.exe

注册和运行必须使用同一专用 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红点表示未注册或身份失效黄点表示正在连接绿点表示在线。双击托盘图标打开窗口可在“本机任务”中查看最近 50 条已接收任务及执行详情。每个任务的输出上传诊断日志保存在 %ProgramData%\Zcbot\WindowsNode\jobs\<job-id>\logs\node-output-upload.log,记录阶段、产物文件名、重试次数和 Windows HRESULT,不记录 Node Token 或认证请求头;单文件达到 1 MiB 后轮转一份 .1。无界面运行使用:

Zcbot.WindowsNode.exe run --headless

注册结果仍保存在 %ProgramData%\Zcbot\WindowsNode\node.json,可恢复任务保存在同级 jobs它们不随程序包更新。Token 使用 DPAPI LocalMachine 加密,目录与文件 ACL 只保留注册时的运行账号和 SYSTEM。复制配置到另一台机器不能解密 TokenWindows 重装、运行账号变更或身份丢失时应由管理员禁用旧节点并重新注册。