mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-03 15:53:56 +00:00
fix(webui): 运行态面板不再闪、通道分配带归属(含驻留子)、改图形化
三个用户可见问题,逐个说明根因与改法。 1) 首页「一闪一闪」——运行态每 3s 轮询一次,renderRuntime 无条件重建 #rt-panel 的 innerHTML:数据没变也把整块 DOM(含各级条的 transition) 推倒重来。改法:缓存数据签名(**不含 uptime**——它每秒都变,带上等于没缓存), 签名相同直接 return,一个字节都不动。另:renderOverview 会整块重建 #rt-panel(面板本身是空的),所以那里必须让签名失效,否则空面板填不上。 2) 通道分配只显示内核/根 agent,看不见驻留子——根因是状态面只暴露了设备能力 (KernelStatus.Channels,来自 iom.ListChannels),而「这条输入归谁」是 ChannelRegistry 的属性(InputChannel.Owner/Capacity/Output),从未出过内核。 而登记表本来就是根 agent 与驻留子**共用同一份**,所以数据一直都在,只是没画。 改法:KernelStatus 新增 InputChannels(+ sdk.InputChannelInfo), /api/v1/runtime 带出 input_channels;前端把它按 owner 分进「归属容器」, 驻留子即使一条 inputch 都没划到也照样出现在图里(否则"子存在但看不见" 与"子不存在"无法区分),并显示其 allowed_outputs / 轮次 / 上下文满标记。 3) 「这些信息明明可以图形化」——四级中断的登记/抢占由纯文本改成并排迷你条; 通道分配用归属容器 + 容量滑块(轨道/填充/把手/读数),并把回程通道、 注册插件做成胶囊标签。设备能力拓扑(原有)保留。 验证:go build/vet 干净;go test ./internal/agent/... ./internal/plugin/... ./internal/sdk/... ./cmd/... 全绿;node --check dashboard.js 语法通过。 TestRuntimeEndpoint 扩展为同时钉住 input_channels 的归属与「驻留子划走的那条」。
This commit is contained in:
@ -26,6 +26,9 @@ type KernelStatus = sdk.KernelStatus
|
||||
type PluginInfo = sdk.PluginInfo
|
||||
type ChannelInfo = sdk.ChannelInfo
|
||||
|
||||
// InputChannelInfo 是 inputch 的登记与归属视图(见 internal/sdk/status.go)。
|
||||
type InputChannelInfo = sdk.InputChannelInfo
|
||||
|
||||
// ResidentStatus 是驻留式子 agent 的运行时视图(见 internal/sdk/status.go)。
|
||||
type ResidentStatus = sdk.ResidentStatus
|
||||
type MemoryStatus = sdk.MemoryStatus
|
||||
@ -130,6 +133,18 @@ func collectKernelStatus(
|
||||
for _, ch := range iom.ListChannels() {
|
||||
status.Channels = append(status.Channels, channelInfoFromIO(ch))
|
||||
}
|
||||
// inputch 登记与归属:与 Channels(设备能力)互补——那条回答「能做什么」,
|
||||
// 这条回答「这条输入归谁」。登记表是根 agent 与驻留子共用的,所以驻留子
|
||||
// 划走的 inputch(owner=子 id)也会出现在这里。
|
||||
for _, ic := range iom.InputChannels() {
|
||||
status.InputChannels = append(status.InputChannels, InputChannelInfo{
|
||||
Name: ic.Name,
|
||||
Plugin: ic.Plugin,
|
||||
Owner: ic.Owner,
|
||||
Capacity: ic.Capacity,
|
||||
Output: ic.Output,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Graph memory
|
||||
|
||||
Reference in New Issue
Block a user