chore: establish YCode replication baseline and TODO
This commit is contained in:
commit
6dc59f89ba
1118 files changed
+196002
No files matched your search
@@ -0,0 +1,165 @@
|
||||
# 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 档维持"不做",在相关文档中继续如实声明现有局限。
|
||||
Reference in new issue
Block a user