network
Verified@ai-workbench/network · v0.4.9 · Web UI
安装:本轮0.4.9由编排交付固定tgz;在官方 DSH「插件 → 添加插件」填写固定包绝对路径。工人不执行 npm publish。
Install
dsh plugin add @ai-workbench/network Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
安装:本轮0.4.9由编排交付固定tgz;在官方 DSH「插件 → 添加插件」填写固定包绝对路径。工人不执行 npm publish。
0.4.9 修复断线后下一轮无法重新开始:控制通道不可用时,已有可恢复身份沿原监督流程先停止旧实例再恢复;旧端点关闭失败只记该次诊断,不跨轮阻止同一或替换后的组件重新准备。已排恢复即隔离旧回调,避免迟到在线/退出覆盖监督状态。没有新增设置或业务超时/重试;按owner追加决定删除诊断闸门、主机下载与登录代理,开通未知按下段补救一次。
远程主机网络
开通中断结果未知时,先检查本地持久身份,有则直接使用;无则用原一次性密钥补救一次。原attempted-v1持久记录最多两次N主动交AuthKey,交第二次前原子写入,不因DSH重启清零;旧journal仍绑定原配置与材料源。第二次仍未知时保留原组件的watch/刷新,直到真实在线并确认同一NodeID;未在线的成功状态查询不能清掉本次失败。明确密钥拒绝等终态也不能被迟到的网络错误复活。只有控制面明确auth-key已使用/作废,且本地无可用身份时,才提示「开通链接已失效,请向管理员领取新的。」
主机出口下载和登录代理已按owner删除;登录走员工本机网络,组件下载沿L的官方地址。downloadMaxRedirects/httpMaxResponseHeaderBytes不再是公开设置;旧activate值仅丢弃。私有JSON的proxyListen/httpMaxResponseHeaderBytes仅保留旧journal摘要兼容,不运行、不作运行取值校验或CLI覆盖,新文件不补回零值。
0.4.9 当前为待交付固定版本,由编排统一发布公开 npm;工人不执行 publish。发布前可由官方添加插件入口安装本轮固定主包 tgz 的绝对路径,无需再解析平台依赖。
已有身份由稳定插件服务监督自有 helper。已确认可复用身份的 helper 意外退出或控制通道不可用后,先撤回旧通道和员工执行器、发布 lost,等待旧实例清理完成,再走原私有路径、SHA 校验、ready 和身份确认路径启动新实例。恢复成功发布 restored,由 L 更新连接 epoch;不重放 SSH、模型输入、命令或写文件请求。正常卸载不重启;身份/配置/权限等真实异常保留本次失败。开通未知按owner规则补救,日志异常不阻止连接。已有身份恢复内部启用resumeIdentityOnly,由Go在实际密钥入口拒绝无身份时读取开通材料;旧配置有key引用而已有持久身份时直接用身份、不读或删除未绑定key。这不是员工参数。正常identity实例保存实际读取配置的SHA256,恢复在插件/helper两端对同一读取快照核比;配置变化明确HELPER_RECOVERY_CONFIG_CHANGED,不改指另一身份目录。首次key清理交接后以新identity配置建立摘要。私有stateDir仍由N维护,本轮不新增跨实例NodeID协议,不声称防住整套受保护身份文件被外部替换。
既有三个官方插件管理恢复设置保持不变(基础策略删除两项后为八项):
| 名称 | 未设置时 | 效果 |
|---|---|---|
| helperRecoveryMaxAttempts | 3 次 | 0 关闭;连续恢复耗尽后明确停止,显示原因及员工关闭再启用后的下一轮操作步骤。增大允许更多连续恢复,减小更早停止。 |
| helperRecoveryDelaySeconds | 1 秒 | 每次恢复前等待;增大会延后恢复并减少频繁拉起,减小增加启动开销。 |
| helperRecoveryStableSeconds | 60 秒 | 连续 online 达到此时长才清零失败计数;增大更严格,减小可能把短暂在线当成稳定。 |
本插件显式设置优先于开通方设置;只在缺省时采用上述三项默认,不写回原配置。改活动连接策略须正常重载插件;恢复耗尽后可在网络恢复时关闭再启用网络组件,再发送下一轮,不要求员工重新开通。恢复间隔与稳定时长范围 0.001..2147483.647 秒,次数为 0..Number.MAX_SAFE_INTEGER 的整数;这些是计时器/整数的可表示范围。每次启动、退出和启动进程错误以 HELPER_PROCESS 固定 JSON 追加到原私有 helperLogFile,含时间、PID、实例 ID、退出码、实际信号、预期标记和耗时,不记录命令行、环境、密钥或请求正文。捕获 TERM 后自行 exit 0 的实际信号为 null,不猜作 SIGTERM。真实旧实例清理失败给出本次Need;诊断open/write/close错误或关闭未完成都不阻止恢复/停止,只固定一行本地告警。没有安全日志时stderr用ignore,不进入ready stdout。
插件通过官方 bundle/Cordis 接口提供远程主机网络、设备身份、SSH 通道和员工回连能力。不替换 DSH 服务、布局或默认设置,不增加工作区/登录界面。L 负责可信连接资料导入和登录入口,员工不手填主机、用户名、路径或密钥。没有连接资料时明确说明需要导入,不把插件 Running 当作网络已连接。
主包从0.4.3起完整携带helpers/darwin-arm64和helpers/darwin-x64两架构Go助手,不再声明平台optionalDependencies或下载平台包。运行时只选择本机架构的内嵌文件,严格校验主包与内嵌metadata名称/版本/private/os/cpu、manifest平台/SHA格式,并在启动前验证实际二进制SHA256;缺失、损坏或平台不支持时用中文明确说明需要完整主包并保留原始cause,不使用PATH、旧平台包、另一架构或安装时下载。安装无postinstall/prepare等脚本。两目标分别附实际编译闭包的许可证原文、模块/文件来源与摘要,构建遇缺失声明明确失败。只提供macOS arm64/x64;x64构建/字节检查不等于Intel真机运行验收。
旧0.4.1/0.4.2安装保留的锁/依赖树仍可能触发D16,直接add新主包不是迁移方案;owner已取消产品迁移;测试机的一次remove旧N→add新N整理由编排处理,保留原身份/配置,不把add当清理旧图的替代。本仓不移动员工profile/状态、不要求员工手删锁;公开/api、/cordis及wire apiVersion=1不变。
一个默认 profile 只启用一组 N bundle(网络 runtime 与同包设置伴生行)。独立安装与 L 聚合安装不要重复挂载 N。N 的网络身份按系统用户隔离、持久保存;未知结果按本轮规则优先查持久身份,无身份才用原材料补救一次。公开 aiWorkbenchNetwork.activate(settings, signal)、getActivationState/onActivationState 和通道 API;公开类型入口 /api,Cordis 类型入口 /cordis。active 表示身份恢复与消费交接完成,不等于主机 SSH 或 AI 登录已通过。原六项安装设置仍由可信开通提供;下述策略可在N自己的官方Config独立设置,不要求员工手填路径/身份,不新增数值默认。
本插件设置
当前wire apiVersion仍1;以下保留8项基础数值策略(3项插件策略、5项helper策略),另有上节3项既有组件恢复策略。N官方Config导出这些具名项,不使用新面板或L设置代替。不改变数值默认:N原来没有数值默认,本版仍不注入;未设沿用原开通值,已有自定义值不被覆盖。表中数字为当前L装配值,不是给所有旧配置强改的新默认。
| N Config具名项 | 未设时的来源 / 当前L装配值 | 范围与改值后果 |
|---|---|---|
| startupObservationSeconds | 开通方显式提供 / 35秒 | helper ready观察;增大等更久,减小可能提前未知;无关闭值 |
| shutdownObservationSeconds | 开通方显式提供 / 10秒 | 等自有helper正常退出;增大清理更久,减小可能强制结束并报告;无关闭值 |
| controlResponseMaxBytes | 开通方显式提供 / 65536B | 控制JSON/ready及员工端点桥首帧;增大增内存,减小拒合法帧;无无限值 |
| statusRefreshIntervalSeconds | 原私有配置 / 2秒 | helper刷新与插件状态轮询;增大提示迟,减小开销高;无关闭值 |
| dialTimeoutSeconds | 原私有配置 / 20秒 | TCP/SSH、控制头;增大等更久,减小可能提前中止;无关闭值 |
| headerTimeoutSeconds | 原私有配置 / 10秒 | 本机控制读请求头;增大占连接久,减小拒慢头;无关闭值 |
| enrollmentObservationSeconds | 原私有配置 / 30秒 | 仅首次key入网结果;增大久等,减小更早未知;无关闭值,不用于销毁已有身份 |
| httpMaxHeaderBytes | 原私有配置 / 1048576B | 本机控制请求头与控制响应头;增大增内存,减小拒合法头;无无限值 |
优先级:N官方Config中显式策略 > L.activate的显式同名策略 > 原私有helper配置。旧三项插件策略仍须N或L提供,缺项明确SETTINGS_REQUIRED;五个helper策略可不提供,原值保持。无路径/身份的N策略配置只注册未开通服务,等待L按原合同激活,不自动开通。已激活后同实例改变有效策略仍ACTIVATION_CONFLICT,需官方插件正常重载,不热替换身份/启动同身份第二实例。
五个helper覆盖通过serve --statusRefreshIntervalSeconds <数值>等同名参数白名单传入,只含非秘密数值;L私有文件不写回。helper严格按原始配置校验交接inode/摘要与入网journal,运行实例另用有效策略,不把新数值混入原身份摘要。只有原合同的已确认key清理会移除authKeyFile及精确源key;策略不扩大清理权限。N无需改L即可兼容现有开通,但L展示应说明本插件显式覆盖优先,跨模块请求N-L-VISIBLE-LIMITS-001。
所有超时只为可观测性,触发后提供等待事项、实际已等秒数、具名期限与下一步检查,根因仍未知,不重试/换源/换出口。Node控制的req.setTimeout沿用原阶段空闲计时;远端拨号/SSH和请求头沿用原阶段deadline。到响应头/握手结束即移除该阶段期限,正文和SSH流仍由显式取消/释放/进程退出管理,不增加流总时限。headerTimeout在HTTP handler之前由实际Read超时处记入脱敏私有日志,不记录请求内容/授权参数;主动取消后台读不误报。首次开通到期保留当前失败并按下述一次补救继续原观察;已有身份不套首次窗口。
固定正确性约束不是可任意调大的运行策略:Unix socket≤103字节、端口1..65535、计时器/整数可表示范围、HTTP实现溢出保护、700/600权限、当前UID/单身份、SHA256和SSH主机信任均不可关闭,官方Config总说明及盘点表明确列出。本节旧0.4.2未新增重试;0.4.6新增的三项helper恢复策略见上,不是SSH或模型业务重试。会话寿命未新增上限。D14旧manifest空catch已在0.4.0修复,当前packaged-helper继续返回原始cause,本轮加坏主manifest回归。
开发:Node >=24.13.1、Go 1.27.3、固定 tsnet v1.104.1。运行 npm ci --ignore-scripts --omit=optional、npm test、npm run check、make test、make test-race、make vet,再执行 npm run build。build 显式交叉构建两个 macOS 平台包并编译 TypeScript;Go 参数固定 ts_omit_logtail、禁 VCS 元数据、trimpath、CGO_ENABLED=0。这些是开发命令,员工安装不执行。二进制、manifest 和 NOTICE 副本由构建生成,不提交。
发布准备构建 arm64/x64 内嵌助手,再对唯一主包 pack/dry-run,版本必须一致;固定 tgz、SHA256、文件清单及证据见仓库 docs/evidence/2026-10-21-N-npm/ 和 N 回执。不要把先前单平台 0.4.0 的旧 lib/bin 混入本轮产物。根盘按当前编排规则低于8GiB停;临时 HOME、依赖、日志和构建缓存放自有 Elements APFS,用后精确清理,不删除公共缓存。
完整提供方合同见 Docs/Projects/ai-workbench/contracts/net-helper.md,第三方来源见包内 NOTICE.md。只做中文,既有英文名称保留。官方 DSH 与 HanaMesh 分别验证;不使用 owner 当前实例,GUI 加载门不替代真实入网、登录、对话、物理断网或 leo E 验收。
D20员工端点:0.4.4新增后端 prepareEmployeeEndpoint(request, signal),按当前L本地工作区CAS与真实目录身份取目标;普通N先提供服务,运行时才消费L可选getter。设备SSH从真实OS账户home启动,每工作区的cwd由X逐请求显式指定,不成为路径权限根。L撤回/所有local消失只关闭D20,普通网络不变;一个工作区切换不重建设备。主机经S固定桥回接同一helper内嵌的完整exec/shell/PTY/SFTP端点,员工不开系统Remote Login、不填账户/密码/key。私有持久普通SSH身份在原N stateDir/employee-ssh下,坏身份明确失败、不自动换key,与tailnet入网身份分开。
N从官方后端自行取得OS shell和原umask,经同UID子进程继承交付;L进程/环境对象不进HTTP或网络。exec为账户shell -c,无PTY shell普通启动、PTY为-i,不额外强制login;SSH env仅覆盖该channel,正常初始化由shell处理。会话子执行恢复DSH原umask,私有helper维持077。完整环境只留本机,不复制到主机/renderer/日志。固定S policy逐项消费,无新本地数值默认;N原controlResponseMaxBytes亦约束D20私有控制请求/响应和桥首帧,观察沿原dialTimeoutSeconds,不作为工具运行限时。生产SSH MaxAuthTries显式-1关闭认证次数限制,普通唯一client公钥认证仍必需;加密算法/重协商采用固定x/crypto公开默认。
本包提供N端点与管理能力;两品牌原生工具改道、每RPC撤回、自动工具闭包、真实GUI/TCC/首次员工/leo及Intel实机须各自验收,不能以组件/开发桥验证代替。断线或缺命令完成确认保留UNKNOWN,不自动重连或重放文件/命令。mini原支持节点仍保留;禁止另起同身份N或把它用作D20实验。
管理入口:官方「插件 → 远程主机网络 → ai-workbench-network」组件详情页只读显示三项恢复参数当前Config值、未指定状态及默认/范围/后果。表单输入、保存按钮、POST保存/自定义重载及revision/CAS已删除;值仍可经官方 Config 修改。同包settings伴生行只读公开配置和当前状态,缺服务明确说明,核心联网不依赖本页。未在N指定的值显示由开通方提供及默认值,不把默认数值冒称为实际运行值。HanaMesh管理入口须另验。
员工具体原因投影:L既有断线提示会泛化Need,N自己的同一官方设置页增加“读取时状态”,显示恢复/耗尽的固定Need code/message/needs;不投原始cause/Error,只从可信退出记录格式提取实际exitCode/signal,缺证据明确未知。页面标采样UTC、重新打开可取最新,不冒充实时监控。折叠技术详情只含L公开instanceId/epoch/phase,供只读复核,无控制或重放操作。
缓存身份恢复时,若原journal已绑定且原配置仍含authKeyFile,当前组件虽只使用持久身份、未向tsnet再次交AuthKey,消费回执仍标session:key,直到原配置/材料清理完成后走既有串行identityOnly交接。新身份组件读取清理后配置的SHA,后续恢复核对该SHA;未绑定材料的身份组件不据此清理或交接。
旧probe-packed-enrollment/probe-network-faults探针已退役:其未知结果锁存、固定二进制路径及同PID恢复断言不适用0.4.9。历史证据保留;本轮以受控Node/Go回归提供工程证明,不运行真实入网或主机中断实验。
待交接的缓存身份遇CONTROL时保留当前失败和原watch/刷新,未在线快照不能清错;活组件不被恢复次数耗尽隔离。该组件已退出时按既有恢复策略仅用身份重建、核原SHA。若清理已完成但启动随后失败,则已有合法清理回执仍触发原身份交接,重新读取清理后的SHA,不把H0误用于H1。身份拒绝/权限错误仍不被迟到CONTROL复活。
若原配置H0已去key写成H1,而complete收据尚未到达就退出,恢复只在可信后端内存核对原读取快照:原authKeyFile必须非空、当前必须完全无该属性,其余JSON字段须递归相同;仅额外容许Go既有omitempty省略空proxyListen、零httpMaxResponseHeaderBytes、空host.knownHostsFile,不能改值。只改空白但保留key、把key设空串/null、改变路径/身份/主机/信任/策略均拒绝。该精确去key变化允许以实际H1的SHA传给Go;快照来自与H0同次原字节读取、在运行策略覆盖前保存,getter深复制,不进argv/HTTP/renderer/日志。Go仍核当前读取字节SHA(原核对位置在node锁前),锁内构造继续验证同一配置、有journal时的原/sanitized摘要及已确认NodeID;无journal只复用有效身份,不读取/清理未绑定材料。不声称锁内重读raw SHA或证明每次删除均由N完成。