Files
zn-ai/docs/ClawX-Agents-Migration-Plan.md
duanshuwen ee72cf7261 feat: refactor HomePage to integrate agents store and update related components
feat: add runtime event handling for providers in ProvidersSection

feat: update routing to include Channels and Agents pages

feat: extend route types and navigation items for Channels and Agents

feat: implement agents store for managing agent data and interactions

fix: update chat store to utilize agents store for agent-related functionality

chore: export agents store from index

fix: enhance runtime types for better event handling

fix: update Vite config to handle dev server URL correctly
2026-04-18 14:56:32 +08:00

17 KiB
Raw Blame History

ClawX Agents 功能迁移到 zn-ai 的更新版计划

1. 背景与本次修正

本版文档基于两条新的约束重新整理:

  • 最新 Agents 参考图已经明确,页面信息架构必须回到 ClawX 的列表主视图。
  • 开发需求已经明显变化,后续实现必须严格对齐 ClawX Agents 功能,而不是继续延展一版“更强的 Models/Agent 控制台”。

这意味着上一版计划里最重要的一条判断需要作废:

  • 上一版曾把 zn-ai/agents 页面导向“列表 + 固定右侧详情”的控制台详情页。
  • 这个方向与最新参考图和 ClawX 真实交互不一致,后续不应继续推进。

本轮统一后的基线结论如下:

  1. /agents 必须保持独立路由与侧边栏入口,不能再并回 /models
  2. 页面 IA 必须切回 ClawX 的“列表主视图”。
  3. Agents 页主内容只保留卡片摘要、刷新、新增和设置入口,不把设置详情常驻在主布局中。
  4. Add Agent 必须是独立弹窗,且字段极简,只收:
    • name
    • inheritWorkspace
  5. Settings 详情建议改为 modalsheet,而不是主布局双栏右侧 inspector。
  6. Channels 继续作为 channel/account 归属绑定的唯一写入口。
  7. Models 继续负责 Provider、默认模型、Usage不承载 Agent 实体管理。
  8. Home/Chat/Cron 继续作为 Agents 域的消费页面,不反向定义 Agents 页形态。

一句话总结:

  • 当前 zn-ai 已经补上了不少 Agents 基础设施。
  • 下一轮的重点不再是“有没有 /agents”,而是“把 /agents 的页面 IA、交互层级和职责边界重新拉回 ClawX”。

2. ClawX 基线:严格对齐什么

2.1 路由入口与页面装配

ClawX 的 Agents 是独立域,不是 Models 的子视图。

基线文件主要集中在:

  • ClawX/src/pages/Agents/index.tsx
  • ClawX/src/pages/Channels/index.tsx
  • ClawX/src/stores/agents.ts
  • ClawX/electron/api/routes/agents.ts

它的装配方式很明确:

  • 侧边栏有独立 Agents 入口。
  • /agents 是独立页面。
  • /models/agents 是并列关系,不混用页面职责。

2.2 页面 IA列表主视图而不是控制台详情页

ClawX 的 Agents 首页首先是一个列表工作台,不是一个主布局双栏的详情编辑器。

页面骨架应理解为:

  1. 顶部标题区
    • Title
    • Subtitle
    • Refresh
    • Add Agent
  2. Warning / Error banner
  3. Agent card 列表
  4. 卡片上的 Settings / Delete 入口
  5. 二级弹层
    • AddAgentDialog
    • AgentSettingsModal
    • AgentModelModal

明确不要做的事:

  • 不要在页面右侧常驻一个大号设置面板。
  • 不要把“选中某个 agent 后右边出现详情”的双栏结构作为主交互。
  • 不要把创建、命名、模型、绑定全部平铺到首页主布局。
  • 不要让卡片列表承担复杂表单职责。

这也是本轮文档更新里最核心的 IA 修正。

2.3 Add Agent 弹窗:字段与交互

ClawXAddAgentDialog 很克制,创建阶段只做最小信息采集。

建议严格对齐以下字段与交互:

  • 标题与简短说明
  • name 输入框
    • 必填
    • 非空后才能提交
  • inheritWorkspace 开关
    • 含义是“是否继承主 Agent 工作区”
    • 默认保持轻量,不在创建弹窗里叠加更多高级参数
  • Cancel
  • Save / Create

创建阶段明确不应该出现的字段:

  • Provider 选择
  • Model override
  • Channel binding
  • Workspace 路径高级配置

创建成功后的回流建议也对齐 ClawX

  • 关闭弹窗
  • 回到列表主视图
  • 列表出现新卡片
  • 可给 toast但不要自动把用户带进重型详情页

2.4 Agents 首页卡片:只保留摘要与设置入口

ClawX 的卡片不是“迷你详情页”,而是摘要卡片。

建议卡片层面保留这些信息:

  • 头像 / icon
  • name
  • default badge
  • 模型摘要
    • 当前模型
    • 是否继承默认模型
  • 频道归属摘要
    • 只展示结果,不提供写操作

建议卡片层面只保留这些动作:

  • Settings
  • Delete

不建议放在卡片正面的内容:

  • 大段 workspace / agentDir / sessionKey 技术细节
  • channel/account 绑定下拉
  • provider/model 大表单
  • 右侧伴随卡片选中状态的持久编辑区

如果需要展示更多运行时信息,优先放进设置弹层,而不是挤进首页卡片。

2.5 设置详情:建议 modal / sheet而不是主布局双栏

ClawX 的设置入口是二级层级,不是首页主布局的一部分。

因此在 zn-ai 中更推荐:

  • 桌面端使用 modalside sheet
  • 移动端使用全屏 sheet / dialog

不推荐继续保留当前这类形态:

  • 左侧列表
  • 右侧常驻详情 inspector
  • 页面刷新或切换 agent 时整块右栏一起抖动

原因有三点:

  1. 不符合 ClawX 的交互层级。
  2. 会把“列表主视图”错误拉成“详情驱动”页面。
  3. 不利于后续继续保持 Cards 摘要化。

Settings 弹层建议承载的内容:

  • Identity
    • 名称
    • Agent ID
  • Model
    • provider account
    • model ref
    • inherit default model
    • 预览当前 effective provider / model
  • Channel binding summary
    • 只读展示当前 channel/account 归属
    • 提供“去 Channels 管理”的入口

如果仍需要二级模型编辑体验,可以继续保留嵌套的 AgentModelModal,但它依然属于弹层体系,而不是首页主布局。

2.6 与 Channels / Models 的职责边界

这是本轮必须写死的边界。

Agents 页负责什么

  • Agent 实体列表
  • 新建 / 删除 / 重命名
  • per-agent model override
  • 归属摘要展示
  • 设置入口

Agents 页不负责什么

  • channel/account 绑定写操作
  • provider account CRUD
  • 默认 provider 设定
  • usage 历史查询主视图

Channels 页负责什么

  • channel 级归属
  • account 级归属
  • binding 写操作唯一入口
  • routing fallback 关系说明

Models 页负责什么

  • provider account CRUD
  • default provider / default model
  • provider catalog / vendors
  • usage history
  • provider 视角的 models snapshot

边界落地后的页面关系应该是:

  • Agents 看 Agent 和摘要
  • Channels 改归属
  • Models 管 Provider

2.7 与 Home / Chat / Cron 的联动

ClawX 的 Agents 不孤立存在,它是多个页面共享的域。

最关键的消费关系如下:

  • Home / Chat
    • 当前 Agent 名称
    • 当前 Agent 模型
    • 会话切换与发送路由
  • Cron
    • 任务归属 agentId
    • delivery channel / account / target
    • 编辑时展示 Agent 与 delivery 摘要

因此后续实现时要记住:

  • Home/Chat/Cron 是 Agents 域的消费者。
  • 它们的联动验证很重要。
  • 但它们不应该反过来决定 /agents 首页长什么样。

3. zn-ai 当前现状:已经落地的部分与剩余偏差

3.1 已经落地的部分

与上一版文档相比,zn-ai 当前已经不是“Agents 完全缺失”的状态。

已经具备的基础包括:

  1. 独立 /agents 路由与侧边栏入口
  2. agentsStore
  3. 本地 /api/agents
  4. 本地 /api/channels/accounts
  5. 本地 /api/channels/targets
  6. Channels 页的 channel/account 归属写操作
  7. Cron 页的:
    • agent
    • channel
    • account
    • target
  8. provider runtime sync 与 gateway reload/restart 链路
  9. Home 聊天顶部 Agent 切换与发送前模型校验

换句话说:

  • “Agents 域基础设施缺失”已经不再是主问题。
  • “UI/IA 没有回到 ClawX 基线”才是当前最主要的剩余问题。

3.2 仍然存在的关键偏差

尽管能力已经补了不少,当前 zn-ai 仍然和 ClawX 有几个显著偏差。

偏差 1页面仍然太像“详情页”

当前实现已经是“列表 + 右侧设置区”的形态,这比最早的 /agents -> /models 已经前进很多,但仍然不是 ClawX 的列表主视图。

需要明确回退:

  • 去掉“固定右侧详情”作为主布局
  • 恢复“卡片列表 + 设置弹层”

偏差 2Add Agent 还是 prompt / confirm 式流转

当前实现仍然偏命令式:

  • prompt 输名字
  • confirm 选 inherit workspace

这不符合 ClawX 的统一弹层体验,也不利于后续继续扩展创建态文案和校验。

偏差 3Agents 页承担了过多常驻编辑语义

当前页面把:

  • identity
  • model
  • binding summary

长期固定在主布局中展示,导致首页不再是纯列表。

这会让视觉重心从“列表工作台”滑向“控制台详情页”。

偏差 4需要继续守住 Channels / Models 边界

zn-ai 当前的方向整体是对的:

  • Channels 已经承担 binding 写操作
  • Agents 已经开始只读展示 binding summary

但文档和实现都要继续避免回摆:

  • 不要因为 Agents settings 看起来“顺手”,就再把绑定下拉搬回去
  • 不要因为 Agents 能改 model就把 provider CRUD 一并塞进 Agents

偏差 5Models Snapshot 仍然不能替代 Agents 页

/api/models 当前仍然更接近“provider account 视角的合成 snapshot”不是 Agent 域真相。

因此后续文档、QA 和页面说明都应避免混淆:

  • Models Snapshot 只能验证 provider 视角
  • Agent override 与 Agent 路由应以 /api/agents、Agents 页和 Home/Chat 行为为准

4. 新一轮 sub-agent 数量估算与分工

4.1 推荐并行规模

按当前代码基础判断,下一轮如果目标是“严格对齐 ClawX Agents UI 与职责边界”,推荐按 6 个 sub-agent 并行推进。

这不是为了把任务拆得更碎,而是为了减少 UI / store / local route / cross-page 联动之间的冲突。

但结合 zn-ai 当前已经具备的 /agents 页面骨架、agentsStore、本地 /api/agents、Channels 绑定链路,以及这轮需求已经明显收敛到“参考图驱动的 UI / IA 重构”,本轮实际执行建议按 4 个 sub-agent 推进更合适:

  • 1 个负责 Agents 首页 IA 与视觉重构
  • 1 个负责 Add Agent / Settings 弹层与文案收口
  • 1 个负责 store / backend 能力缺口与回归风险核对
  • 1 个负责迁移计划、验收口径和回归说明同步

4.2 推荐分工

sub-agent 写入范围 目标
1 src/pages/Agents/**, src/router/**, src/components/layout/** /agents 页面 IA 调回列表主视图,保证入口、标题区、刷新、新增和卡片层对齐 ClawX
2 src/pages/Agents/** 重做 Add Agent 弹窗,以及 Settings modal/sheetAgent model modal 的交互层级
3 src/stores/agents.ts, shared agent types, 页面数据拼装逻辑 收口 Agents 页面所需字段,确保卡片摘要、设置详情、只读 binding summary 的数据来源稳定
4 electron/api/routes/agents.ts, runtime sync 相关实现, agent-config 校验 create / rename / model override / delete 的 runtime sync、reload、restart 语义是否与 UI 新交互一致
5 src/pages/Channels/**, src/pages/Models/**, src/pages/Home/**, src/pages/Cron/** 守住 Channels/Models/Home/Cron 的职责边界,避免 Agents IA 回正后引入新耦合
6 docs/**, smoke tests, regression notes 更新迁移文档、手工冒烟路径、验收标准和回归清单

4.3 资源不足时的降配方案

如果并行资源不足,可以降到 4 个 sub-agent但不要把下面两类工作混在一个人身上

  • 首页 IA 重构
  • runtime / route / sync 硬逻辑

推荐合并方式:

  • 1 + 2
  • 5 + 6

4.4 本轮实际执行分工

结合当前会话的资源与改动范围,本轮按 4 个 sub-agent 推进:

sub-agent 本轮职责 产出
A 参考图与 ClawX IA 差异分析 列表主视图、卡片字段、弹层层级修正建议
B backend / store 能力核对 确认 createAgent(inheritWorkspace)、rename、model override、delete 是否足够支撑新 UI
C 迁移计划文档更新 把“控制台详情页”基线修正为“ClawX 列表主视图”
D i18n 与页面文案收口 让标题、副标题、添加弹窗和设置语义贴近参考图与 ClawX 心智

5. 分阶段实施建议

本轮建议不再按“从零搭 Agents 域”的顺序推进,而改成“在已落地能力上收口 UI 和边界”。

5.1 阶段 0冻结新基线

目标:

  • 明确上一版“控制台详情页 / 双栏布局”判断失效
  • 团队统一采用 ClawX 列表主视图基线

产出:

  • 更新后的本计划文档
  • 统一的页面 IA 草图
  • 明确的职责边界

验收标准:

  • 团队确认 /agents 首页不做固定右侧详情栏
  • 团队确认 Add Agent 只收最小字段
  • 团队确认 Channels / Models / Agents 三页边界

预计工作量:

  • 0.5

5.2 阶段 1把首页 IA 从双栏拉回列表主视图

目标:

  • 先把首页结构改对,再谈细节

建议改动:

  • 首页只保留:
    • title
    • subtitle
    • refresh
    • add
    • banner
    • card list
  • 去掉常驻右侧 inspector

验收标准:

  • /agents 首屏看起来就是列表主视图
  • 即使不打开任何设置,也能完整浏览所有 Agent 卡片

预计工作量:

  • 0.5 ~ 1

5.3 阶段 2补齐 Add Agent 弹窗与设置弹层

目标:

  • 把所有二级编辑交互收进 overlay 层

建议改动:

  • Add Agent dialog
    • name
    • inheritWorkspace
  • Agent settings modal / sheet
    • identity
    • model
    • binding summary
  • Agent model modal
    • provider + model ref

验收标准:

  • 创建、重命名、模型覆盖都不再依赖首页双栏
  • 桌面和窄屏下的弹层层级都清晰

预计工作量:

  • 1 ~ 1.5

5.4 阶段 3收口首页卡片摘要

目标:

  • 让首页卡片真正回到摘要视角

建议改动:

  • 卡片只保留必要摘要
  • workspace / agentDir / sessionKey 等技术细节尽量移入设置层
  • hover 动作保持轻量

验收标准:

  • 卡片读起来像 ClawX
  • 首页不出现重型编辑表单

预计工作量:

  • 0.5

5.5 阶段 4守住 Channels / Models / Agents 边界

目标:

  • 在 UI 回正后,避免功能重新耦合

建议改动:

  • Agents settings 里的绑定区继续只读
  • “Manage bindings” 统一跳转 Channels
  • Models 保持 provider / default / usage不接 Agent CRUD
  • 默认模型语义留在 ModelsAgent override 语义留在 Agents

验收标准:

  • 团队对“去哪改什么”没有歧义
  • QA 能明确知道每类问题该在哪页验证

预计工作量:

  • 0.5

5.6 阶段 5联动与回归验证

目标:

  • 验证 UI 改造没有破坏现有 Agents 域能力

重点验证链路:

  1. Agents 创建后Home/Chat 能看到新 Agent
  2. Agent model override 更新后Home 发送仍可走通
  3. Channels 绑定变更后Agents settings 摘要能反映
  4. Cron 里 agent/channel/account/target 仍然可用
  5. /api/channels/targets 与手工输入兜底都正常
  6. 删除 Agent 后 reload/restart 行为仍稳定

预计工作量:

  • 1

6. 风险清单

风险 描述 应对
旧判断残留 团队继续沿用“右侧详情栏”思路实现后续 UI 在阶段 0 明确作废旧 IA 结论,并把弹层方案写死
Add Agent 范围膨胀 创建弹窗被不断塞入 provider/model/channel 字段 规定创建阶段只收 name + inheritWorkspace
绑定边界回摆 因为 settings 层已有 binding summary顺手加下拉写操作 Agents 只读展示Channels 保持唯一写入口
Models 语义漂移 Provider CRUD 再次被拉进 Agents Models 专注 provider/default/usage不承载 Agent 实体管理
runtime sync 假通过 UI 保存成功,但真实 runtime 文件或 gateway 状态没同步 回归必须覆盖 create / update model / delete 三类动作
Cron targets 体验退化 因为 UI 改造误伤 target 自动加载与手输兜底 /api/channels/targets 与手工输入都纳入冒烟清单

7. 验收重点

严格对齐 ClawX 时,验收不要只看“功能能不能点”,还要看“页面是不是回到了正确的形态”。

本轮建议把下面几条列为强验收项:

  1. /agents 首页是否是列表主视图,而不是双栏详情页
  2. Add Agent 是否是正式弹窗,而不是 prompt / confirm
  3. 首页卡片是否只保留摘要与设置入口
  4. Settings 是否是 modal / sheet而不是主布局常驻
  5. Agents 是否只读展示 binding summary并把写操作引导到 Channels
  6. Models 是否仍然只负责 provider/default/usage
  7. Home / Cron 是否继续消费同一份 Agents 域数据

8. 最终建议

当前 zn-ai 已经把独立 /agentsagentsStore、本地 routes、runtime sync、Channels/Cron 联动这些“底座”补得差不多了。

所以下一轮不要再把重心放在“有没有 Agents 能力”,而要放在下面四件事:

  1. /agents 的页面 IA 严格拉回 ClawX
  2. Add Agent 与 Settings 改成标准弹层体系
  3. 把 Agents / Channels / Models 的职责边界写死并落实到 UI
  4. 用 Home / Cron / targets / runtime sync 做真实闭环回归

如果这四件事做对,zn-ai 的 Agents 才会从“功能拼装完成”真正进入“体验与职责都对齐 ClawX”的阶段。