diff --git a/.task/feature-plugins-compiled-listing.md b/.task/feature-plugins-compiled-listing.md index 5fe68279..88f94578 100644 --- a/.task/feature-plugins-compiled-listing.md +++ b/.task/feature-plugins-compiled-listing.md @@ -7,33 +7,38 @@ - 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 89174a0f5c28ff7f49c794f37ea7e9528f9b526e - 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-plugins-compiled-listing(worktree);分支:feature/plugins-compiled-listing -- 授权与交付终点:<本次允许的动作与终点;未授权事项写明> +- 授权与交付终点:用户 2026-10-12「继续推进」——覆盖 WP3-I4(/api/plugins 合并编译插件)与 WP3-I3(AdminZone RDM 审计分区)的完成与合入;不覆盖高后果操作(双钥匙项仍人工)。本卡为 I4。 - 交付模式:manual(逐阶段人工评审);明确授权后可记为 authorized-continuous - 自动推进授权:无;授权范围:无;授权来源:无;授权终点:无;停止条件:无(未授权) -- 当前阶段:需求拆解;当前增量:I1(待定义) +- 当前阶段:实施与自检;当前增量:I4 /api/plugins 合并编译插件 - 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位) ## 目标与非目标 -<预期结果、受影响入口/模块/契约;明确不做什么。> +目标:管理页「插件管理」能看到编译进二进制的进程内插件(Dev 二进制的 generative-ui、RDM 二进制的 rdm)——条目来自装载期注册面(命令/意图/技能),backend.mode=inproc 标记编译来源,apiVersion 取扩展面版本;目录插件与编译条目同名时目录条目权威不重复。前端列表为 inproc 条目加「内置」徽标、补命令计数、空版本不再显示悬空 v。 + +非目标:不改公开扩展面(extension.SurfaceVersion 不动);不做插件启停/装卸语义变化(编译条目只读展示);不做 AdminZone 分区(WP3-I3 另卡);不填编译插件的自述元数据(Title/Version 字段后续需要时另走 surface 版本化)。 ## 关联方向与规划 -- 适用状态:待核对(无适用规划时说明原因) -- 主记录路径/版本:待核对(路径按仓库根目录定位,归档后不变;只引用唯一正文) -- 对应里程碑:待核对 +- 适用状态:适用。方案正文 `modules/documents/docs/proposals/2026-10-11-rdm-two-trees-trace-audit-integration.md` r1(U1–U5 已合入;本卡属用户 2026-10-12 续推的 WP3 收尾项 I4)。 +- 主记录路径/版本:上述提案 r1;会话交接记录(2026-10-12 用户授权「继续推进」I4/I3)。 +- 对应里程碑:WP3 收尾(I4 管理清单可见性;I3 AdminZone 分区另卡)。 ## 需求分析 | ID | 描述 | 项目符合度及依据 | 优先级 | 验收条件 | 依赖 | 结论 | |---|---|---|---|---|---|---| -| R1 | 待填写 | 待评估 | 待定 | 待定义 | 待确认 | 待评审 | +| R1 | /api/plugins 列出编译插件条目(合成 manifest:id/name、backend.mode=inproc、apiVersion=扩展面版本、provides=注册面记录的命令/意图/技能) | 符合:server.listPlugins 现仅扫目录 Host(server.go:1464 一带);注册面在 applyCompiled 有唯一汇聚点;PluginBackend.Mode 契约已有 inproc 词表(core/plugin_v2.go:45) | 高 | 单测:设置 CompiledPlugins 后 GET /api/plugins 返回 inproc 条目且字段正确;同名目录条目唯一且 manifest 不被覆盖 | 后端合成与摘要记录 | 纳入本增量 | +| R2 | 摘要与总线一致:记录的命令真实可分发,失败注册不记录 | 符合:注册面即清单面,不另设声明口;重复 id 总线 fail-closed | 高 | 单测 TestApplyCompiledRecordsSummary:成功项记入、重复失败不记、Register 整体失败保留已成功部分、demo.one 可分发 committed | R1 | 纳入本增量 | +| R3 | 前端管理页正确渲染编译条目 | 符合:contracts.ts PluginManifest 已含 backend.mode;design-guard 棘轮约束样式 | 高 | vitest 全绿(含 design-guard);inproc 条目显示「内置」徽标;空版本无悬空 v;desc 含命令计数 | R1 | 纳入本增量 | +| R4 | 真实二进制可见性验证(genui 部署的管理页出现 generative-ui 条目) | 符合:本机 genui @8973 为最新 Dev main 部署 | 中 | 部署验证记录(SELF,curl /api/plugins 见 generative-ui inproc 条目)——合入后执行 | R1–R3 | 纳入本增量(合入后) | ## 方案与计划 -- 方案引用:待填写(含对象版本) -- 实施计划引用:待填写(含增量与需求 ID) -- 测试计划引用:待填写(含需求 ID 与验收条件) +- 方案:后端 applyCompiled 用 recordRegistry 包装 per-plugin Registry,把成功注册的 AddCommand/AddCommandHandler/AddIntent/AddSkill 记入 server.CompiledPlugin 摘要;组合根挂 srv.CompiledPlugins;server.listPlugins 在目录条目后合并合成条目(同名目录优先)。前端 PluginsSection 按上述渲染。不动公开扩展面。 +- 实施计划:backend(server.go/compiled.go/app.go + 两处单测)→ frontend(adminSections.tsx)→ 顶层 gitlink 推进 → make test → 证据三段 → PR。 +- 测试计划:R1/R2 由 Go 单测覆盖(internal/server TestListPluginsMergesCompiled、internal/app TestApplyCompiledRecordsSummary);R3 由 vitest+design-guard 覆盖;R4 部署后 curl 验证(SELF)。 ## 阶段评审 diff --git a/modules/backend b/modules/backend index e49f165d..9aa51e52 160000 --- a/modules/backend +++ b/modules/backend @@ -1 +1 @@ -Subproject commit e49f165d0b8b3251d63f0ee49cbe924682265dcb +Subproject commit 9aa51e52505e5b43d57a72d261ab192f43461e38 diff --git a/modules/frontend b/modules/frontend index 7acfef0a..01b853fd 160000 --- a/modules/frontend +++ b/modules/frontend @@ -1 +1 @@ -Subproject commit 7acfef0a1f6d1b59f6fca5e544d05df364257802 +Subproject commit 01b853fd0ecd4d24df929b9405d0ab9baa5bc408