Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
重构所有代码和文档中的项目名称,将OpenFang统一更新为ZCLAW。包括: - 配置文件中的项目名称 - 代码注释和文档引用 - 环境变量和路径 - 类型定义和接口名称 - 测试用例和模拟数据 同时优化部分代码结构,移除未使用的模块,并更新相关依赖项。
710 lines
19 KiB
Markdown
710 lines
19 KiB
Markdown
# ZCLAW 深度理解与 ZCLAW 设计映射
|
||
|
||
**日期**: 2026-03-12
|
||
**目的**: 先彻底理解 ZCLAW 的产品哲学、运行机制、配置模型与扩展边界,再据此反推 ZCLAW 每一个功能页和设置项为什么存在、应该达成什么效果。
|
||
|
||
---
|
||
|
||
## 一、结论先行
|
||
|
||
ZCLAW **不是一个“聊天 UI + 模型接入器”**,而是一个围绕本地执行、持续上下文、设备身份、消息路由、技能生态与主动服务组织起来的 **本地优先 Agent 操作系统**。
|
||
|
||
如果只把它理解成:
|
||
|
||
- WebSocket Gateway
|
||
- 模型调用
|
||
- 聊天窗口
|
||
|
||
那会错过它真正的核心:
|
||
|
||
- **Agent 是一个有独立工作空间、人格、约束和记忆边界的长期运行实体**
|
||
- **Gateway 是执行中枢,不只是转发层**
|
||
- **配置文件不是“偏好设置”,而是系统行为定义**
|
||
- **AGENTS.md / SOUL.md / USER.md / IDENTITY.md 不是装饰文件,而是 Agent 的可审计大脑**
|
||
- **Heartbeat / Channels / Skills / MCP / Tools / Sandbox / Bindings 是一套完整的运行时系统**
|
||
|
||
对 ZCLAW 来说,这意味着:
|
||
|
||
- 我们的“设置页”本质上不应该只是 UI 偏好页
|
||
- 很多设置项的真实目标是 **配置 ZCLAW Runtime**,不是更新前端本地 state
|
||
- “快速配置”不应被理解为普通表单,而应被理解为 **创建/配置一个新的 Agent 实例**
|
||
- 右侧 `Agent` 区域不应只是展示文案,而应反映当前选中 Agent 的真实身份、边界、工作目录、用户上下文与运行约束
|
||
|
||
---
|
||
|
||
## 二、ZCLAW 的本质:它到底是什么
|
||
|
||
### 1. 它是 Agent Runtime,而不是聊天前端
|
||
|
||
从官方文档与协议设计看,ZCLAW 的核心不是 UI,而是下面这些长期存在的运行对象:
|
||
|
||
- **Gateway**
|
||
- **Agent workspace**
|
||
- **Sessions**
|
||
- **Channels**
|
||
- **Bindings**
|
||
- **Heartbeat**
|
||
- **Device identity / pairing**
|
||
- **Skills / Tools / MCP / Plugins**
|
||
|
||
聊天只是这些能力暴露给人的一个入口。
|
||
|
||
### 2. 它的核心价值是“执行 + 持续性 + 可控性”
|
||
|
||
ZCLAW 的设计哲学非常稳定,几乎所有模块都服务于下面三件事:
|
||
|
||
- **执行**
|
||
- 能真正读写文件、跑命令、控浏览器、发消息
|
||
- **持续性**
|
||
- 不只是一次性问答,而是可长期运转的 Agent
|
||
- **可控性**
|
||
- 用户能看到配置、文本指令、工作区与约束,而不是黑盒
|
||
|
||
这决定了 ZCLAW 与很多“AI 工作台”产品的根本不同:
|
||
|
||
- 它强调的是 **Agent 作为系统角色**
|
||
- 不是把模型套上聊天框就结束
|
||
|
||
---
|
||
|
||
## 三、ZCLAW 的系统骨架
|
||
|
||
### 1. Gateway:系统中枢
|
||
|
||
Gateway 是 ZCLAW 的真正控制面板。它负责:
|
||
|
||
- WebSocket 协议握手与会话维持
|
||
- Agent 运行时管理
|
||
- Session/stream 事件分发
|
||
- Channels 消息收发
|
||
- 配置热加载与配置 RPC
|
||
- Skills / Tools / Plugins / Heartbeat 协调
|
||
- Device auth / pairing / scopes
|
||
|
||
所以对 ZCLAW 而言:
|
||
|
||
- 前端不是系统中心
|
||
- 前端只是 **ZCLAW Runtime 的一个控制界面**
|
||
|
||
### 2. Workspace:每个 Agent 的“根目录”
|
||
|
||
官方文档明确说明:Agent 有自己的 workspace,里面放 bootstrap 文件和长期上下文,例如:
|
||
|
||
- `AGENTS.md`
|
||
- `SOUL.md`
|
||
- `USER.md`
|
||
- `IDENTITY.md`
|
||
- `TOOLS.md`
|
||
- `HEARTBEAT.md`
|
||
- `memory.md`
|
||
- `memory/YYYY-MM-DD.md`
|
||
|
||
这说明 ZCLAW 的“Agent 配置”不仅是 JSON,还是 **文件系统上的可读可改上下文**。
|
||
|
||
### 3. 多 Agent:多个独立人格 / 工作空间 / 路由单元
|
||
|
||
官方 `Multi-Agent Routing` 文档给出的不是“多 Agent 协作流水线”,而是:
|
||
|
||
- 多个 `agentId`
|
||
- 多个 `workspace`
|
||
- 多个 `bindings`
|
||
- 多个渠道账号/电话号码/机器人身份
|
||
- 多套独立人格、记忆、沙箱与工具权限
|
||
|
||
这意味着 ZCLAW 的多 Agent,本质上更像:
|
||
|
||
- 多个长期助手
|
||
- 多个角色实例
|
||
- 多个路由终点
|
||
|
||
而不是:
|
||
|
||
- Planner / Executor / Combiner 这种任务分解型多智能体架构
|
||
|
||
对 ZCLAW 的直接影响:
|
||
|
||
- 我们左侧“分身”更接近 ZCLAW 的 `agents.list`
|
||
- 不应把“分身”只做成前端标签或临时角色描述
|
||
- 每个分身都应该最终映射到一个真实的 Agent 配置单元
|
||
|
||
---
|
||
|
||
## 四、配置模型:ZCLAW 为什么“像操作系统”
|
||
|
||
### 1. `~/.zclaw/zclaw.json` 是系统配置,不是普通偏好设置
|
||
|
||
官方配置文档说明,`zclaw.json` 用来描述整个系统行为,例如:
|
||
|
||
- `agents.defaults.*`
|
||
- `agents.list[]`
|
||
- `channels.*`
|
||
- `bindings`
|
||
- `heartbeat`
|
||
- `env`
|
||
- `tools`
|
||
- `sandbox`
|
||
- `plugins`
|
||
- `skills`
|
||
|
||
并且支持:
|
||
|
||
- `zclaw configure`
|
||
- `zclaw config get/set/unset`
|
||
- `config.get`
|
||
- `config.apply`
|
||
- `config.patch`
|
||
- 热更新与重启语义
|
||
|
||
这说明 ZCLAW 的很多设置页,理应围绕下面的目标设计:
|
||
|
||
- 让用户理解自己正在配置 **哪个 ZCLAW 子系统**
|
||
- 让前端变成一个对配置进行可视化编辑的控制台
|
||
|
||
### 2. 配置是有层级和优先级的
|
||
|
||
ZCLAW 的很多能力都采用“默认值 + 局部覆盖”模型:
|
||
|
||
- `agents.defaults.*` 作为全局默认
|
||
- `agents.list[].*` 作为每个 Agent 的覆盖
|
||
- `channels.defaults.*` 作为全渠道默认
|
||
- `channels.<channel>.*` 覆盖
|
||
- `channels.<channel>.accounts.<id>.*` 再覆盖
|
||
|
||
这意味着 ZCLAW 做设置页时,必须把下面三类东西区分开:
|
||
|
||
- **系统级设置**
|
||
- **Agent 级设置**
|
||
- **渠道/账号级设置**
|
||
|
||
否则用户会搞不清:
|
||
|
||
- 当前改的是所有 Agent 还是某一个 Agent
|
||
- 当前改的是显示行为还是路由行为
|
||
- 当前改的是默认值还是具体实例
|
||
|
||
---
|
||
|
||
## 五、Bootstrap 文件的职责:为什么 ZCLAW 不靠数据库隐藏一切
|
||
|
||
### 1. `AGENTS.md`:操作规范与行为准则
|
||
|
||
默认 `AGENTS.md` 强调:
|
||
|
||
- 首次启动要建立 workspace
|
||
- Session 开始要先读 `SOUL.md`、`USER.md`、`memory.md`
|
||
- 不要泄露隐私和秘密
|
||
- 不要在外部消息面上发送半成品结果
|
||
- 工具和技能是通过 `SKILL.md`/`TOOLS.md` 组织的
|
||
|
||
它的定位更接近:
|
||
|
||
- Agent 的操作协议
|
||
- 安全规范
|
||
- 会话启动 checklist
|
||
|
||
### 2. `SOUL.md`:身份、气质、边界
|
||
|
||
官方模板把 `SOUL.md` 定义成:
|
||
|
||
- Core Truths
|
||
- Boundaries
|
||
- Vibe
|
||
- Continuity
|
||
|
||
也就是说,`SOUL.md` 不是“角色介绍”,而是:
|
||
|
||
- Agent 的底层人格与底线
|
||
- 它如何说话、如何决策、哪里必须克制
|
||
|
||
### 3. `USER.md`:关于用户这个人
|
||
|
||
`USER.md` 的职责不是泛化的“设置”,而是:
|
||
|
||
- 记录这个 Agent 正在服务的那个人是谁
|
||
- TA 的习惯、上下文、沟通偏好、时区、关注点
|
||
|
||
### 4. `IDENTITY.md`:Agent 的外显身份
|
||
|
||
官方模板中 `IDENTITY.md` 明确包含:
|
||
|
||
- Name
|
||
- Creature
|
||
- Vibe
|
||
- Emoji
|
||
- Avatar
|
||
|
||
这非常重要,因为它解释了 AutoClaw/类似产品里右侧 `Agent` 面板为什么会有:
|
||
|
||
- 名字
|
||
- emoji
|
||
- 风格
|
||
- 形象
|
||
|
||
对 ZCLAW 的直接映射:
|
||
|
||
- 右侧 `Agent` 区域展示的不是随机卡片
|
||
- 它应该是 Agent 的外显身份与用户上下文的可视化投影
|
||
|
||
---
|
||
|
||
## 六、Agent 的真正含义:ZCLAW 里“一个 Agent”是什么
|
||
|
||
结合官方 `Multi-Agent Routing` 文档,可以把一个 Agent 理解成:
|
||
|
||
- 一个 `agentId`
|
||
- 一个独立 workspace / agentDir
|
||
- 一组 bootstrap 文件
|
||
- 一套工具与 sandbox 规则
|
||
- 一套 session 历史
|
||
- 一组可能的 channel bindings
|
||
- 一种人格 / 工作方式 / 角色定位
|
||
|
||
因此“创建一个新 Agent”至少意味着下面几件事之一:
|
||
|
||
- 在 `agents.list[]` 中新增条目
|
||
- 为它准备独立 workspace 或 `agentDir`
|
||
- 写入/复制对应的 `AGENTS.md / SOUL.md / USER.md / IDENTITY.md`
|
||
- 给它绑定渠道、peer、账号或默认路由规则
|
||
- 根据风险模型配置它的工具权限/沙箱/Heartbeat
|
||
|
||
这也是为什么“快速配置”绝不能被简化成:
|
||
|
||
- 只存几个前端字段
|
||
- 只改一个 Zustand store
|
||
- 只改显示文案
|
||
|
||
它的本质是:
|
||
|
||
- **创建一个新的 Agent 实体**
|
||
|
||
---
|
||
|
||
## 七、Routing:为什么 ZCLAW 的多 Agent 不只是“列表切换”
|
||
|
||
官方路由顺序大致是:
|
||
|
||
- peer 精确匹配
|
||
- parentPeer 继承匹配
|
||
- guild/team/roles 等平台级规则
|
||
- accountId 规则
|
||
- channel fallback
|
||
- default agent / first agent / main
|
||
|
||
这说明 Agent 不是只在 UI 中被“选中”,而是在运行时通过消息来源自动路由。
|
||
|
||
对 ZCLAW 的启发:
|
||
|
||
- 左侧分身列表只是 **人能看懂的入口**
|
||
- 真正完成 ZCLAW 化,还需要绑定路由语义
|
||
- 后续应该把“分身”扩展为:
|
||
- Agent 基本资料
|
||
- 渠道路由绑定
|
||
- 默认 Agent / fallback Agent
|
||
- 每 Agent 的 workspace / tools / heartbeat
|
||
|
||
---
|
||
|
||
## 八、Heartbeat:为什么“定时任务页”不能只做 cron 列表
|
||
|
||
官方 Heartbeat 文档显示:
|
||
|
||
- Heartbeat 是 **定期触发一个完整 Agent turn**
|
||
- 默认会读 `HEARTBEAT.md`
|
||
- 如果没事做,返回 `HEARTBEAT_OK`
|
||
- 可以配置投递目标,如 `none`、`last` 或具体渠道
|
||
- 可以设置 active hours
|
||
- 支持 per-agent heartbeat 覆盖
|
||
|
||
这说明 Heartbeat 与普通 cron 的区别在于:
|
||
|
||
- cron 是“按时间执行动作”
|
||
- Heartbeat 是“按时间唤醒 Agent 去检查是否有事要做”
|
||
|
||
对 ZCLAW 的直接含义:
|
||
|
||
- “定时任务页”如果只展示 cron 表达式,会偏离 ZCLAW
|
||
- 应该更多展示:
|
||
- 哪些 Agent 开启了 heartbeat
|
||
- Heartbeat 多久触发一次
|
||
- 触发时会看什么(HEARTBEAT.md)
|
||
- 结果发到哪里
|
||
- 活跃时段限制
|
||
|
||
---
|
||
|
||
## 九、Skills:为什么它不是“插件市场”,而是 Agent 的工作知识库
|
||
|
||
官方文档与命令表明:
|
||
|
||
- `zclaw skills list`
|
||
- `zclaw skills info <name>`
|
||
- `zclaw skills check`
|
||
|
||
以及仓库中多处强调:
|
||
|
||
- `SKILL.md`
|
||
- 渐进式披露
|
||
- 每个技能是任务说明 + 规则 + 可选脚本/工具的组合
|
||
|
||
因此 Skills 的真实价值不是“多装几个功能按钮”,而是:
|
||
|
||
- 把复杂任务封装成可复用工作流
|
||
- 控制模型只在需要时展开更多上下文
|
||
- 让 Agent 在执行具体任务时有稳定手册可读
|
||
|
||
对 ZCLAW 的影响:
|
||
|
||
- 技能页不应该只是展示一个目录列表
|
||
- 它的目标应该是让用户理解:
|
||
- 当前 Agent 可用哪些技能
|
||
- 每个技能解决什么问题
|
||
- 技能是否可被当前 Agent 触发
|
||
- 额外目录实际上影响的是 Agent 的能力面
|
||
|
||
---
|
||
|
||
## 十、Channels:为什么 IM 频道不是“集成列表”而是系统输入面
|
||
|
||
ZCLAW 的渠道模型并不是简单“接一个 webhook”这么轻。
|
||
|
||
它包含:
|
||
|
||
- channel 类型
|
||
- accounts(多账号/多 bot)
|
||
- accountId
|
||
- allow/deny / mention / thread 绑定
|
||
- peer/group/direct message 路由
|
||
- bindings 到 agent
|
||
|
||
这意味着渠道页的真正目标是:
|
||
|
||
- 管理消息从哪里进系统
|
||
- 管理不同输入源归属哪个 Agent
|
||
- 管理默认/显式路由规则
|
||
|
||
因此 ZCLAW 的 IM 频道页未来应围绕:
|
||
|
||
- 已接入哪些 channel
|
||
- 每个 channel 有哪些 account
|
||
- 每个 account 绑定了哪些 agent
|
||
- 每个 Agent 接哪些 peer/group
|
||
- 是否 require mention
|
||
|
||
而不是只做:
|
||
|
||
- “飞书开/关”
|
||
- “添加一个渠道按钮”
|
||
|
||
---
|
||
|
||
## 十一、MCP:在 ZCLAW 里意味着什么
|
||
|
||
从现有资料可以确认,ZCLAW 原生支持 MCP / RPC adapters / 外部工具扩展。
|
||
|
||
在 ZCLAW 语境下,MCP 的作用不是点缀,而是:
|
||
|
||
- 给 Agent 扩展新的上下文来源与工具面
|
||
- 让技能可以调用标准化外部能力
|
||
- 让模型在不写死工具的情况下复用第三方协议能力
|
||
|
||
因此 ZCLAW 的 MCP 服务页的目的应是:
|
||
|
||
- 不是本地 toggle 假状态
|
||
- 而是管理 Agent 当前可访问的工具能力集合
|
||
|
||
---
|
||
|
||
## 十二、Device Auth:为什么 Gateway 连接不是普通 WebSocket 连接
|
||
|
||
官方协议和 troubleshooting 文档表明:
|
||
|
||
- 握手不是简单 `ws.connect`
|
||
- Gateway 会先发 `connect.challenge`
|
||
- 客户端必须:
|
||
- 等待 challenge
|
||
- 使用 challenge 参与签名 payload
|
||
- 发送 `device.nonce`
|
||
- 携带 `device.id / publicKey / signature / signedAt`
|
||
- `device.id` 来源于公钥指纹
|
||
- `device auth` 与 token / deviceToken / pairing / scopes 共同决定是否给权限
|
||
|
||
这件事对 ZCLAW 很关键,因为它说明:
|
||
|
||
- “连接 Gateway”不是 UI 层小问题
|
||
- 它背后是 ZCLAW 的安全边界
|
||
- 前端任何“连接设置”都必须尊重设备身份与鉴权语义
|
||
|
||
我们这次调试里已经验证:
|
||
|
||
- 少字段会被拒绝
|
||
- 错误 `device.id` 会触发 `device-id-mismatch`
|
||
- 错误 payload 会触发 `device signature invalid`
|
||
- 错误 `client.mode` 也会直接握手失败
|
||
|
||
所以后续实现必须把 Gateway 连接视作 **协议适配工程**,而不是按钮状态问题。
|
||
|
||
---
|
||
|
||
## 十三、ZCLAW 的功能设置为什么存在:逐页重解释
|
||
|
||
下面用 ZCLAW 视角重写 ZCLAW 设置页目的。
|
||
|
||
### 1. 通用
|
||
|
||
目的不是“桌面偏好”。
|
||
|
||
真实目标:
|
||
|
||
- 控制连接状态
|
||
- 暴露一部分系统级行为开关
|
||
- 说明 Agent 的运行模式、安全边界与可见性
|
||
|
||
### 2. 模型与 API
|
||
|
||
真实目标:
|
||
|
||
- 管理 ZCLAW 的 provider / model defaults
|
||
- 决定 Agent 运行时使用的主模型与 fallback
|
||
- 调试 Gateway 连接与鉴权
|
||
|
||
### 3. MCP 服务
|
||
|
||
真实目标:
|
||
|
||
- 定义 Agent 可以接入哪些外部能力
|
||
- 把工具面显式暴露给用户管理
|
||
|
||
### 4. 技能
|
||
|
||
真实目标:
|
||
|
||
- 管理 Agent 可以调用的工作流知识库
|
||
- 让用户知道 Agent 的“会做什么”来自哪里
|
||
|
||
### 5. IM 频道
|
||
|
||
真实目标:
|
||
|
||
- 管理系统从哪里收消息
|
||
- 管理消息如何路由到 Agent
|
||
|
||
### 6. 工作区
|
||
|
||
真实目标:
|
||
|
||
- 确定 Agent 的执行边界
|
||
- 决定 bootstrap 文件、上下文、技能和文件访问根目录
|
||
- 影响 sandbox / file restriction / file watching 等运行时行为
|
||
|
||
### 7. 数据与隐私
|
||
|
||
真实目标:
|
||
|
||
- 让用户理解数据存储在哪里
|
||
- 让用户知道哪些行为在本地、哪些可能涉及外部服务
|
||
- 明确优化计划 / telemetry 是否参与
|
||
|
||
### 8. 分身 / 快速配置
|
||
|
||
真实目标:
|
||
|
||
- 创建一个新的 Agent 实例
|
||
- 配置其身份、角色、风格、工作目录、约束和用户上下文
|
||
- 最终应该映射到:
|
||
- `agents.list[]`
|
||
- agent workspace / agentDir
|
||
- `IDENTITY.md / SOUL.md / USER.md / AGENTS.md`
|
||
|
||
### 9. 右侧 Agent 面板
|
||
|
||
真实目标:
|
||
|
||
- 展示当前 Agent 的外显身份
|
||
- 展示它如何理解用户
|
||
- 展示它的边界、工作目录、当前模型和关注领域
|
||
|
||
---
|
||
|
||
## 十四、对 ZCLAW 当前实现的启发
|
||
|
||
### 1. 已经接近正确方向的部分
|
||
|
||
- 三栏桌面结构
|
||
- 分身 / IM / 定时任务主界面骨架
|
||
- 对 ZCLAW Gateway 的接入方向
|
||
- 自定义插件模式
|
||
- 使用 bootstrap 文件与默认配置模板
|
||
- 将中文模型、飞书、UI RPC 作为 ZCLAW 上层定制
|
||
|
||
### 2. 当前最容易继续偏离的部分
|
||
|
||
- 把设置页做成前端本地假状态
|
||
- 把分身做成只影响 UI 的列表项
|
||
- 把快速配置当成“多几个表单字段”
|
||
- 把 Heartbeat 误做成 cron 列表
|
||
- 把技能页误做成目录浏览器
|
||
- 把 IM 页误做成渠道开关
|
||
|
||
### 3. 应当优先建立的统一原则
|
||
|
||
后续所有功能实现都建议遵循下面这个判断标准:
|
||
|
||
> 如果一个页面改动之后,没有改变 ZCLAW Runtime 的真实行为、真实配置、真实路由、真实工作区或真实 Agent 上下文,那它大概率还只是“演示 UI”,不是系统能力。
|
||
|
||
---
|
||
|
||
## 十五、对当前几个关键争议点的明确判断
|
||
|
||
### 1. “快速配置到底是什么?”
|
||
|
||
结论:
|
||
|
||
- **快速配置 = 创建 / 更新一个 Agent**
|
||
- 不是普通设置
|
||
- 不是只改前端 state
|
||
- 不是只改 `quickConfig` JSON
|
||
|
||
### 2. “右侧 Agent 区域应该显示什么?”
|
||
|
||
结论:
|
||
|
||
- 当前选中 Agent 的真实身份与用户上下文
|
||
- 不是硬编码卡片
|
||
- 不是随机占位数据
|
||
|
||
### 3. “Clone / 分身 应该如何理解?”
|
||
|
||
结论:
|
||
|
||
- 在 ZCLAW 语境里,它应该逐步收敛为 ZCLAW 的 Agent 实例
|
||
- 不是任务拆解型多智能体
|
||
- 不是单纯聊天角色标签
|
||
|
||
### 4. “连接 Gateway 为什么难?”
|
||
|
||
结论:
|
||
|
||
- 因为它不是普通 ws 连接,而是设备身份 + token/scopes + challenge 签名协议
|
||
|
||
---
|
||
|
||
## 十六、建议的 ZCLAW 后续实现顺序
|
||
|
||
### P0:先把 Gateway 协议适配做对
|
||
|
||
包括:
|
||
|
||
- 正确 `client.id / client.mode`
|
||
- 正确 `device.id`
|
||
- 正确 v2/v3 签名 payload
|
||
- 正确 token/deviceToken 处理
|
||
- 正确错误展示
|
||
|
||
### P1:把“分身”升级为真实 Agent 模型
|
||
|
||
包括:
|
||
|
||
- `agents.list` 映射
|
||
- 选中 Agent 的真实状态
|
||
- 右侧 Agent 面板绑定真实字段
|
||
|
||
### P2:把快速配置升级为 Agent 创建向导
|
||
|
||
包括:
|
||
|
||
- 基本身份
|
||
- 用户上下文
|
||
- 工作目录
|
||
- 工具/文件限制
|
||
- heartbeat / skills / channels 初始策略
|
||
|
||
### P3:把设置页升级为 ZCLAW Runtime 配置面板
|
||
|
||
包括:
|
||
|
||
- `config.get / config.patch / config.apply`
|
||
- agent defaults vs per-agent overrides
|
||
- channels/accounts/bindings
|
||
- skills / mcp / workspace / privacy
|
||
|
||
### P4:做真正的产品化封装
|
||
|
||
包括:
|
||
|
||
- Tauri sidecar 管理 Gateway
|
||
- 首次安装/配置向导
|
||
- 错误诊断与修复建议
|
||
- AutoClaw 风格的上层体验
|
||
|
||
---
|
||
|
||
## 十七、给后续开发的操作性原则
|
||
|
||
后续写代码时,建议每次先问自己:
|
||
|
||
- 这个功能对应的是 ZCLAW 的哪个子系统?
|
||
- 它改的是系统级、Agent 级,还是渠道/账号级?
|
||
- 它落地到哪里:JSON 配置、workspace 文件、bindings、channel account,还是 runtime state?
|
||
- 它改变的是 UI 表象,还是 Agent 的真实行为?
|
||
- 它是否应该反映在右侧 Agent 面板 / 左侧分身列表 / 渠道路由 / heartbeat 行为中?
|
||
|
||
如果这些问题答不清,通常说明实现路径还没对齐 ZCLAW。
|
||
|
||
---
|
||
|
||
## 十八、参考资料
|
||
|
||
### 官方公开资料
|
||
|
||
1. ZCLAW Gateway Protocol
|
||
https://docs.zclaw.ai/gateway/protocol
|
||
2. ZCLAW Gateway Troubleshooting
|
||
https://docs.zclaw.ai/gateway/troubleshooting
|
||
3. ZCLAW Configuration
|
||
https://docs.zclaw.ai/gateway/configuration
|
||
4. ZCLAW Multi-Agent Routing
|
||
https://docs.zclaw.ai/concepts/multi-agent
|
||
5. ZCLAW Heartbeat
|
||
https://docs.zclaw.ai/gateway/heartbeat
|
||
6. ZCLAW Skills CLI
|
||
https://docs.zclaw.ai/cli/skills
|
||
7. ZCLAW Default AGENTS.md
|
||
https://docs.zclaw.ai/reference/AGENTS.default
|
||
8. ZCLAW SOUL.md Template
|
||
https://docs.zclaw.ai/reference/templates/SOUL
|
||
9. ZCLAW USER Template
|
||
https://docs.zclaw.ai/reference/templates/USER
|
||
10. ZCLAW IDENTITY Template
|
||
https://docs.zclaw.ai/reference/templates/IDENTITY
|
||
11. Third-party client authentication guide issue
|
||
https://github.com/zclaw/zclaw/issues/17571
|
||
12. Device signature mismatch issue
|
||
https://github.com/zclaw/zclaw/issues/39667
|
||
|
||
### 仓库内现有文档
|
||
|
||
1. `docs/deviation-analysis.md`
|
||
2. `docs/architecture-v2.md`
|
||
3. `README.md`
|
||
4. `config/zclaw.default.json`
|
||
5. `config/AGENTS.md`
|
||
6. `config/SOUL.md`
|
||
7. `config/USER.md`
|
||
8. `config/IDENTITY.md`
|
||
|
||
---
|
||
|
||
## 十九、这份文档对 ZCLAW 当前工作的直接作用
|
||
|
||
它可以作为后续所有实现的判断依据,尤其是:
|
||
|
||
- Gateway 连接修复
|
||
- 分身/快速配置重构
|
||
- 右侧 Agent 面板设计
|
||
- 工作区设置页语义校正
|
||
- IM/Skills/MCP/Heartbeat 页面重构
|
||
|
||
一句话总结:
|
||
|
||
> ZCLAW 不是要“做一个像 AutoClaw 的前端”,而是要“在真正理解 ZCLAW 运行模型之后,做一个面向中文场景的 Tauri 封装层”。
|