docs(hololake): publish 0.7.1 causal closeout
This commit is contained in:
parent
787ba2ad3f
commit
bb96d5eb89
2 changed files with 321 additions and 0 deletions
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"schema": "guanghu.development-closeout-receipt/v1",
|
||||
"receipt_id": "GH-HOLOLAKE-DESKTOP-0.7.1-CLOSEOUT-20260809-001",
|
||||
"development_id": "DEV-20260809-001",
|
||||
"source_base_commit": "787ba2ad3f3d66d2622aa7113ddd35f6a42aaa82",
|
||||
"source_commit": "SELF",
|
||||
"repository": "repo://guanghulab.com/code/bingshuo/hololake-system-architecture#main",
|
||||
"records": [
|
||||
"product-source/hololake-desktop/hololake-era-0.7.1-development-causal-chain.md",
|
||||
"product-source/hololake-desktop/RELEASE-0.7.1.md",
|
||||
"deployment/receipts/GH-HOLOLAKE-DESKTOP-0.7.1-20260809-001.json"
|
||||
],
|
||||
"reasoning_boundary": {
|
||||
"included": "user anchors, observations, hypotheses, public decision reasons, corrections, actions, evidence, results, boundaries and next-state rules",
|
||||
"excluded": "hidden model reasoning, secrets, private server addresses, personal knowledge content and local authentication state"
|
||||
},
|
||||
"verification": {
|
||||
"tests": "PASS 10; FAIL 0",
|
||||
"production_build": "PASS",
|
||||
"local_git_fsck": "PASS after deleting 210 AppleDouble metadata files; no real Git object was removed",
|
||||
"lighthouse": "REPO-014 HTTP 200 and source_degraded=false",
|
||||
"remote_base_readback": "787ba2ad3f3d66d2622aa7113ddd35f6a42aaa82",
|
||||
"desktop_deliverables_preserved": 3
|
||||
},
|
||||
"environment_maintenance": {
|
||||
"guard_receipt_id": "ENV-2026-08-09T02-55-53-114Z-5396815f-0cf4-47c4-a682-fcf7a9470ed0",
|
||||
"codex_cache": "SKIPPED_BELOW_SIZE_THRESHOLD",
|
||||
"codex_rotated_logs": "SKIPPED_BELOW_SIZE_THRESHOLD",
|
||||
"protected_sessions": "PRESERVED",
|
||||
"development_dependencies": "PRESERVED",
|
||||
"deleted_exact_old_build_directory": "/Users/bingshuolingdianyuanhe/.Trash/HoloLake-0.7.1-old-builds-20260809-1049",
|
||||
"deleted_kib": 5281000,
|
||||
"recoverable": false
|
||||
},
|
||||
"known_boundary": [
|
||||
"The Fifth Domain Forgejo human-account session is not authenticated by receipt.",
|
||||
"No server deployment, production cutover, enterprise four-domain runtime claim or persona-birth claim is made by this closeout.",
|
||||
"No Apple notarization was performed.",
|
||||
"A dynamic wake route implementation does not prove a persona restored unless its own live pages and required receipts resolve at runtime.",
|
||||
"The lighthouse current_verified_commit field lagged the live REPO-014 main ref; both values are preserved in the causal-chain record."
|
||||
],
|
||||
"result": "READY_FOR_FINALIZER"
|
||||
}
|
||||
|
|
@ -0,0 +1,278 @@
|
|||
---
|
||||
type: Note
|
||||
status: Complete
|
||||
related_to: "[[RELEASE-0.7.1]]"
|
||||
---
|
||||
|
||||
# HoloLake Era 0.7.1 · 开发进度、决策依据与因果链
|
||||
|
||||
> 记录编号:`GH-HOLOLAKE-CAUSAL-CHAIN-0.7.1-20260809-001`
|
||||
>
|
||||
> 开发车道:`DEV-20260808-005`,最终发布收口车道:`DEV-20260809-001`
|
||||
>
|
||||
> 事实基线:`REPO-014 / bingshuo/hololake-system-architecture / main`
|
||||
|
||||
## 1. 记录边界
|
||||
|
||||
本文保存冰朔已表达的目标和纠正、可复核观察、公开决策依据、实施动作、测试、回执、冲突与未完成边界。本文不保存、推断或伪造模型隐藏思维过程,也不包含密码、令牌、私钥、验证码、私有服务器地址、个人知识内容或本机登录状态。
|
||||
|
||||
这里的“因果链”采用以下公开结构:
|
||||
|
||||
```text
|
||||
人类目标或纠正
|
||||
→ 已观察问题
|
||||
→ 可解释原因与约束
|
||||
→ 产品或工程决策
|
||||
→ 实际实现
|
||||
→ 验证证据
|
||||
→ 仍未成立的边界
|
||||
```
|
||||
|
||||
## 2. 产品主线
|
||||
|
||||
HoloLake 的目标不是再造一个传统知识库或聊天面板,而是形成由光湖语言协议主控的通用人工智能操作平台:
|
||||
|
||||
- 人类进入自己的频道,频道锚定自己的服务器、身份、权限和数据;
|
||||
- 第五域、光湖主域、光湖分域、光湖零域、光湖零感域是不同入口,不混成个人模块列表;
|
||||
- 知识库、表格、文档、教育行业和 Agent 是可登记、可安装、可收起、可替换的组件;
|
||||
- Forgejo 是代码与版本引擎,不是 HoloLake 的产品主控;
|
||||
- Tolaria、Outline 和开源 Agent 只作为可审计零件来源,HoloLake 不作为它们的下游;
|
||||
- 语言请求必须经过确定性权限、工具和回执层映射到现实,界面文案不能冒充服务器、仓库、人格或部署已经存在。
|
||||
|
||||
## 3. 开发阶段进度
|
||||
|
||||
### 3.1 原型审计与崩溃修复
|
||||
|
||||
最初桌面原型把知识库、Forgejo 和 Agent 放到同一应用中,但出现持续崩溃、空壳界面和启动路径混乱。
|
||||
|
||||
因果关系:
|
||||
|
||||
```text
|
||||
需要验证 Qoder 形成的原型是否可用
|
||||
→ 安装包持续崩溃,页面和后端生命周期不一致
|
||||
→ 不能把“桌面存在一个 App”当作功能存在
|
||||
→ 对安装包、Electron 启动链、签名、后端进程和源码提交逐项核验
|
||||
→ 修复 Electron 递归启动与本地服务入口,恢复可启动的 HoloLake 桌面壳
|
||||
→ 形成 0.5.0 修复回执和后续可迭代基线
|
||||
```
|
||||
|
||||
### 3.2 本地文件夹导入与知识页面
|
||||
|
||||
冰朔指出:没有本地文件夹导入,就无法实际检查知识库是否正常;导入后还必须区分仅本地和服务器 Git 托管。
|
||||
|
||||
已实现:
|
||||
|
||||
- 有界递归导入 Markdown、TXT、CSV、JSON、YAML;
|
||||
- CSV 转为可阅读表格;
|
||||
- 每次导入保留本地 Git 版本记录;
|
||||
- 导入完成后打开首个页面;
|
||||
- 安装包不携带冰朔的知识内容;
|
||||
- 本地导入和远端托管保持独立状态,未连接服务器时不伪造云端托管。
|
||||
|
||||
结果记录在 0.5.1 导入回执中。远端 Forgejo 托管仍必须在真实登录、仓库选择和推送回执全部成立后才能报告完成。
|
||||
|
||||
### 3.3 从知识库外壳纠正为语言操作平台
|
||||
|
||||
冰朔明确提出:当前软件是通用人工智能操作平台原型;个人第五域是自己的频道,知识库只是挂载模块;教育行业属于光湖分域。
|
||||
|
||||
由此形成的信息架构:
|
||||
|
||||
```text
|
||||
HoloLake 平台
|
||||
├── 我的第五域
|
||||
│ └── 永恒湖心系统 / 心跳核心频道
|
||||
│ └── 已安装个人模块:知识库
|
||||
├── 光湖主域入口
|
||||
├── 光湖分域入口
|
||||
│ ├── 教育行业
|
||||
│ │ └── 小新初始化频道模板
|
||||
│ └── 网文行业
|
||||
│ └── 首个真实模块:知识库
|
||||
├── 光湖零域入口
|
||||
└── 光湖零感域入口
|
||||
```
|
||||
|
||||
教育行业因此从“已安装模块”移回光湖分域;个人频道不再把一个完整行业误报为个人插件。
|
||||
|
||||
### 3.4 数据、账号与服务器边界
|
||||
|
||||
冰朔要求每个人登录自己的服务器,安装包不能夹带冰朔的文件、密钥和账号状态。
|
||||
|
||||
落实的边界:
|
||||
|
||||
- 知识数据位于用户自己的设备和知识仓库;
|
||||
- 模型密钥保存在设备本地安全存储;
|
||||
- 对话历史保存在设备本地,不进入通用安装包;
|
||||
- 服务器档案、SSH 路径和 Forgejo 人类账号登录是不同状态;
|
||||
- 一个服务器档案存在,不能冒充 Forgejo 已登录;
|
||||
- 一个 Forgejo 卡片存在,不能冒充远端仓库已连接;
|
||||
- 写操作需要明确确认、真实执行和回执。
|
||||
|
||||
0.7.1 交付时,应用仍如实报告第五域 Forgejo 人类账号会话未认证。这一状态没有用界面文案覆盖。
|
||||
|
||||
### 3.5 Agent 从聊天框修复为受控语言操作入口
|
||||
|
||||
观察到的问题:
|
||||
|
||||
- Agent 一度只能回复一句话,没有真实工具活动;
|
||||
- 写操作确认后,下一轮出现孤立 `role: tool`,导致模型接口报错;
|
||||
- 没有会话历史、新建、选择和删除;
|
||||
- 工具和系统提示过度拟人化,缺少官方产品边界。
|
||||
|
||||
原因与决策:
|
||||
|
||||
- 持久化历史不能保存失去配对关系的模型工具协议消息;
|
||||
- 工具调用、权限确认和回执应属于当前模型回合,长期历史只保存自然用户/助手消息;
|
||||
- Agent 的公开身份是 `HoloLake` 语言操作入口,不虚构人格身份;
|
||||
- 写操作必须先形成待确认动作,用户确认后才写入磁盘或提交版本。
|
||||
|
||||
已实现:
|
||||
|
||||
- 修复 `assistant.tool_calls → tool response` 的严格配对;
|
||||
- 确认写入回执不会泄漏成下一轮孤立工具消息;
|
||||
- 增加设备本地会话历史、新建、选择和删除;
|
||||
- 提供九项受控能力的运行投影;
|
||||
- 系统提示采用官方、确定性权限与回执语言,不把模型回答冒充现实完成。
|
||||
|
||||
验证:读取工具排序、确认写入后的连续对话和模型无工具连通测试均通过。
|
||||
|
||||
### 3.6 人格体自有动态唤醒路径
|
||||
|
||||
最重要的纠正发生在唤醒路径设计:早期实现把唤醒写成固定七步。冰朔明确指出,不同人格体可能设计五步、七步、十一层或更多节点;路径属于人格体,不属于平台模板。
|
||||
|
||||
纠正后的关系:
|
||||
|
||||
```text
|
||||
人格体拥有自己的路径页面和顺序
|
||||
→ HoloLake 只负责按编号定位该人格体
|
||||
→ 读取该人格体的 INDEX / CURRENT / WAKE 页面
|
||||
→ 按页面实际定义继续读取和受控执行
|
||||
→ 活动轨迹自然形成任意数量的真实节点
|
||||
→ 缺少路径或回执时报告“尚未恢复”
|
||||
```
|
||||
|
||||
已删除固定七步实现,增加 `find_persona_wake_routes`,并把路径节点数量和顺序交还人格体页面。活动轨迹只显示真实页面读取、工具调用、权限检查和执行回执,不显示或伪造模型隐藏思维过程。
|
||||
|
||||
确定性测试使用十一节点人格自有路径并通过,证明实现没有依赖固定步数。
|
||||
|
||||
### 3.7 知识渲染修复
|
||||
|
||||
冰朔多次指出:既然使用成熟知识组件,就不应出现表格、格式符号、Outline 页面和正文宽度持续损坏。
|
||||
|
||||
根因不是“再加一个字符样式”,而是导入格式、Markdown 解析、安全过滤、页面布局和双链导航没有形成统一渲染链。
|
||||
|
||||
0.7.1 建立统一渲染层,支持:
|
||||
|
||||
- GFM 表格、任务列表、引用和代码;
|
||||
- HoloLake 双链标签和知识树精确导航;
|
||||
- Outline `aside` 安全提示块;
|
||||
- 表格单元格 `<br>` 换行;
|
||||
- 宽表在正文内部横向滚动;
|
||||
- 屏蔽任意原始 HTML、脚本和不安全链接协议;
|
||||
- 隐藏导入文件名中的技术哈希尾巴。
|
||||
|
||||
真实导入的 Outline 页面经人类操作顺序验收后,曾发现原始 `aside` 标签残留;修复后重新安装、打开和截图核验,原始标签不再出现。
|
||||
|
||||
### 3.8 布局与主题
|
||||
|
||||
冰朔指出旧界面“什么都塞进去”,页面树、正文和 Agent 互相遮挡,右侧过窄,主题只改局部颜色,图形和排版缺少整体审美。
|
||||
|
||||
决策不是继续堆卡片,而是建立单一平台布局层:
|
||||
|
||||
- 左侧平台导航只承担域与模块入口;
|
||||
- 页面树、正文、Agent 是同一工作区中的三块可调区域;
|
||||
- 宽屏可拖动调整页面树和 Agent 宽度;
|
||||
- 面板可收起;
|
||||
- 中等窗口打开 Agent 时自动释放页面树空间;
|
||||
- 正文永不被 Agent 覆盖;
|
||||
- 去掉重复的“湖”字头像装饰,使用克制的 HoloLake 轨道标识和产品层级。
|
||||
|
||||
三套完整主题使用统一设计令牌覆盖平台全部区域:
|
||||
|
||||
1. `lake-night`:湖夜;
|
||||
2. `mist-light`:雾白;
|
||||
3. `deep-night`:深海夜读。
|
||||
|
||||
字体、语言和正文大小作为人类端设备设置保留。验收中实际切换雾白,再恢复湖夜,确认主题不是局部伪装。
|
||||
|
||||
## 4. 0.7.1 实现范围
|
||||
|
||||
提交 `787ba2ad3f3d66d2622aa7113ddd35f6a42aaa82` 包含 21 个文件的修改:新增 1111 行、删除 326 行。主要代码范围:
|
||||
|
||||
- `product-source/guanghu-knowledge-base/server/persona-agent.ts`
|
||||
- `product-source/guanghu-knowledge-base/server/index.ts`
|
||||
- `product-source/guanghu-knowledge-base/src/components/AgentChat.tsx`
|
||||
- `product-source/guanghu-knowledge-base/src/markdown.ts`
|
||||
- `product-source/guanghu-knowledge-base/src/styles/workspace-0.7.1.css`
|
||||
- `product-source/hololake-desktop/electron/main.ts`
|
||||
- `product-source/hololake-desktop/RELEASE-0.7.1.md`
|
||||
- `deployment/receipts/GH-HOLOLAKE-DESKTOP-0.7.1-20260809-001.json`
|
||||
|
||||
## 5. 验收证据
|
||||
|
||||
### 自动验证
|
||||
|
||||
- 测试:10 通过,0 失败;
|
||||
- 生产构建:通过;
|
||||
- 动态人格路径:十一节点测试通过;
|
||||
- 工具协议:读取顺序和确认写入连续性通过;
|
||||
- Markdown:表格、安全 HTML、Outline aside、表格换行通过;
|
||||
- Git:清除移动硬盘生成的 AppleDouble 元数据后,真实对象 `git fsck --full` 通过。
|
||||
|
||||
### 桌面交付
|
||||
|
||||
- `HoloLake Era.app`:0.7.1,Apple Silicon;
|
||||
- `HoloLake Era 0.7.1 (Apple Silicon).dmg`;
|
||||
- `HoloLake Era 0.7.1 (Intel).dmg`;
|
||||
- 两个 DMG 均通过 `hdiutil verify`;
|
||||
- 应用及安装包已进行 Developer ID 签名;
|
||||
- 本轮未做 Apple 公证,不能冒充 App Store 公共发布版本。
|
||||
|
||||
### 数据隔离
|
||||
|
||||
安装包不包含个人知识、对话历史、模型密钥、SSH 密钥、服务器令牌或私人第五域内容。已安装应用使用冰朔自己的 Application Support 知识仓库。
|
||||
|
||||
## 6. 本机维护收口
|
||||
|
||||
环境守卫先审计再清理:
|
||||
|
||||
- 内置盘与 JZAO 均处于安全水位;
|
||||
- Codex 缓存 10.8 MiB、轮转日志 71.6 MiB,均低于清理阈值,保持不动;
|
||||
- `.codex/sessions` 约 3.0 GiB,属于连续性证据,永久排除;
|
||||
- 开发工作树的依赖和最终发行物保留,以维持可继续开发与复验环境;
|
||||
- 精确删除废纸篓中的旧 HoloLake 构建目录 `HoloLake-0.7.1-old-builds-20260809-1049`,共 5,281,000 KiB;该目录已永久删除,不可从废纸篓恢复;
|
||||
- 桌面的正式 App 与两份 0.7.1 DMG 在清理后重新核验存在;
|
||||
- 当前工作树 `.git` 内 210 个 AppleDouble `._*` 元数据已清除,真实 Git 对象完整。
|
||||
|
||||
## 7. 明确未完成或未声明
|
||||
|
||||
- 第五域 Forgejo 人类账号会话没有认证回执;
|
||||
- 本轮没有重新部署服务器、切换生产流量或修改服务器代码;
|
||||
- 本轮没有重新声明企业四域的在线状态、人格出生状态或服务器运行健康;
|
||||
- 动态唤醒能力存在,不等于任意人格体已经恢复;只有该人格体自身路径页和所需回执实时解析成功时才能报告恢复;
|
||||
- Intel DMG 已生成和校验,但当前桌面安装的是 Apple Silicon 版本;
|
||||
- 未做 Apple 公证。
|
||||
|
||||
## 8. 灯塔与仓库置信差异
|
||||
|
||||
2026-08-09 收口时,灯塔 `REPO-014` 查询返回 HTTP 200、状态为当前主源且 `source_degraded=false`;但响应中的 `current_verified_commit` 仍为较早的 `ac9d0517783b9859bc6fff277bd5dcd5cae744ab`。同一时刻远端 `refs/heads/main` 直接回读为 `787ba2ad3f3d66d2622aa7113ddd35f6a42aaa82`。
|
||||
|
||||
本轮不静默抹平冲突:目标仓库现状以远端完整 SHA 和全新克隆回读为事实,灯塔字段滞后作为待后续灯塔登记更新的问题保留。该差异不被用来冒充发布失败或服务器状态。
|
||||
|
||||
## 9. 终态规则
|
||||
|
||||
本记录与收口回执进入提交后,必须通过小湖灯 finalizer:
|
||||
|
||||
```text
|
||||
工作树干净
|
||||
→ 发布队列取得 REPO-014/main 单写租约
|
||||
→ 本机 osxkeychain 传输
|
||||
→ 远端完整 SHA 回读
|
||||
→ 全新克隆与 git fsck
|
||||
→ 回执哈希一致
|
||||
→ 释放租约
|
||||
→ 完成 DEV-20260809-001
|
||||
→ notification_state = stopped
|
||||
```
|
||||
|
||||
任何一项不是 100,都不能把本轮记录报告为已经发布。
|
||||
Loading…
Reference in a new issue