Kun 扩展面板与主 Agent 协调机制:基于 Workspace 作用域工具、乐观修订与有界事件的安全协作模型
人工智能AI Agent自主智能体桌面应用MCP Clients【免费下载链接】KunLocal-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI.项目地址https://gitcode.com/gh_mirrors/de/Kun点击查看免费下载本文聚焦 Kun 开源仓库中「扩展面板与主 Agent 协调Extension–Agent Panel Coordination」这一设计主题在 Kun 将扩展 UI 收敛为views.rightSidebar侧边栏面板、并把主对话保留为唯一 Agent 操作面的背景下主 Kun Agent 与打开的扩展面板之间如何通过扩展注册的认证工具 workspace 作用域状态 有界项目变更事件完成项目编辑、状态同步与竞态防护而绝不共享渲染器内部状态或私有 IPC。读完本文你将掌握活动项目指针的读写约定、乐观修订optimistic revision的冲突拒绝语义、按 workspace 隔离 Host/工具/事件的实现要点以及只读轮询与破坏性取消的工具分类规则并能以仓库内置的 Kun Video Editor 为参照实现自己的协调型扩展。一、设计背景从聚合启动器到IDE 工具窗格模型Kun 在本次右侧边栏重设计之前扩展 UI 通过一个聚合启动器aggregate launcher混排多种占位模型扩展面板与主 Agent 之间缺乏清晰、可审计的协作通道。重设计的核心方向是把扩展 UI 收敛为类似 IDE 工具窗格的形态扩展声明一个views.rightSidebar视图与自己的图标Kun 在代码模式右侧垂直工具栏渲染该图标点击后在与主对话相邻的独立标签页中打开隔离视图详见 extension-right-sidebar-navigation 规格。在这个模型下主 Agent 与面板的协作遵循一条明确边界——extension-agent-panel-coordination 规格 原文规定扩展面板与主 Kun Agent 必须通过扩展的已认证、schema 校验通过的工具表面以及workspace 作用域的扩展状态进行协调Kun 不得将主渲染器 React 状态、会话对话 DOM、运行时凭据或私有 guest IPC 暴露为协调机制。这意味着协调契约由三部分组成缺一不可工具表面Tool Surface扩展注册的、声明了输入/输出 Schema 与副作用级别的工具工作区状态Workspace State存放在扩展 workspace 命名空间内的活动项目指针等状态有界事件Bounded Events项目变更后发布的可归属、有边界的 workspace 事件。对照 proposal.md 中的拒绝项可以看到设计团队曾评估过向每次提示注入面板状态的 renderer context-provider API方案最终因会扩大稳定提示面、加剧缓存抖动和跨层授权而否决改为显式工具调用因为工具调用是可审计且修订安全的。二、活动项目指针显式、workspace 作用域、绝不猜测协调的第一步是让主 Agent 知道面板当前打开的是哪个项目。规格要求支持 Agent–面板协调的扩展必须暴露一个用于解析活动面板资源的显式工具操作。该指针只能存储在扩展的 workspace 命名空间内使用前必须校验且必须返回显式的空或过期结果而不是猜测。2.1 指针的写入面板打开项目时记录当用户在面板中打开或创建项目扩展需将该项目记录为当前可信 workspace 的活动项目。在参考实现 kun-video-editor 中video-tools-project.ts的selectActiveProject通过context.storage.workspace.set(ACTIVE_PROJECT_KEY, ...)写入带schemaVersion: 1的指针记录并同时通过ui.postMessage发布kun-video-editor.project-changed消息见 video-tools-project.ts。该消息携带projectId、activeProjectId、previousProjectId、revision、generation、sequenceId、selectionGeneration、reason、transition、source等字段为后续面板刷新提供完整依据。2.2 指针的读取显式的空/过期结果video-project工具的active操作是读取路径。源码展示了三种显式结果video-tools-project.tsno-active-project存储中没有任何指针记录时返回绝不替用户随便挑一个项目stale-active-project已清除指针记录存在但 schema 版本不符、projectId 非法或项目已无法加载时扩展会先删除无效指针再返回过期结果active校验通过后返回当前项目的投影projection与currentRevision。这种显式结果优先于猜测的设计避免了 Agent 在指针失效时对不存在的项目盲目操作。三、乐观修订Agent 编辑的并发安全基础3.1 expectedRevision每次变更都声明预期修订规格中的两个场景定义了修订语义Agent 编辑面板的活动项目Agent 解析活动项目并用**其预期修订expected revision**调用受权的变更工具扩展通过面板使用的同一ProjectService提交修订并发布有界项目变更事件Agent 尝试过期编辑当 Agent 使用比面板当前项目修订更旧的修订调用变更时工具必须以当前修订拒绝该变更面板与 Agent 应能刷新而不做隐式合并。在参考实现中所有写型视频工具如video-update-timeline、video-probe、video-transcribe的输入 Schema 都要求projectId与expectedRevision整数、最小值 0参见 tool-contracts.ts。而 project-service.ts 的saveProjectWithReceipt会先assertExpectedRevision(current, expectedRevision)修订不符时抛出revision_conflict错误——绝不静默合并而是把expectedRevision与currentRevision一并返回给调用方让 Agent 重新读取后再决策。3.2 修订与选择代际generation双重校验除了项目修订参考实现还维护selection.generation与eventGeneration见 project-service.ts。updateSelection同时校验expectedRevision与expectedGeneration任一不符即抛出revision_conflict或 selection generation 冲突。这保证了 Agent 的操作不仅修订新鲜而且不会覆盖面板用户刚做出的选择变更。3.3 变更的可追溯性Mutation ReceiptsaveProjectWithReceipt中的 Receipt 是每次提交返回的变更凭据操作列表、逆操作、摘要、attribution 等Agent 每次编辑后必须消费该凭据并刷新标识符参考 agentProfiles.video-editor.instructions。这为可归属的 workspace 事件提供了数据基础——事件中的source字段可区分agent来源与手动来源。四、有界项目变更事件面板如何观察 Agent 发起的变更4.1 事件发布与刷新路径规格要求Agent 工具提交新修订后显示该项目的打开面板必须收到有界项目变更事件并重新加载该修订且不读取对话内容。参考实现的消息通道是kun-video-editor.project-changed主动画变更时同时发布active-project-changed。Webview 侧在 controller-effects.ts 订阅该通道收到事件后dispatch({ type: project-change, value: change })若事件针对当前面板项目或属于活动项目变更则调用loadProject(change.projectId)重新拉取权威状态。面板绝不会去读主对话的 DOM 或 React 状态。4.2 迟到的响应不得覆盖新选择加载代际generation规格强调活动项目变更具有权威性、可归属且竞态安全。实现上Webview 维护activeProjectResolutionGeneration与projectLoadGeneration等递增计数器每次active-project-changed事件都会使代际 1旧代际的迟到异步响应到达时会被丢弃无法把面板闪回到更早的项目选择。项目切换时还会释放旧媒体租约、清理或过滤旧项目的脚本、媒体、作业与产物规格 Project-scoped panel state never leaks across selections 的要求。4.3 面板中的同步状态展示参考实现用一个紧凑的 Agent-sync 面板替代了原先内嵌的第二个私有 Agent 对话界面见 app-timeline-panels.tsx展示当前活动项目名、r{currentRevision}修订徽标、最近一次同步的来源与修订以及aria-live的同步状态提示。它向用户传达主对话才是编辑入口这一设计立场而不是在面板内再造一个聊天室。五、Workspace 所有权隔离Host、工具与视图事件的三重隔离5.1 工具注册按 workspace 作用域键控规格要求workspace 作用域的扩展 Host 及其注册的 Agent 工具只能被激活它们的 workspace 发现与调用另一个 workspace 的激活失败或挂起不得复用第一个 workspace 的注册或存储。在 Kun 运行时工具注册以规范化 workspace 归属为键ExtensionToolRegistry使用scopedRegistrationKey(canonicalToolId, principal.workspaceRoots)管理注册同一规范工具 ID 在不同 workspace 作用域下可各自持有一份注册发现与调用都要求调用方的 workspace 与注册归属匹配registrationOwnsWorkspace、registrationForWorkspace不匹配时直接拒绝见 extension-tool-provider.ts。其测试用例discovers and invokes one independently registered handler per workspace覆盖了三个 workspace 场景验证 workspace C 无法看到 A/B 的注册见 extension-tool-provider.test.ts。5.2 视图事件按扩展身份 workspace 作用域双重路由ExtensionViewSessionService的publish逻辑先匹配extensionId再用viewSessionMatchesWorkspace/viewSessionMatchesWorkspaceKey匹配 workspace 作用域见 extension-view-session-service-core.ts。两个 workspace 各开一个视频面板时A 的 Host 发布项目变更只有 A 的 View Session 能收到B 完全不受影响。对应回归测试见 extension-view-session-service.test.ts其中明确断言 workspace B 的会话事件列表为空。5.3 激活失败必须 fail closed规格特别强调某 workspace 的 Host 无法激活时另一个 workspace 遗留的陈旧工具注册必须从该 Agent 的工具目录中缺席并在调用时被拒绝。这与可发现且仅可调用于激活它的 workspace的原则一致防止后台 Agent 会话或直接运行时工具执行跨越 workspace 边界design.md 决策 9 明确否决了保留单一全局 Host、仅在渲染器层隐藏工具的备选方案。六、只读轮询与破坏性取消分离审批模型的边界规格最后一条要求只读的渲染状态查询必须是独立的、无副作用的工具操作与渲染取消分开取消必须保留显式的副作用元数据与审批行为。参考实现的video-render-status工具声明sideEffects: read、idempotent: true而video-render-cancel声明sideEffects: destructive、idempotent: false见 tool-contracts.ts。同理还有video-analysis-statusread与video-analysis-canceldestructive、video-interchange-statusread与video-interchange-canceldestructive等成对工具。这样设计的直接收益是Agent 反复轮询导出进度时不会触发破坏性审批弹窗而一旦发起取消系统仍按完整副作用审批流程处理。规格原文对此的表述是轮询不应训练用户去批准破坏性权限。在 Agent 指令中也有对应约束导出时用只读的video-render-status轮询持久化作业仅在用户明确要求取消时才调用video-render-cancel见 contributions.json 中 agentProfiles 指令。七、参考实现全景Kun Video Editor 如何落地协调契约整个协调模型在仓库内置的 Kun Video Editorkun-examples.kun-video-editor中端到端落地可当作第三方扩展的范本7.1 清单侧声明视图、权限与 Agent Profilemetadata.json 声明views.rightSidebar的editor视图、storage.workspace、workspace.read/write、media.*、jobs.manage等最小权限集contributions.json 声明 26 个video-*工具及其allowedTools、budget并把主 Agent 编辑流程固化在agentProfiles.video-editor.instructions中——其要点正是本规格的落地先video-project解析活动项目、按expectedRevision读取/变更、把修订冲突视为刷新信号而非合并机会、用只读状态工具轮询。7.2 Host 侧工具分发与事件发布VideoEditorTools.register()遍历VIDEO_TOOL_DECLARATIONS逐个注册工具video-tools.tsinvoke按工具 ID 分发给video-tools-*.ts中对应的实现editor-request命令则是面板 Webview 走认证 RPC 调用的私有通道见 extension.ts。7.3 Webview 侧订阅有界事件、按代际加载面板通过controller-effects.ts订阅project-changed/active-project-changed/selection-changed/derived-changed等通道完成增量刷新配合代际计数防御竞态并在AgentSyncPanel中呈现同步状态见前述引用。7.4 事件的作用域校验与发布来源Host 发布事件统一走context.ui.postMessage最终由 Kun 运行时的 View Session 服务按扩展身份 workspace 作用域路由见第五节。source: agent | manual归属字段让面板可以区分Agent 改的与用户自己改的这也是规格要求的可归属attributable语义。八、给扩展作者的协调契约清单对照规格与参考实现编写一个支持 Agent–面板协调的views.rightSidebar扩展时需要满足以下可验证条件协调通道只走工具 workspace 状态 有界事件不请求访问主渲染器 React 状态、对话 DOM、运行时凭据或私有 guest IPCmanifest 中不声明超出需要的权限参考实现仅声明storage.workspace与workspace.read/write等。提供显式的活动资源解析工具无活动项目时返回no-active-project之类显式结果指针过期时返回stale-*结果并清理绝不随意选一个项目代替用户决策。所有写型工具强制expectedRevision校验冲突时返回当前修订并拒绝明确提示刷新而非合并面板与 Agent 均从权威ProjectService读取。变更后发布有界、可归属的项目事件事件包含项目 ID、修订、代际与来源打开的面板订阅事件并从权威状态刷新而不是读取对话内容。按 workspace 隔离 Host、工具与视图事件注册、发现、调用、事件路由均以规范化 workspace 作用域为键激活失败 fail closed。把只读查询与破坏性操作拆成不同工具轮询用sideEffects: read的工具取消用sideEffects: destructive的工具并保留审批。九、验证与测试依据本规格对应的实现与回归测试在仓库中均可复现工具作用域隔离extension-tool-provider.test.ts多 workspace 独立注册/调用视图事件隔离extension-view-session-service.test.ts按 workspace 路由消息、按 workspace 撤销会话修订冲突语义project-service.test.ts 与 video-tools.test.ts面板事件订阅与竞态webview-controller-projects.tsx 与 webview-controller.test.tsx整体迁移与验证任务清单见 tasks.md全部勾选完成覆盖活动项目指针权威化、事件路由隔离、只读/破坏性工具拆分等条目。这套工具 workspace 状态 有界事件的协调模型为 Kun 生态中的扩展同时提供了可审计性、并发安全与多工作区隔离主 Agent 与扩展面板共享同一份 workspace 作用域的项目事实却互不窥探对方的内部实现——这正是 IDE 工具窗格式扩展协作的正确打开方式。赞分享人工智能AI Agent自主智能体桌面应用MCP Clients【免费下载链接】KunLocal-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI.项目地址https://gitcode.com/gh_mirrors/de/Kun点击查看免费下载相关推荐Kun PPT基于 Kun 扩展 API v1 的人机协作演示文稿工作区实现解析Kun PPT基于 Kun 扩展 API v1 的人机协作演示文稿工作区实现解析 Kun 已经能够通过受管的 PPT Master 工作流生成原生 PPTX人工智能AI Agent自主智能体桌面应用MCP ClientsGopeed项目浏览器扩展与桌面端协同工作机制解析Gopeed项目浏览器扩展与桌面端协同工作机制解析 Gopeed作为一款优秀的下载管理工具其浏览器扩展与桌面客户端的协同工作能力一直是开发者关注的重点。近期有网络CLI后端Kun 扩展平台架构与边界单 Agent Runtime 之上的安全扩展模型Kun 扩展平台架构与边界单 Agent Runtime 之上的安全扩展模型 本文以 docs/extensions/architecture.md http人工智能AI Agent自主智能体桌面应用MCP Clients创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Widevine L3 Guesser并行分片改造:DRM安全测试中的密钥签名熵评估

Widevine L3 Guesser并行分片改造:DRM安全测试中的密钥签名熵评估

简介:这是一款面向DRM研究与流媒体前端分析人员的Widevine L3密钥获取/解密扩展工具,基于JavaScript编写,源自nilaoda的改造版本。资源在原有基础上移除了硬编码的base64密钥条目,改为下载生成keys.json文件,便于在自定…

2026/10/12 8:41:26 阅读更多 →
无需验证码三网话费余额查询:HTML源码+接口解析

无需验证码三网话费余额查询:HTML源码+接口解析

简介:面向网站站长、个人开发者和有自助查询需求的用户,这份源码无需验证码即可完成移动、电信、联通三网手机话费余额的实时查询,并能自动识别运营商;携号转网用户通过手动选择同样能获得准确结果。整个压缩包共六个文件&#xf…

2026/10/12 8:40:22 阅读更多 →
Linux核心知识梳理:内核、Shell、权限与服务排查

Linux核心知识梳理:内核、Shell、权限与服务排查

接手过几台Linux服务器之后,你会发现这东西其实没那么神秘。它本质上就是一个操作系统,只不过更干净、更透明、更可控。很多人一提Linux就觉得是命令行、黑窗口、高门槛,其实真正上手之后,你反而会觉得Windows或者macOS上那些藏起…

2026/10/12 8:40:22 阅读更多 →

最新新闻

基于模型压缩的识别算法Python源码:蒸馏与剪枝实战

基于模型压缩的识别算法Python源码:蒸馏与剪枝实战

简介:这份资源是面向高校毕业设计与深度学习入门者的模型压缩识别算法Python源码包,聚焦知识蒸馏与剪枝两类主流压缩技术,帮助读者在有限算力下完成识别模型的轻量化改造与对比实验。包内共185个文件,以79个py源码为核心&#xff…

2026/10/12 10:02:52 阅读更多 →
小波神经网络在光伏辐照预测中的工程落地实践

小波神经网络在光伏辐照预测中的工程落地实践

简介:本资源是一篇发表于《可再生能源》期刊的学术论文,面向新能源、电力系统、人工智能交叉领域的研究者与工程技术人员,聚焦太阳能发电中关键的超短期辐照强度预测难题。论文提出一种融合小波分析与神经网络优势的WNN模型,针对春…

2026/10/12 10:02:52 阅读更多 →
数学证明的事件化记录:构建可追溯、可验证的AI推理过程

数学证明的事件化记录:构建可追溯、可验证的AI推理过程

1. 这不是“AI写证明”,而是让数学推理过程真正可追溯、可验证、可复盘的底层重构“事件模型下AI数学证明的事件化记录与透明性架构”——这个标题里没有一个字是虚的,它直指当前AI数学推理系统最痛的软肋:我们能看到结论,却看不见…

2026/10/12 10:02:52 阅读更多 →
轻型AI中台:解决中小企业重复录入与对账困难的工程化方案

轻型AI中台:解决中小企业重复录入与对账困难的工程化方案

1. 项目概述:为什么一个“轻型AI中台”能真正解决财务与运营一线的痛感“部署轻型AI中台,消除重复录入、消减对账困难”——这句话不是PPT里的口号,而是我去年在三家中小制造企业、两家连锁零售服务商现场蹲点三个月后,亲手推出来…

2026/10/12 10:02:52 阅读更多 →
Hive外部表映射HBase已有数据实战指南

Hive外部表映射HBase已有数据实战指南

1. 项目概述:为什么非得用 Hive 外部表去“看” HBase 已有数据? 在某次数据平台升级中,我接手了一个典型的老系统迁移任务:上游业务系统多年积累的用户行为日志,早已稳定写入 HBase 集群,表名 user_acti…

2026/10/12 10:02:52 阅读更多 →
three.js编辑器开发实战:从渲染循环到撤销重做的完整指南

three.js编辑器开发实战:从渲染循环到撤销重做的完整指南

1. 为什么我不建议你从零手写渲染循环很多人第一次接触 three.js 编辑器开发,脑子里蹦出来的第一个念头是"我要自己写一套渲染管线"。这个想法本身没错,但如果你真的从requestAnimationFrame开始一行行搭,大概率会在第三天卡在&quo…

2026/10/12 10:01:51 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →