Files
ycode/docs/reference/ygent-workbuddy-ai-gap-2026-10-14.md
T

166 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ygent 与 WorkBuddy AI 实现对比及可实施项
日期:2026-10-14
对比对象:[WorkBuddy-AI-实现分析报告](WorkBuddy-AI-实现分析报告.md)(对该报告所述 WorkBuddy 桌面版能力的静态逆向结论)× Ygent 代码库实际实现
状态说明:本文是**差距分析 + 可实施项评估**,不是实施方案,也不改动任何既有交付承诺。文中"已实现"以代码为据(附文件路径);`docs/*.md` 与 `AGENTS.md` 的目标描述不计为已实现。
---
## 0. 结论速览
1. **两者不是同类产品,不能逐项对齐。** WorkBuddy 是「自带 Agent 内核 + 云端多模型网关 + 自研 OS 沙盒」的一体化商业桌面端;Ygent 是「接入外部内核(OMP)+ 用户自带渠道(BYO Key)+ 宿主权限治理」的可控桌面端。**内核不是自己的**,这是最大的结构性差异。
2. **Ygent 在六个方向的实现深度已超过 WorkBuddy**(团队/岗位 80+ 表、项目任务、资料库版本化、A2A 协作预算、LSP 自管、grants+审计),这些**不需要对齐**,属于反向优势。
3. **真正值得补的差距集中在宿主层,且大部分不需要碰内核**:进程治理、删除安全、循环防护、预热、少量高频工具缺口、内置连接器预设。这批属于**低风险可直接做**。
4. **唯一的大工程差距是 OS 级沙盒**(WorkBuddy 的 tsbx + shim 双层),但当前用户取向(2026-10-12「给全部的授权,现阶段不考虑在现实上做这么多工作」)与重型限制机制相反,**不建议现在做**,继续如实声明"规则隔离不是沙盒"。
5. 报告本身是静态逆向,**提示词全文、服务端模型路由、鉴权细节本地不可见**,不能当作实现规格照抄。
---
## 1. 逐层对比
### 1.1 整体架构
| 层 | WorkBuddy(报告) | Ygent(实测) | 判定 |
|---|---|---|---|
| 桌面壳 | Electron + app.asar,含 workbuddy-editor-sdk(Office 编辑)、baas-v2 | Tauri 2 + React 18 + zustand 5(`package.json`) | **等价不同技术**,无需改造 |
| UI↔引擎协议 | ACP(`@agentclientprotocol/sdk`),本地 HTTP `/api/v1/acp` | 自研 NDJSON RPC over stdin/stdout(`src-tauri/src/sidecar.rs:448-489, 667-726`) | 能力等价;除非要接第三方 UI,否则不必换 ACP |
| Agent 内核 | 自带 `@genie/agent-cli`(Claude Code 血统,9.4MB bundle + 66 懒加载分块) | 外部 `omp-*-pc-windows-msvc.exe`,`--mode rpc-ui`(`sidecar.rs:506-544, 647`) | **结构性差异**:内核非自有 |
| 模型接入 | 云端网关 `/plugin` 前缀 + Bearer + `X-User-Id`,服务端路由 | 用户渠道表 + 直连 OpenAI 兼容 / Responses / Anthropic Messages / Gemini(`commands/channel.rs`, `llm.rs`) | **BYO 渠道 vs 服务端托管**,各有取舍 |
### 1.2 内核与循环
| 项 | WorkBuddy | Ygent | 可实施性 |
|---|---|---|---|
| 循环原语 | `@openai/agents` + 自研 genie 工作区包 | 由 OMP 提供,宿主不自建循环 | ❌ 不建议(违反"不创建第二套聊天内核"约定) |
| 死循环防护 | `CBC_LOOP_GUARD_CONSECUTIVE_THRESHOLD` / `_SEQUENCE_REPEATS` / `_DISABLED` | **未见实现** | ✅ 可在宿主对工具名/参数序列做重复检测 |
| 进程守护 | `daemon-supervisor.cjs` + `windows-job.cjs`(Job Object 绑子进程树) | 仅 `buildtest/process_windows.rs:86-290` 用 Job Object(构建进程强杀),OMP 子进程未绑定 | ✅ 低成本高收益 |
| 启动预热 | `cbc-prewarm`、`preload-lazy-chunks` | 有空闲回收 `trim_idle_processes(8)`(`collaboration_runtime.rs:263`),**无启动预热** | ✅ 可补 |
| 低内存模式 | `codebuddy-lowmem`(RSS 阈值触发 heap snapshot) | 无 | ⚠️ 可选,Node 内核才有意义 |
### 1.3 工具系统
Ygent 的工具体系**不是更少,而是不同**:宿主侧有 `ygent_*`、`library_*`、`experience_*`、`collaboration_*`、`project_tasks_*`、以及大批 `team_*`(`team/*.rs`),前端标签字典 `src/lib/toolSummaryRules.ts` 头部注释标明「verified against installed WorkBuddy 5.7.6」——**字典里有 WorkBuddy 工具名,但后端并不产出**。
后端**确证缺失**的 WorkBuddy 侧高频工具:
- 联网:`web_search`、`web_fetch`
- 规划:`enter_plan_mode` / `exit_plan_mode` / `plan_*`
- 待办:`todo_write`
- 交互:`ask_followup_question`(Ygent 有 `questions.rs` 问答机制,但非同名工具体系)
- 可视化:`visualize:show_widget`、`widget_guidelines`(前端 `turnFold.ts:91-95` 能识别 widget 渲染,后端不产出)
- 多媒体:`image_gen`(Ygent 完全无多媒体生成)
- 静态检查:`read_lints`(Ygent 已有 LSP 自管 + `ygent_code_analysis`,基础具备)
- MCP 侧:`mcp_call_tool` / `mcp_get_tool_description` / `fetch_mcp_resource`
- 集成:`call_*_integration`、`automation_update`
文件类工具靠 OMP 原生 `read/write/edit/bash/grep/glob` 替代(`sidecar.rs:596`),**命名与 WorkBuddy 不同**,但功能覆盖。
### 1.4 模型层
| 项 | WorkBuddy | Ygent |
|---|---|---|
| 推理位置 | 云端网关(本地不推理) | 用户渠道直连(`llm.rs` 真流式 SSE) |
| 协议 | OpenAI 兼容 `/chat/completions` + SSE | OpenAI 兼容 + Responses + Anthropic Messages + Gemini(`ygent-model-metadata-plan.md`) |
| 降级/回退 | 有降级标记(如 `deepseek_flash_unavailable`) | 未见渠道级降级/回退路由 |
| 多模态 | ASR(`wb-asr` / `gpt-4o-mini-transcribe`)、图像生成/编辑(`hunyuan-image-*`) | **无多媒体生成** |
### 1.5 沙盒与安全(**最大差距**)
| 层 | WorkBuddy | Ygent | 判定 |
|---|---|---|---|
| 策略/审批 | `@anthropic-ai/sandbox-runtime` + 权限提升桥 | 审批网关:内核恒 `--approval-mode always-ask`,宿主决定放行/弹卡(`sidecar.rs:648-650`) | ✅ 已有 |
| 执行层沙盒 | 腾讯自研 `tsbx.dll` + `sandbox-center.exe` + `betterleaks.exe` + `tsbxldr.dll` | **无 OS 级沙盒**(无 seccomp/AppContainer/文件系统隔离) | ❌ 大工程 |
| Shim 层 | `brokered-fs-shim`(fs 走 broker IPC)、`sitecustomize.py`、**`safe-delete`(删除进回收站 `GENIE_TRASH_DIR` + bulk-guard)**、`brokered-bin` 白名单命令目录 | 无 | ✅ **safe-delete 与命令白名单可移植** |
| 授权模型 | 会话/账号级 | `grants` 表白名单(`fnv1a(method\|title)` 哈希)+ `audit_log` + 完全访问 + 经理只读白名单(`omp.rs:318-341`, `approval.rs:54-118`) | Ygent 更细 |
### 1.6 扩展体系
| 项 | WorkBuddy | Ygent | 缺口 |
|---|---|---|---|
| MCP | `@modelcontextprotocol/sdk` 1.29.0,配置文件驱动 | stdio + Streamable HTTP 自研(`connectors/client.rs`),协议协商 `2025-11-25→2024-11-05`,凭证进 Windows 保险库(`connectors/vault.rs`) | OAuth、SSE、CLI 适配器、resources/prompts、市场 |
| Skills | SKILL.md(兼容 Anthropic Agent Skills) | SKILL.md 按需 `ygent_load_skill(id)`,SHA256 摘要 + 回合冻结快照 | ZIP/Git/市场导入 |
| 专家 Expert | 专家包(plugin.json + agents/*.md)、专家团 | **无独立专家概念**:「专家」tab 实为团队岗位(`TeamRolePane.tsx`, `CapabilityCenter.tsx:41`) | P3 专家闭环待实现(方案 §9 已列) |
| A2A | `@a2a-js/sdk` | 自研 collaboration 体系 + 80+ `team_*` 表,含预算/取消/恢复 | **Ygent 更强** |
| IM 渠道 | `/api/v1/channels/wechat\|wecom` + 客服/群机器人 API | 无(`channels` 表是模型渠道,非 IM) | 可做,依赖连接器可用 |
### 1.7 部署与治理
| 项 | WorkBuddy | Ygent |
|---|---|---|
| 部署变体 | `product.json` 四变体(cloudhosted/selfhosted/ioa/internal),`ACC_PRODUCT_CONFIG_V2/V3` | 无(单机桌面) |
| 认证 | 腾讯云账号 + Bearer + `X-User-Id` | 本机,无账号体系 |
| 可观测 | `@tencent/galileo-node-sdk` + OpenTelemetry `/v1/traces` | `audit_log` 表;无 OTEL |
| 资源分发 | COS 加速桶 | 本地 |
---
## 2. 可实现清单(按成本分档)
### A 档:宿主层、低风险、可直接做(不碰内核协议)
| # | 事项 | 依据/落点 | 收益 | 前置 |
|---|---|---|---|---|
| A1 | **OMP 子进程纳入 Windows Job Object**,进程退出时回收整棵子进程树 | 对标 `windows-job.cjs`;现 `sidecar.rs` 启动 OMP 未绑定 Job | 异常退出/崩溃不再残留 OMP 进程 | 无 |
| A2 | **safe-delete:删除类操作进回收站 + 批量删除 guard** | 对标 shim `safe-delete` + `GENIE_TRASH_DIR` + bulk-guard;Ygent 完全无 | 直接降低误删不可逆损失 | 需用户确认(见 §4) |
| A3 | **危险命令 / 危险路径黑名单拦截**(宿主 Shell 工具包装层) | 对标 `brokered-bin` 白名单;Ygent 有 grants 但无命令级策略 | 挡住高危命令 | 需用户确认 |
| A4 | **工具调用死循环检测**(同名+同参序列阈值告警/中断) | 对标 `CBC_LOOP_GUARD_*`;Ygent 无 | 省 token、防卡死 | 无 |
| A5 | **内核启动预热**(新对话页提前拉起/复用内核) | 对标 `cbc-prewarm`;Ygent 有回收无预热 | 缩短首字延迟 | 无 |
| A6 | 补 **`read_lints`**(复用已有 LSP + `ygent_code_analysis`) | `lsp/*.rs`, `code_analysis.rs` 基础设施已具备 | 近乎白送的工具补齐 | 无 |
| A7 | 补 **`web_fetch` / `web_search`**(可基于内置浏览器或直连 fetch) | 对标 WB 同名工具;Ygent 有 `ygent_browser` 可复用 | 联网研究类任务能力 | 需授权策略 |
| A8 | 内置 **连接器预设扩充**(现仅 GitHub / DeepWiki) | `connectors/presets.rs:17-33` | 降低接入门槛 | 无 |
| A9 | **前后端工具名对齐**:把 `toolSummaryRules.ts` 里已有但后端不产出的名字清点,避免"能渲染但不产出"的错位 | `src/lib/toolSummaryRules.ts` vs `sidecar.rs:973-1004` | 消除认知错位 | 无 |
### B 档:中等成本,需设计与验收
| # | 事项 | 说明 |
|---|---|---|
| B1 | **多媒体生成接入**:文生图 / 图生视频 / 音频转写,走现有渠道体系 | Ygent 目前**零多媒体生成**,是明显功能空白;参考 WB 的 `image_gen`、`AudioTranscribe` |
| B2 | **专家(Expert)闭环 P3** | 方案 §9 已定;导入 WorkBuddy `.codebuddy-plugin/plugin.json` + `agents/*.md` 到 Ygent 模型(映射表见方案 §5)。当前"专家 tab = 团队岗位"需明确区分 |
| B3 | **MCP 增强**:OAuth 授权流、CLI 连接器适配、`resources`/`prompts` 读取、`mcp_get_tool_description` 等价工具 | 现只支持 stdio + Streamable HTTP,无 OAuth/SSE/CLI |
| B4 | **渠道级降级/回退路由** | 对标 WB 的降级标记(如 `deepseek_flash_unavailable`) |
| B5 | **非完全访问时把 `write`/`edit` 纳入 cwd 范围校验** | 目前经理有只读路径校验(`approval.rs:95-118`),普通会话主要靠审批网关 |
| B6 | **结构化 trace / OpenTelemetry 导出** | 在 `audit_log` 与已有渲染性能诊断之上,便于定位渲染长任务 |
| B7 | **IM 渠道接入**(企业微信/微信机器人) | 依赖连接器可用;当前会话企业微信连接器为关闭状态 |
### C 档:大工程 / 不建议现在做
| # | 事项 | 不建议理由 |
|---|---|---|
| C1 | **OS 级沙盒**(tsbx 等价物) | Windows 需文件过滤驱动/内核态组件,成本极高;且与用户 2026-10-12「不做这么多现实工作」的取向相反。建议**保持规则隔离 + 审批 + 审计**,继续如实声明"不是沙盒"(`ygent-team-integration.md:91`) |
| C2 | 自建 agent 循环 / 换自研内核 | 违反"不创建第二套聊天内核"约定,收益低 |
| C3 | 改用 ACP 协议 | 现 NDJSON RPC 已满足;除非要接第三方 UI 或多内核 |
| C4 | 市场 / 云同步 / 多设备 / 云资产 | 方案 §9 已列为后续,不在首期 |
| C5 | 产品四变体配置 | 单机桌面场景价值低 |
| C6 | 遥测上报(galileo 类) | 涉及隐私,桌面版不建议引入 |
---
## 3. 反向优势(Ygent 已超 WorkBuddy,不需要对齐)
- **团队 / 岗位**:80+ `team_*` 表,覆盖成员、岗位、计划、执行、复核、产出、恢复、调度(`team/*.rs`, `TeamOffice.tsx`)。
- **项目任务**:版本化任务、验收/复核/续跑(`project_tasks.rs`, `ProjectTasks.tsx`)。
- **资料库**:版本化物料 + 冻结引用 + 经验沉淀(`library.rs`, `knowledge.rs`);P0/P1 已接入。
- **A2A 协作**:自研调度器 + 因果预算 + 取消归属 + `agent_live`/`agent_replay` 重放(`collaboration_runtime.rs`)。
- **权限治理**:`grants` 白名单 + `audit_log` + 经理只读白名单 + 员工分级冻结,层次比报告所述更细。
- **LSP / 代码分析**:宿主自管 LSP 生命周期,禁用 OMP 原生 LSP(`lib.rs:78-94`)。
---
## 4. 前置条件与冲突提醒
1. **内核范围**:`AGENTS.md` 明确"当前只使用 OMP 内核""Codex 内核适配和验收暂不纳入本轮"。涉及内核的改动只按 OMP 验收。
2. **授权取向冲突(重要)**:用户 2026-10-12 明确"给全部的授权,现阶段不考虑在现实上做这么多工作",取代了逐工具授权方案。⇒ **A2 / A3(删除回收站、命令黑名单)属于新增限制性机制**,与"完全访问不逐次确认"的当前取向存在张力,**实施前必须与用户确认**。A1 / A4 / A5 / A6 / A8 / A9 与授权无关,可直接做。
3. **报告不可当规格**:报告为纯静态逆向,提示词全文、服务端模型路由、鉴权细节本地不可见(报告 §9 自述);tsbx 内部行为、`product.json` 变体语义均无字节级证据。**只参考其架构分层与机制存在性,不照抄实现细节**。
4. **不虚构能力**:本文 A 档各项均为"可实施",**不代表已实现**;落地时仍需按各域既有 SOP 完成真实验收(不支持项继续如实标注)。
5. **不引入 WorkBuddy 数据依赖**:任何导入格式兼容都是配置适配,不写其他软件的配置、不复制其凭证。
---
## 5. 建议的下一步
1. 先确认 §4.2 的授权取向:**是否允许新增删除回收站 / 命令黑名单这类限制机制**。
2. 若允许,按 A1 → A2/A3 → A4 → A5 → A6/A8/A9 顺序落地(A1 无争议可先做)。
3. B 档单独立项:建议先做 **B1(多媒体)** 或 **B2(专家 P3)**,前者是功能空白、用户可感知,后者方案已定稿。
4. C 档维持"不做",在相关文档中继续如实声明现有局限。