fix: close alignment review races and preserve local conversation state
This commit is contained in:
1 parent
c7231be2c5
commit
37ddb2ce24
14 files changed
+203
-45
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# YCode
|
||||
|
||||
借助 REA,按 WorkBuddy 的视觉、交互与功能进行 **1:1 复刻**(Windows 优先)。Electron + React;当前优先使用 OMP 内核,保留自建 OpenAI 兼容循环作为回退。
|
||||
借助 REA,按 WorkBuddy 的视觉、交互与功能进行 **1:1 复刻**(Windows 优先)。Electron + React;当前聊天执行路径使用 Claude Agent SDK;历史 OMP 文档不代表当前入口。
|
||||
|
||||
> 所有查看 WorkBuddy 实现的工作统一通过 REA。当前实现包含 mock 与未完成项,尚未达到完整 1:1;现行约定见 `AGENTS.md`,最新对话状态见 [八类对齐记录](docs/对话区域-八类对齐-2026-10-15.md),基础证据见 [统一字体与间距](docs/统一字体与间距-2026-10-15.md)、[图表、图片与文件](docs/对话区域-图表图片文件-2026-10-15.md) 和 [对话渲染源码还原](docs/源码还原-对话渲染-2026-10-15.md)。
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
| 桌面壳 | Electron 37(`contextIsolation` + `sandbox`,无 `nodeIntegration`) |
|
||||
| 前端 | React 19 + Vite 8 + TypeScript 7 + Zustand 5 |
|
||||
| 构建 | electron-vite 5 |
|
||||
| 模型接入 | OMP RPC sidecar(优先,独立 profile);自建 `/chat/completions` + SSE 循环(回退) |
|
||||
| 模型接入 | Claude Agent SDK(`src/main/agent/claude`),通过当前会话执行服务接入 |
|
||||
| 存储 | MVP 为 JSON(`userData/`),后续替换为 SQLite |
|
||||
|
||||
## 目录
|
||||
@@ -38,10 +38,11 @@ docs/ 方案与验收记录
|
||||
## 开发
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm ci --legacy-peer-deps
|
||||
npm run dev # 启动桌面窗口(含热更新)
|
||||
npm run build # 类型检查 + 打包产物到 out/
|
||||
npm start # 预览构建产物
|
||||
npm run test:alignment # 十项对齐的离线状态/宿主回归,不启动模型
|
||||
npm run typecheck # 仅类型检查
|
||||
npm run test:markdown # 正文、表格、代码块与源文本规则
|
||||
npm run test:recovered # 还原的解析器、源码处理、缓存、代码组件与数学
|
||||
@@ -50,33 +51,36 @@ npm run test:resources # 本地文件、图片、下载与实际 IPC
|
||||
npm run test:font-size # 六档字号、CSS 覆盖、固定区域与动态样式
|
||||
npm run test:chat # 消息顺序、发送状态与工具输出适配
|
||||
npm run test:conversation # 专用工具、问答/审批、消息操作、输入与真实文件执行
|
||||
npm run test:conversation-ipc # 分支、恢复、并行会话、附件和 localhost 转写
|
||||
npm run test:persistence # 实际 IPC → 会话 JSON 的顺序与终态
|
||||
npm run test:sessions # 并发读写、原子替换与冷加载
|
||||
npm run test:omp # OMP 回合终态、取消、错误与监听清理
|
||||
npm run test:omp-session # OMP 持久会话参数与进程释放(假子进程)
|
||||
npm run test:omp:bundled # 内置 OMP 资产、摘要与 --version 启动(--packaged 检查打包产物)
|
||||
```
|
||||
|
||||
## Windows 打包
|
||||
|
||||
完整发布流程见 [Windows 分发包 SOP](docs/打包流程SOP-2026-10-18.md)。
|
||||
使用 Windows x64、Node.js 24.x 和 npm。当前源码构建与本次验收边界见 [十项对齐实现与验收](docs/对话输入统一对齐实现与验收-2026-10-21.md)。[旧打包 SOP](docs/打包流程SOP-2026-10-18.md) 中 OMP 与旧版本信息仅作历史参照。
|
||||
|
||||
~~~powershell
|
||||
npm run dist:installer
|
||||
~~~
|
||||
|
||||
该命令会先校验并内置 OMP,再构建主进程/预加载/渲染进程并生成 NSIS 安装程序。当前 Windows x64 测试包未签名。
|
||||
该命令构建主进程/预加载/渲染器,再生成 NSIS 安装程序到 `release/`。当前配置打包 Windows Claude SDK 可执行文件;不要从 Linux 复制 `node_modules` 到 Windows,也不要省略 optional dependencies。本次只验证 Linux 源码构建,Windows 安装包和实际启动仍需本机验收,未宣称已签名或可直接覆盖生产安装。
|
||||
|
||||
## 首次运行
|
||||
|
||||
1. OMP 按 `YCODE_OMP_PATH` → 随包 `resources/omp/omp.exe` → 本机 Ygent 安装的顺序探测;随包版本由 `resources/omp/runtime.lock.json` 锁定,`npm run omp:vendor` 负责拉取与校验。使用 `ycode` profile。回退循环的上游地址、模型和 Key 在应用设置中配置;设置尚未同步 OMP profile。
|
||||
2. 选择**工作目录**;默认模式限制路径、写入需确认,命令执行需要明确开启完全访问。
|
||||
先在独立数据目录测试,避免使用生产配置:
|
||||
|
||||
```powershell
|
||||
$env:YCODE_USER_DATA_DIR = Join-Path $env:TEMP 'ycode-alignment-review'
|
||||
npm run dev
|
||||
```
|
||||
|
||||
1. 在应用设置配置真实模型和凭据;不要把凭据放入源码或 Git。
|
||||
2. 选择测试工作目录,按实际工具请求审阅授权;plan/ask 限制和默认拒绝仍有效。
|
||||
3. 回到对话区提问,例如「列出工作目录里有哪些文件」
|
||||
|
||||
## 安全边界
|
||||
|
||||
- 渲染进程没有 Node / fs / 网络能力,只能通过 preload 暴露的受限 API
|
||||
- API Key 用 Electron `safeStorage`(Windows DPAPI)加密;系统不支持时降级明文并在 UI 明确告警
|
||||
- 默认权限下工具路径做工作区逃逸检查,写入需审批;完全访问允许更广的路径与命令操作。该策略不等同于原版操作系统沙箱。
|
||||
- 当前授权由宿主与 Claude SDK 协作处理;完全访问影响工具权限。工作目录不是操作系统安全隔离,勿把未验证的 SDK 规则或旧沙箱说明当成保证。
|
||||
- 外链一律交由系统浏览器打开
|
||||
Reference in new issue
Block a user