文档类型:更新日志 关联软件:FoxAgent 更新于 2026-09-27

更新日志

每个版本改了什么。

← 集成与 API 已是最后一篇 →

每个版本改了什么

V4.3.0(当前版本)

本次为新增官方插件 + 内核基础设施版本:一次性新增 fox.disk(磁盘用量)、fox.screenshot(抓屏)、fox.file(文件读取)、fox.log(日志查看)四个插件,官方插件数由 10 个增至 14 个。为支撑截图 / 文件 / 日志这类大结果,内核新增大对象(blob)通道与插件配置下发两项基础设施;同时解决拦截链 fail-closed 的可用性风险。不含破坏性协议变更,现有 10 个插件版本不变。

新增

  • 内核基础设施:大对象(blob)通道 —— 截图 / 文件内容 / 日志导出动辄数 MB,而内核读插件 stdout 有单行 1MB 上限,塞不进命令返回体
  • 插件经新增的 blob/chunk 通知(无 id)分片上报,内核聚合到临时存储;命令只回 blob_id / size_bytes / mime / sha256 等引用
  • 新增下载端点 GET /blob/{id}(流式返回),鉴权与 /admin/* 完全一致,不接受回环免认证 —— 内容里是屏幕画面与磁盘文件,泄露一次即现场曝光
  • 大对象有 TTL,过期回收;未收齐分片的对象不可下载(404)
  • 协议方法表新增 blob/chunk(见《插件内核设计文档》§6.2)
  • 内核基础设施:插件配置下发(FOX_PLUGIN_CONFIG) —— 插件是独立进程,拿不到内核 config.json
  • config.json 新增 plugins.config(键为插件 ID),内核 spawn 时把对应片段序列化为 FOX_PLUGIN_CONFIG 注入
  • 插件侧由 SDK 的 pluginsdk.PluginConfig(&target) 一次解码;plugin.json 的 env 同名字段优先级最高
  • SDK 同时新增 Emitter.Emit(上报事件)与 Emitter.Upload(分片上传大对象)
  • 官方插件 fox.disk(磁盘用量):会话域 system,新增命令 disk.list 与能力 disk
  • 返回分区用量,并直接给出 alerts(used_percent >= 90 的分区),调用方无需自行算阈值
  • 过滤伪文件系统(squashfs / overlay / tmpfs / devtmpfs / proc / sysfs / cgroup*)与只读挂载(挂载选项含 ro)
  • 字段见《命令协议》§4.13
  • 官方插件 fox.screenshot(抓屏):会话域 user,新增命令 screen.capture 与能力 screenshot
  • 支持多屏(display,-1 = 拼接全部屏幕)、png / jpeg、质量与缩放(scale 0.1–1.0,块平均降采样,仅缩小不放大)
  • 结果为图像引用(含 width / height / display_count),内容经 GET /blob/{id} 下载
  • Windows 走 EnumDisplayMonitors + BitBlt + GetDIBits,并置 SetProcessDpiAwarenessContext(PER_MONITOR_AWARE_V2) 避免高 DPI 拉伸;Linux 按 grim → gnome-screenshot → import 依次探测
  • 字段见《命令协议》§4.14
  • 官方插件 fox.file(文件读取):会话域 system,新增命令 file.list / file.stat / file.read 与能力 file
  • 只读 + 路径白名单(fail-closed):可访问范围由 plugins.config["fox.file"].roots 限定,为空即拒绝一切访问;解析经过「语法归一 → 白名单归属(filepath.Rel 判断,避免同名前缀误判)→ EvalSymlinks → 二次归属校验(防软链接逃逸)」四道闸
  • file.read 内容 ≤512KB 内联返回,超过则走大对象通道;encoding=text 遇非法 UTF-8 报错并提示改用 base64,不静默替换
  • file.stat 仅在文件 ≤16MB 时附带 SHA-256
  • 字段见《命令协议》§4.15
  • 官方插件 fox.log(日志查看):会话域 system,新增命令 log.list / log.tail / log.export 与能力 log
  • 可访问范围由 plugins.config["fox.log"].paths 限定,内核默认指向自身日志目录 <数据目录>/logs,装上即可用
  • log.tail 采用反向分块读取(自文件尾最多回读 8MB),支持 lines(默认 200,上限 2000)与 filter 关键字;log.export 整份导出(上限 60MB)走大对象通道
  • 扫描时跳过的目录在 skipped 中如实列出(空数组也显式出现),避免被误读为「日志已清空」
  • 字段见《命令协议》§4.16
  • 内核配置新增 events 节:intercept_fail_open(默认 false)、breaker_failures、breaker_cooldown_ms

变更

  • 内核版本号由 4.2.0 提升为 4.3.0;现有 10 个插件版本号不变,四个新插件自身版本均为 1.0.0
  • 构建清单由 10 个插件扩为 14 个:build.bat 与 scripts/build_all.sh 的插件列表已同步
  • 拦截链 fail-closed 的可用性风险已缓解(三处改动,见《插件内核设计文档》§6 拦截语义)
  • 熔断:某守卫连续 breaker_failures 次拦截失败(超时 / 协议错误)即进入冷却,冷却期内不再等待超时,由「每条命令卡满 3 秒」变为「快速拒绝」,避免单个守卫故障拖垮整条命令链
  • 可配降级:events.intercept_fail_open=true 时,守卫超时 / 报错 / 熔断期内放行,用于「可用性优先」的现场;默认仍为 false(拒绝)
  • 决策缺口修正:插件返回的 decision 为空串原先被按放行处理,现改为按 intercept_fail_open 决定,杜绝「插件实现不完整导致静默放行」

修复

  • 拦截链决策缺口的静默放行:event/intercept 返回的 decision 为空串时,旧逻辑等同放行;若守卫插件实现不完整或字段拼写有误,安全策略会静默失效。现已改为按 intercept_fail_open 决定(默认拒绝)。

影响说明

  • 向上兼容:现有 10 个插件的命令、参数与返回结构完全不变;内核协议方法表只有新增,无修改
  • 新增端点:GET /blob/{id},需管理级认证(不接受回环免认证)
  • 高危命令清单无新增:本次四个插件的命令全部是只读型(disk.list / screen.capture / file.list / file.stat / file.read / log.list / log.tail / log.export),均不产生系统副作用
  • 代价:fox.file / fox.log / fox.screenshot 将来若新增写型命令(如文件写入 / 删除),必须手工补进 internal/config/config.go 的 defaultHighRiskCommands,漏补即免认证缺口(README 插件表与 fox.file 包注释已注明)
  • 信息暴露面:fox.screenshot 暴露屏幕画面、fox.file / fox.log 暴露磁盘文件内容,敏感度高;三者均依赖命令通道既有认证层(mTLS > HMAC > 令牌)保护,且 fox.file / fox.log 另有路径白名单二次收口
  • fox.screenshot 为 user 域:无人登录时不加载,其能力在 /capabilities 中显示为不可用并给出原因;fox.disk / fox.file / fox.log 为 system 域,服务模式下即可用

V4.2.0

本次为新增官方插件版本:一次性新增 fox.sysinfo(设备信息)、fox.process(进程)、fox.timesync(校时)、fox.notify(桌面提示)四个插件,官方插件数由 6 个增至 10 个。补齐此前仅在资料中承诺、代码尚未实现的「设备信息」能力,并补上进程可见性、经认证的远程校时、自定义桌面提示三处缺口。不含内核协议变更,现有 6 个插件版本不变。

新增

  • 官方插件 fox.sysinfo(设备信息):会话域 system,新增命令 sysinfo.get 与能力 sysinfo
  • 参数:mac(目标机器 MAC,all 表示广播)、item(采集项,取值 os / cpu / memory / disk / network / all,默认 all)
  • 返回:data 为字符串形式的 JSON(参数类型表 ArgSpec 无 object 类型,无法在 schema 中声明嵌套结构),顶层键按 item 裁剪,恒含 agent
  • 字段定义与失败语义见《命令协议》§4.9
  • 官方插件 fox.process(进程):会话域 system,新增命令 process.list / process.kill 与能力 process
  • process.list:按进程名子串过滤、按 memory(降序)/ pid / name 排序、按 top(1–500,默认 50)截断;返回 pid / ppid / name / mem_bytes / exe
  • 刻意不返回命令行与环境变量(常含凭据,如 mysql -p<密码>),也不提供 CPU 占用率(需间隔两次采样,单条查询代价过高)
  • process.kill:force=false 走优雅终止(Linux SIGTERM),true 走强制终止(Linux SIGKILL)
  • 自保护护栏(按序检查):① pid <= 4(Idle/System/init/kthreadd);② 拒绝结束插件自身;③ 拒绝结束内核自身(进程名 foxAgent.exe / foxAgent / fox-agent)。第 3 条是本插件唯一不可省的约束 —— 内核被自己下发的命令杀死后,服务与全部插件同时消失,且任何远程指令都无法再送达,属于不可远程恢复的状态
  • 不设系统关键进程黑名单(详见《命令协议》§4.10)
  • 官方插件 fox.timesync(校时):会话域 system,新增命令 timesync.get / timesync.set 与能力 timesync
  • 补的缺口:原先挂在 UDP 发现通道上的校时因该通道不经认证而被移除,此后无替代。本插件即其「经认证的命令」形态
  • timesync.set 的 dry_run=true 只计算并返回偏差、不改时钟;实际设置支持 Windows SeSystemtimePrivilege(SYSTEM 默认持有但处于禁用状态,会显式 AdjustTokenPrivileges 启用)与 Linux CAP_SYS_TIME
  • 取值范围护栏:目标时间须落在 [2000-01-01, 当前时间 + 10 年],专防毫秒时间戳被当成秒传入 —— 那会让机器跳到 5 万年以后,且设置成功的那一刻不会报错
  • 字段与流程见《命令协议》§4.11
  • 官方插件 fox.notify(桌面提示):会话域 user,新增命令 notify.toast 与能力 notify
  • 参数:title(≤128 字符)、message(≤1024 字符)、level(info / warn / error)、timeout_ms(1000–60000,默认 10000)
  • Windows 走 user32!MessageBoxTimeoutW(不能用 MessageBoxW:后者在用户不点击时永不返回,会把命令循环卡死);Linux 走 notify-send
  • data.shown 表示已成功投递到用户桌面,不代表用户已看到或关闭;为弥补这一限制,下发前会先做一次同步可用性检查(缺 notify-send / 无图形会话 / 非交互式窗口站都会如实报错,而非返回一个骗人的成功)
  • 字段与语义见《命令协议》§4.12
  • 磁盘伪文件系统过滤:disk 列表自动排除 squashfs / overlay / tmpfs / devtmpfs / proc / sysfs / cgroup*,避免 snap 与容器挂载污染设备清单

变更

  • 内核版本号由 4.1.2 提升为 4.2.0,安装包产物为 FoxAgent-Setup-4.2.0.exe;现有 6 个插件版本号不变(仍为 2.1.0),四个新插件自身版本均为 1.0.0
  • 高危命令清单新增三条:process.kill、timesync.set、notify.toast,这三条即使来自回环来源也必须携带令牌或客户端证书
  • 采用精确命令名而非 process.* 这类命名空间通配:三个插件都同时含只读命令,通配会把 process.list / timesync.get 一并升级为高危、违背最小权限
  • 代价:这三个插件将来新增写型命令时,必须手工补进 internal/config/config.go 的 defaultHighRiskCommands,漏补即免认证缺口(README 插件表已注明)
  • 构建工具链要求由 Go 1.23 提升为 Go 1.24:fox.sysinfo 依赖 github.com/shirou/gopsutil/v4 v4.26.8,其 go.mod 声明 go 1.24.0,故本项目 go 指令同步提升;CI 的 GO_VERSION 一并由 1.23.4 调整为 1.24.3
  • 构建清单由 7 个插件扩为 10 个:build.bat 与 scripts/build_all.sh 的插件列表已同步(其余打包脚本用通配遍历,无需改动)

修复

  • 旧配置里的高危命令清单快照会让新增项静默失效:config.json 的 auth.high_risk_commands 一旦非空就整体覆盖代码内置的默认清单,而安装 / 升级不会重写该文件。于是老版本安装写入的旧清单(且是 poweroff / key_tap 这类 4.0 之前的命令名)一直生效,本次新增的 process.kill / timesync.set / notify.toast 以及命名空间通配把守的命令都不受回环免认证拦截。现在内核每次加载配置时都会把默认清单并集合并进显式清单并回写(默认项在前、自定义项保留在后、重复项去重、幂等),无需手工修改配置文件;配置里写空数组也会落回默认清单,不再等于关闭保护。
  • 《命令协议》§4.8 文档与实现不符:该节称 fox.discovery 的 pong 会「按请求方时间戳校准本机时钟」,但该校时功能早已因安全原因从发现通道移除(见 fox-discovery 包注释)。现已改正,并指向替代方案 timesync.set。这是纯文档修正,代码行为未变。

影响说明

  • 向上兼容:现有 6 个插件的命令、参数与返回结构完全不变;内核协议、认证层与会话域判定均无改动
  • 构建环境:自本版本起,本地与 CI 构建均需 Go 1.24 或更高,Go 1.23 及以下无法编译本项目
  • 产物体积:设备信息插件二进制约 4.56 MB(windows/amd64),较其他插件(约 4.0 MB)增加约 0.49 MB
  • 信息暴露面:sysinfo.get 返回主机名、CPU 型号、内存容量、磁盘布局与网卡 IP,信息密度高于其他插件,依赖命令通道既有认证层(mTLS > HMAC > 令牌)保护,未列入高危命令
  • 新增三项高危能力:process.kill(不可逆)、timesync.set(误设会破坏 TLS / Kerberos)、notify.toast(直接干扰正在使用机器的人)。三者均为「副作用型」命令,按同一口径判定 —— 跨站请求虽能发出但读不到响应,只有请求本身即产生后果的命令才需要高危对待
  • fox.notify 为 user 域:无人登录时该插件不加载,其能力在 /capabilities 中显示为不可用并给出原因;用户登录后 2 秒内自动拉起

V4.1.2

本次为服务化启动缺陷修复版本:修复 Windows 系统重启后,部分声明 user 会话域的插件(如剪贴板)未启动的问题;同时修正用户会话可用性判定与取令牌失败的提示文案。不含新增命令,插件版本不变。

修复

  • 重启后 user 域插件未启动:内核以 Windows 服务方式先于用户登录启动时,此前会把声明 user 会话域的插件直接判为「不可用」并放弃加载,导致这类插件(剪贴板 / 键鼠 / 音量 / 屏幕)此后一直不工作。现在改为标记为「等待用户登录」,由内核在用户完成登录后自动启动,无需人工执行 plugin reload。
  • 会话可用性误判:此前只要存在状态为「活动」的会话就认定用户桌面可用,但登录界面(LogonUI)阶段的会话同样是活动会话。现在以能否真正取到该会话的用户令牌为准,未登录时如实判为不可用(G6)。
  • 登录过程中的短暂竞态:用户刚完成登录的瞬间,会话已活动但用户令牌尚未建立,取令牌会短暂失败。现在对该类失败做最多 5 次、间隔 300 毫秒的重试,避免插件恰好在这一瞬间启动失败。
  • 失败原因文案:取用户令牌失败不再一律提示「请确认内核以本机系统账户注册为服务」,而是区分「该会话当前没有已登录用户(停留在登录界面或登录尚未完成)」与「权限不足」两种情况,避免误导致排查方向。

变更

  • 内核版本号由 4.1.1 提升为 4.1.2,安装包产物为 FoxAgent-Setup-4.1.2.exe;插件版本号不变(仍为 2.1.0)
  • 用户会话就绪的检测间隔为 2 秒:用户登录后,等待中的 user 域插件会在 2 秒内被拉起;单个插件连续启动失败达 3 次后停止重试,并把原因留在插件状态里

影响说明

  • 向上兼容:system 会话域插件与前台运行模式(非服务)的行为完全不变
  • 状态文案变化:无可用用户会话时,user 域插件状态显示为「等待用户登录」(此前为「不可用」),用户登录后自动转为「就绪」
  • 可见性:终端若长期无人登录,这类插件会如实保持「等待用户登录」并在插件列表与 /capabilities 中给出原因,不会静默消失

V4.1.1

本次为跨平台加固 + 插件自述文档版本:插件清单新增 platforms 声明,内核在扫描、启动、注册三个环节校验平台,避免在 Windows / Linux 之间误装、误跑;同时命令新增 usage 用法声明,/admin/commands 兼作插件文档接口。不含 macOS 支持。

新增

  • 插件清单 platforms 字段:plugin.json 可声明插件支持的操作系统,取值仅 windows / linux
  • 缺省表示不限平台,存量插件行为不变
  • 声明后内核在扫描阶段即判定平台不符,直接标记为「不可用」并跳过,不再拉起进程
  • 取值非法(如 darwin / macos / 拼写错误)时清单判为不合法,插件不加载
  • 三道平台校验:
校验点 时机 触发条件 结果
取值合法性 扫描清单 platforms 含 windows / linux 之外的值 清单不合法,插件不加载
平台预判 扫描清单、启动之前 声明了 platforms 且不含当前系统 状态「不可用」,原因注明声明平台与当前平台
平台一致性 plugin/register 清单声明与插件自报的平台集合不同 返回 -32602,终止插件进程
  • 命令用法声明 usage:插件可在 manifest.commands[] 中为每条命令声明单行调用示例(如 volume.set mac=all value=35)
  • 与原有的 desc(命令做什么)共同构成命令的自述文档,由插件在 plugin/register 时上报
  • 内核原样透出到 GET /admin/commands,使该端点同时充当插件文档接口:控制台「功能测试」页据此动态说明每条命令的作用与用法,第三方也可据此生成调用代码
  • 8 个插件的 21 条命令均补齐 usage;无内核侧硬编码的第二份说明

变更

  • 6 个官方插件与 2 个示例插件的 plugin.json 补齐 "platforms": ["windows", "linux"],与插件代码内 pluginsdk.Plugin.Platforms 保持一致
  • 平台判定逻辑收敛到 internal/proto 单处实现(PlatformMatches / PlatformSetEqual / IsSupportedPlatform),内核各层不再各写一份
  • 内核版本号由 4.1.0 提升为 4.1.1,安装包产物为 FoxAgent-Setup-4.1.1.exe;插件版本号不变(仍为 2.1.0)

影响说明

  • 向上兼容:未声明 platforms 的插件(含存量第三方插件)行为与之前完全一致,仍按「不限平台」处理
  • 须留意:清单一旦声明 platforms,插件代码内的 Platforms 必须是同一集合(忽略顺序与大小写),否则注册会被拒绝
  • 向上兼容(命令文档):未声明 usage 的插件(含存量第三方插件)不受影响,/admin/commands 中该字段自动省略,其余字段与之前一致
  • 本版本不引入 macOS 支持:内核与官方插件仍只构建、只验证 Windows 与 Linux

V4.1.0

本次为能力扩展版本:6 个官方插件新增 13 条命令、4 条命令增强,并把 fox-input 的键鼠命令统一为三段式命名;命令总数由 14 条增至 27 条。

新增

电源(fox.power) - power.abort:取消已计划但尚未执行的关机 / 重启 - power.uptime:查询系统运行时长与开机时间 - power.suspend:进入睡眠或休眠(mode 选 sleep / hibernate)

键鼠(fox.input) - input.key.hold:按住指定按键一段时间后松开(可带修饰键) - input.mouse.move_relative:相对当前位置移动鼠标 - input.mouse.drag:从起点拖拽到终点 - input.cursor:查询当前光标位置 - input.screen_size:查询主显示器分辨率

音量(fox.volume) - volume.up / volume.down:在当前音量基础上增减(step 默认 5)

屏幕(fox.screen) - screen.lock:锁定当前会话(保持登录,需重新输入凭据解锁)

剪贴板(fox.clipboard) - clipboard.clear:清空剪贴板内容 - clipboard.format:探测剪贴板当前包含的数据格式

发现(fox.discovery) - pong 应答增补 6 个只读字段:hostname、os、arch、kernel_version、protocol_version、uptime_seconds,让上位机在发现阶段即可拿到设备画像

变更

  • 命令命名调整(破坏性):fox-input 的键鼠命令统一为「命名空间.对象.动作」三段式,与新增命令保持对称: | 旧名 | 新名 | |---|---| | input.tap | input.key.tap | | input.type | input.key.type | | input.move | input.mouse.move | | input.click | input.mouse.click | | input.scroll | input.mouse.scroll |
  • 命令增强:
  • power.off / power.reboot 新增 delay(0-600 秒)与 message(关机前提示文案)参数,可给用户留出保存时间
  • input.mouse.click 新增 count 参数(1-3,支持双击 / 三击)
  • input.mouse.scroll 新增 horizontal 参数(水平滚动)
  • volume.mute 的 value(0/1) 参数改为 mode(on/off/toggle,默认 toggle),并回读实际生效状态
  • 6 个官方插件版本号由 2.0.0 提升为 2.1.0;内核版本号由 4.0.0 提升为 4.1.0,安装包产物为 FoxAgent-Setup-4.1.0.exe

影响说明

  • 命令名变更为破坏性改动:调用方需把 input.tap 之类替换为 input.key.tap;volume.mute 的调用方需把 value 改为 mode
  • 新增命令全部落在已有的高危命名空间(power.* / screen.* / input.* / clipboard.*)内,鉴权口径无需调整,新增命令自动继承高危属性
  • 本次未提供裸的「按下 / 抬起」分离命令(key.down / key.up):这类命令一旦调用方漏发抬起事件会让目标机输入永久卡住,故只用带时长的 input.key.hold 表达「长按」

V4.0.0

本次为架构规范化版本:插件运行时的健壮性、资源占用与命令命名三方面统一收敛。

新增

  • 插件空闲回收:声明 lazy: true 的插件(音量 / 屏幕 / 剪贴板)在连续 plugins.idle_ms(默认 5 分钟)无命令调用后自动回收其进程,状态转为 Stopped;下次调用其命令时自动唤醒,命令声明与能力清单始终可见。声明了事件订阅 / 处理(subscribes / handles)的插件与 lazy: false 的插件不参与回收
  • 高危命令前缀通配:auth.high_risk_commands 现支持 命名空间.* 形式(如 input.*),一次声明即覆盖该命名空间下的全部命令,插件后续新增命令自动继承高危属性,不再依赖人工逐条补名

变更

  • 命令命名空间化(破坏性):官方插件命令由下划线风格改为「命名空间.动作」两段式,命名空间与插件单一职责一一对应:
  • fox.power:poweroff → power.off、reboot → power.reboot
  • fox.screen:screen_off → screen.off、screen_on → screen.on
  • fox.volume:volume_get → volume.get、volume_set → volume.set、volume_mute → volume.mute
  • fox.input:key_tap → input.tap、key_type → input.type、mouse_move → input.move、mouse_click → input.click、mouse_scroll → input.scroll
  • fox.clipboard:clipboard_write → clipboard.write、clipboard_read → clipboard.read
  • 插件版本号:6 个官方插件由 1.0.0 提升为 2.0.0
  • 内核版本号由 3.0.1 提升为 4.0.0,安装包产物为 FoxAgent-Setup-4.0.0.exe

修复

  • 插件回调(命令处理 / 事件处理 / 能力探测)增加统一 panic 保护:单个插件崩溃不再拖垮内核进程,崩溃被隔离并如实上报

影响说明

  • 命令名变更为破坏性改动:调用方(上层系统 / 脚本 / 集成)需把旧的 volume_set 之类替换为新名 volume.set;参数、响应结构与认证口径均无变化
  • 空闲回收对调用方透明:被回收的插件仍出现在 /capabilities 与 /admin/commands 中并标注为可用,命令到达时内核自动拉起,无需预热

V3.0.1

本次为能力补全版:把内核从「前台常驻程序」升级为「系统服务托管」,并首次提供本机 Web 控制台。

新增

  • Windows 服务化托管:安装包会自动注册并启动系统服务 FoxAgent(显示名「Fox Agent 内核」,启动类型「自动」),随开机自启、无需用户登录,异常退出由 SCM 按恢复策略自动重启
  • 服务管理命令:fox-agent service install / uninstall / start / stop / status(status 无需管理员权限)
  • 跨会话能力注入:内核以服务(Session 0)运行时,会把 user 会话域的插件(音量 / 屏幕 / 键鼠 / 剪贴板)创建到当前登录用户的会话中,服务态下这些能力依然可用;仅在无人登录时不可用
  • Web 控制台:http://127.0.0.1:42101/console/,go:embed 编入单文件、与 HTTP 传输层共用 42101 端口,不新增进程与端口;含状态概览、插件管理(启停 / 启禁用 / 探测 / 卸载 / 上传安装)、能力清单,以及按参数 schema 自动渲染表单的「功能测试」
  • 新增管理端点:GET /admin/status(运行状态汇总)、GET /admin/commands(命令清单,含参数与结果 schema)、POST /admin/plugins/install、POST /admin/plugins/remove、POST /admin/plugins/enable、POST /admin/plugins/disable

修复

  • 剪贴板为空时 clipboard.read 误报「读取剪贴板失败」(底层把未设置的错误码 0 当作错误)
  • 启动日志中插件路径权限校验误报「上级目录权限偏宽」(校验上溯到盘根所致)
  • 品牌资源生成脚本引用了已删除的目录,导致打包资源无法生成

变更

  • 安装行为变化:Windows 安装包会注册系统服务,并清除旧版本写入的当前用户开机启动项,避免两者的进程争抢 42101 端口;升级安装无需手工干预
  • 鉴权口径明确:命令端点仍对回环来源免认证(高危命令例外),管理端点(/admin/*)一律要求令牌或证书,不接受回环免认证
  • 版本号由 3.0.0 提升为 3.0.1,安装包产物为 FoxAgent-Setup-3.0.1.exe
  • Linux 侧仍为前台模式,未自动启用 systemd 服务

影响说明

  • 交互类命令(音量 / 屏幕 / 键鼠 / 剪贴板)的可用条件由「内核以登录态前台运行」改为「终端有用户登录会话」;服务态本身已支持这些能力
  • 命令行与网络接口的命令名、参数、响应结构无变化,存量集成无需改造
  • 通过脚本手工配置过「开机自启项」的环境,升级后该自启项会被清理,改由系统服务托管

升级方法

  • 覆盖安装:重新以管理员身份运行安装包即可,安装程序会注册服务并清理旧自启项。
  • 配置文件与令牌位于数据目录(Windows %ProgramData%FoxAgent),卸载不删除,升级后认证信息保留。
  • 升级后建议打开 /console/ 或访问 /capabilities 复核插件是否全部加载。

V3.0.0

基线版本:本版本为 FoxAgent 的首次正式版本记录。以下内容依据本版本源码(internal/version 默认 3.0.0-dev,打包版本 3.0.0)整理。

新增

  • 全新「薄内核 + 全外置插件」架构:内核只负责协议、进程、路由、校验、事件五件事
  • 6 个官方插件:fox.power、fox.volume、fox.screen、fox.input、fox.clipboard、fox.discovery
  • 三种等价传输层:HTTP 42101 / TCP 42102 / UDP 42103,共用同一命令契约
  • 应用层 HMAC 签名认证(HTTP / TCP / UDP 通用),含防重放与时间窗校验
  • mTLS 客户端证书认证(HTTP / TCP),支持自签证书自动生成
  • 回环免认证 + 高危命令强制认证
  • 能力自描述:/capabilities 完全由已注册插件派生
  • 设备发现协议(UDP,自动排除虚拟网卡)
  • 插件管理命令行:install / remove / enable / disable / start / stop / reload / doctor
  • 通用插件 SDK(pkg/pluginsdk),支持 Go / Python / 任意语言接入
  • 标准安装包:NSIS 单文件安装包(Windows)与 deb 包(Linux)

变更

  • 端口由旧版 ifu Agent 的 42000–42002 调整为 42101–42103(两者不冲突,可并行部署)
  • 授权模型由「MAC 即凭据」改为「独立 Token / 证书 / 签名」,MAC 降级为纯寻址标识
  • 能力清单由「固定 6 项」改为「按已注册插件派生」

修复

  • 无(基线版本)

影响说明

  • 命令名、参数名、响应结构与旧版保持一致,存量客户端无需改造;仅需把目标端口改为 42101–42103,并补充认证材料。
  • 首次安装后需获取访问令牌(config.json 的 auth.token)或配置 HMAC / mTLS,非回环调用方可正常控制。

升级方法

  • 覆盖安装:重新运行安装包即可,安装程序会先结束运行中的内核再替换文件。
  • 配置文件与令牌位于数据目录(Windows %ProgramData%FoxAgent),卸载不删除,升级后认证信息保留。
  • 升级后建议访问 /capabilities 复核插件是否全部加载。

模板(后续版本按此追加)

## V<主>.<次>.<修订>(YYYY-MM-DD)

### 新增
- …

### 修复
- …

### 变更
- …

### 影响说明
- 本版升级后需要调整的配置 / 接口变化

### 升级方法
- 覆盖升级 / 重新安装
← 上一篇集成与 API 已是最后一篇—

文档解决不了的,直接问我们

把现场条件和使用场景说清楚,我们的工程师会给出明确结论,而不是只发一份资料链接。