Agent 技能助手
- 作者仓库星标 2,521
- 作者仓库 wanwu
子会话递归嵌套渲染架构协议 (Nesting Architecture Protocol)
本指南针对万悟平台中「主消息 -> 子会话 (Skill/Tool/Knowledge) -> 孙级会话」的递归序列化渲染标准,定义了 AI 助手及后续维护者必须遵守的底层逻辑。
1. 核心模型:三明治序列 (The Sandwich Sequence)
为了支持正文与多个子会话(工具调用、知识库)的任意插空排列,我们不再按类型分块渲染,而是通过 messageSequence 数组实现**“三明治”交错结构**。
type: 'main': 文本片段。直接由StreamProcessor驱动打字机渲染。type: 'sub': 子会话卡片。触发SubConversion.vue组件递归渲染。
核心映射逻辑:
- 顶级子会话:
parentId为空的包,进入主消息的messageSequence。 - 嵌套子会话: 具有
parentId的包,必须由对应的父组件 ID “领养”,存入其自身的messageSequence中。
2. 时序法则:Order 绝对排序
- 局部闭包排序: 在每一个
messageSequence内部,必须以order字段为唯一权重进行升序排列。 - 同 Order 追加协定: 若同一个 ID 下出现多个 Order 相同的数据包,前端视为“内容的物理追加”而非“组件的新增”。
3. 动力学:动静 Chunk 分层
在渲染 main 片段时,必须区分两种状态以防止打字时界面闪烁:
stableChunks: 已完成 Markdown 语法闭环解析并生成的 HTML 块集合。activeResponse: 正在缓冲区排队、尚未完成闭环解析的输入文本(打字动画部分)。
4. 引用溯源:Data Attributes 协议
所有生成的子会话 DOM 必须携带以下身份锚点,以支持「引文角标点击」的事件冒泡定位:
data-sub-id: 该段文字所属的原子消息 ID(若是吸收片段,则为分片 ID)。data-parent-id: 视觉所属的容器组件 ID(父卡片 ID)。
5. 响应式红线 (CRITICAL) - Vue 2 专供
[!IMPORTANT] 绝对禁止使用浅拷贝或快照!
在将子会话(尤其是
agentSkillText正文分段)注册进父组件序列时,必须直接传递原始响应式对象的引用(即parentSub.messageSequence.push(subConversion))。
- 原因: 只有保持引用一致,外部
StreamProcessor对activeResponse的实时增长才能无缝穿透进多层嵌套的子组件 UI 中。若使用{...subConversion}浅拷贝,会导致打字效果丢失或不连续。
6. 生命周期管理
- 状态单向锁: 状态
status: 3/4(结束/失败)一旦更新,不再受后续包干扰回退。 - ID 纠错逻辑: 若后端返回
id === parentId(自引用死循环),必须在sseMethod.js拦截层将其重刷 ID 为content_前缀的分片包。
- 流狐分类
- AI 智能
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 88 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @UnicomAI · 未声明 license
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 即装即用
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- 未声明
- 底层运行要求
- 未声明
- 检测到的文件与系统行为
-
- 只读
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 为了支持正文与多个子会话(工具调用、知识库)的任意插空排列,我们不再按类型分块渲染,而是通过 messageSequence 数组实现“三明治”交错结构。 type: 'main': 文本片段。直接由 StreamProcessor 驱动打字机渲染。 type: 'sub': 子会话卡片。触发 SubConversion.vue 组件递归渲染。
顶级子会话: parentId 为空的包,进入主消息的 messageSequence。 嵌套子会话: 具有 parentId 的包,必须由对应的父组件 ID “领养”,存入其自身的 messageSequence 中。
局部闭包排序: 在每一个 messageSequence 内部,必须以 order 字段为唯一权重进行升序排列。 同 Order 追加协定: 若同一个 ID 下出现多个 Order 相同的数据包,前端视为“内容的物理追加”而非“组件的新增”。
在渲染 main 片段时,必须区分两种状态以防止打字时界面闪烁: stableChunks: 已完成 Markdown 语法闭环解析并生成的 HTML 块集合。 activeResponse: 正在缓冲区排队、尚未完成闭环解析的输入文本(打字动画部分)。
所有生成的子会话 DOM 必须携带以下身份锚点,以支持「引文角标点击」的事件冒泡定位: data-sub-id: 该段文字所属的原子消息 ID(若是吸收片段,则为分片 ID)。 data-parent-id: 视觉所属的容器组件 ID(父卡片 ID)。
[!IMPORTANT] 绝对禁止使用浅拷贝或快照! 在将子会话(尤其是 agentSkillText 正文分段)注册进父组件序列时,必须直接传递原始响应式对象的引用(即 parentSub.messageSequence.push(subConversion))。
# 子会话递归嵌套渲染架构协议 (Nesting Architecture Protocol)
本指南针对万悟平台中「主消息 -> 子会话 (Skill/Tool/Knowledge) -> 孙级会话」的递归序列化渲染标准,定义了 AI 助手及后续维护者必须遵守的底层逻辑。
## 1. 核心模型:三明治序列 (The Sandwich Sequence)
为了支持正文与多个子会话(工具调用、知识库)的任意插空排列,我们不再按类型分块渲染,而是通过 `messageSequence` 数组实现**“三明治”交错结构**。
- **`type: 'main'`**: 文本片段。直接由 `StreamProcessor` 驱动打字机渲染。
- **`type: 'sub'`**: 子会话卡片。触发 `SubConversion.vue` 组件递归渲染。
### 核心映射逻辑:
- **顶级子会话**: `parentId` 为空的包,进入主消息的 `messageSequence`。
- **嵌套子会话**: 具有 `parentId` 的包,必须由对应的父组件 ID “领养”,存入其自身的 `messageSequence` 中。
## 2. 时序法则:Order 绝对排序
- **局部闭包排序**: 在每一个 `messageSequence` 内部,必须以 `order` 字段为唯一权重进行升序排列。
- **同 Order 追加协定**: 若同一个 ID 下出现多个 Order 相同的数据包,前端视为“内容的物理追加”而非“组件的新增”。
## 3. 动力学:动静 Chunk 分层
在渲染 `main` 片段时,必须区分两种状态以防止打字时界面闪烁:
- **`stableChunks`**: 已完成 Markdown 语法闭环解析并生成的 HTML 块集合。
- **`activeResponse`**: 正在缓冲区排队、尚未完成闭环解析的输入文本(打字动画部分)。
## 4. 引用溯源:Data Attributes 协议
所有生成的子会话 DOM 必须携带以下身份锚点,以支持「引文角标点击」的事件冒泡定位:
- **`data-sub-id`**: 该段文字所属的原子消息 ID(若是吸收片段,则为分片 ID)。
- **`data-parent-id`**: 视觉所属的容器组件 ID(父卡片 ID)。
## 5. 响应式红线 (CRITICAL) - Vue 2 专供
> [!IMPORTANT]
> **绝对禁止使用浅拷贝或快照!**
>
> 在将子会话(尤其是 `agentSkillText` 正文分段)注册进父组件序列时,**必须直接传递原始响应式对象的引用**(即 `parentSub.messageSequence.push(subConversion)`)。
>
> - **原因**: 只有保持引用一致,外部 `StreamProcessor` 对 `activeResponse` 的实时增长才能无缝穿透进多层嵌套的子组件 UI 中。若使用 `{...subConversion}` 浅拷贝,会导致打字效果丢失或不连续。
## 6. 生命周期管理
- **状态单向锁**: 状态 `status: 3/4`(结束/失败)一旦更新,不再受后续包干扰回退。
- **ID 纠错逻辑**: 若后端返回 `id === parentId`(自引用死循环),必须在 `sseMethod.js` 拦截层将其重刷 ID 为 `content_` 前缀的分片包。 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> 1. 核心模型:三明治序列 (The Sandwich Sequence) → 核心映射逻辑: → 2. 时序法则:Order 绝对排序 → 3. 动力学:动静 Chunk 分层 → 4. 引用溯源:Data Attributes 协议 → 5. 响应式红线 (CRITICAL) - Vue 2 专供
要点 -> “三明治”交错结构 · type: 'main' · type: 'sub' · 顶级子会话 · 嵌套子会话 · 局部闭包排序 · 同 Order 追加协定 · stableChunks
文件/命令 -> messageSequence · type: 'main' · StreamProcessor · type: 'sub' · SubConversion.vue · parentId · order · main
内容 SHA-256 -> bd44d9683acb
原文结构
适用与边界
原文中的明确线索
messageSequence、type: 'main'、StreamProcessor、type: 'sub'、SubConversion.vue、parentId、order、main