Files
ycode/docs/WorkBuddy-AI-实现分析报告.md

123 lines
10 KiB
Markdown
Raw Permalink 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.
# WorkBuddy-AI-实现分析报告
> 历史静态分析报告。SDK 依赖、环境变量或字符串的存在不能单独证明主循环来源、血统或运行时调用。相关架构结论需 REA 调用追踪与运行时证据复核;现行可行性判断见 `1比1复刻重新评估-2026-10-15.md`。
# WorkBuddy AI 实现分析报告
**分析对象**:本机安装的腾讯 WorkBuddy 桌面版(`C:\Users\Administrator\AppData\Local\Programs\WorkBuddy`)
**分析方法**:纯静态逆向(REA MCP `analyze_javascript_application` + 字符串证据提取 + 配置/依赖解析),未运行、未 hook、未联网抓包
**分析日期**:2026-10-14
---
## 0. TL;DR
WorkBuddy 的 AI 能力 = **一个本地 agent 引擎(**`@genie/agent-cli`**,Claude Code / CodeBuddy 血统)** + **Electron 桌面壳经 ACP 协议驱动它** + **云端多模型网关(OpenAI 兼容 **`/chat/completions`** + SSE 流式)** + **双层沙盒(Anthropic 开源 runtime + 腾讯自研 tsbx 驱动)** + **MCP / Skills / A2A 扩展体系**。
---
## 1. 总体架构
```
┌─────────────────────────────────────────────────────┐
│ Electron 桌面壳(app.asar,主进程 + 渲染进程 + 原生插件) │
│ · workbuddy-editor-sdk(Office 文档编辑) │
│ · workbuddy-baas-v2(BaaS 扩展,esbuild) │
└──────────────────┬──────────────────────────────────┘
│ ACP (Agent Client Protocol)
│ 本地 HTTP: /api/v1/acp, /api/v1/acp/connect
▼
┌─────────────────────────────────────────────────────┐
│ Agent 引擎 @genie/agent-cli(cli/dist/,9.4MB 主 bundle │
│ codebuddy-lite-wb.mjs + 66 个懒加载分块) │
│ · bin: codebuddy / cbc / codebuddy-lowmem │
│ · daemon-supervisor(守护进程)+ windows-job(作业对象) │
│ ├─ Agent 循环 + 工具系统(约 30 种内置工具) │
│ ├─ 沙盒层(见 §5) │
│ ├─ 多模型适配层 @genie/model-compatibility │
│ └─ 团队协作 /api/v1/team/messages/send|read │
└──────────────────┬──────────────────────────────────┘
│ HTTPS Bearer Token + X-User-Id,路径前缀 /plugin
▼
┌─────────────────────────────────────────────────────┐
│ 云端网关 www.workbuddy.cn(其余官方端点: │
│ wb.tencentbuddy.com / copilot.tencent.com / │
│ www.codebuddy.ai —— 同一引擎服务双品牌) │
│ · /chat/completions(OpenAI 兼容)+ text/event-stream │
│ · 模型路由在服务端:GLM / 混元 / DeepSeek / Qwen / │
│ Kimi / MiniMax / GPT / Gemini / Claude │
└─────────────────────────────────────────────────────┘
```
---
## 2. Agent 引擎:Claude Code 血统(硬证据)
引擎包名 `@genie/agent-cli`(内部代号 **genie**),但 bundle 里的字符串直接暴露了来源:
| 证据 | 含义 |
| --- | --- |
| `CLAUDE_SESSION_ID`、`CLAUDE_PROJECT_DIR` | Claude Code 的标准环境变量原样保留 |
| `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS`、`CLAUDE_CODE_HOST_HTTP_PROXY_PORT`、`CLAUDE_CODE_HOST_SOCKS_PROXY_PORT` | hooks 与代理机制沿用 Claude Code 实现 |
| `claude-sonnet-4-20250514`、`ANTHROPIC_API_KEY`、`anthropic-ratelimit-unified-reset` | Anthropic API 兼容层与限流头 |
| `Claude-Code-Ide-Authorization` | IDE 集成握手协议同名 |
| `anthropics/claude-plugins-official`、`CLAUDE_PLUGIN_ROOT`、`CLAUDE_PLUGIN_DATA` | 插件体系直接兼容 Anthropic 官方插件市场格式 |
| `@anthropic-ai/sandbox-runtime@0.0.17`、`AnthropicSandboxManager.initialize` | 沙盒直接采用 Anthropic 开源实现 |
| bin 名:`codebuddy-code` / `codebuddy` / `cbc`;主 bundle 名 `codebuddy-lite-wb.mjs` | 腾讯 CodeBuddy 同源内核,WorkBuddy 是其 lite-wb 变体 |
**结论**:WorkBuddy AI 的 agent 内核 = Claude Code 架构的腾讯分支(CodeBuddy CLI),叠加腾讯自有协议栈(galileo 遥测、agentdr SDK、ACC 产品配置体系)。
## 3. Agent 循环与工具系统
- **循环原语**:依赖 `@openai/agents` + `@openai/agents-core` 0.5.2(OpenAI Agents SDK 提供 Runner/循环调度),上层是自研 genie 工作区包(`@genie/core` / `runtime` / `prompts` / `agent-provider` / `cbc-worker`)。
- **内置工具**(bundle 中出现的与对外暴露完全一致):`AskUserQuestion`(15)、`Grep`(12)、`Skill`(11)、`Glob`(10)、`DeferExecuteTool`(9)、`WebFetch`(9)、`WebSearch`(9)、`SendMessage`(8)、`NotebookEdit`(6)、`ToolSearch`(5)、`TaskCreate/Update/List/Get/Output`、`EnterPlanMode/ExitPlanMode`、`ImageGen/VideoGen/AudioTranscribe`、`show_widget`、`present_files`、`BrowserUse`、`BashOutput/KillShell`、`TodoWrite` 等。
- **循环防护**:`CBC_LOOP_GUARD_CONSECUTIVE_THRESHOLD`、`CBC_LOOP_GUARD_SEQUENCE_REPEATS`、`CBC_LOOP_GUARD_DISABLED` —— 检测 agent 连续重复动作的死循环保护。
- **多 agent 团队**:`CBC_TEAM_IMMEDIATE_DISPATCH` + `/api/v1/team/messages/send|read` —— Task 工具派发子 agent、消息互通。
- **进程模型**:`daemon-supervisor.cjs` 守护进程管理、`windows-job.cjs` 用 Windows Job Object 绑定子进程树(防孤儿进程)、`cbc-prewarm` 启动预热、`preload-lazy-chunks` 懒加载预热、`codebuddy-lowmem` 低内存模式(RSS 阈值触发 heap snapshot)。
## 4. 模型层
- **本地不推理**。`@genie/model-compatibility` 只做多家 API 适配;实际模型选择/路由在云端网关按账号套餐决定。
- **调用协议**:OpenAI 兼容 `chat/completions`(17 处)+ `text/event-stream` SSE 流式(56 处)+ JSONL 本地流式记录(62 处)。
- **bundle 中可见的模型标识**:`hunyuan`(混元)、`deepseek`(含 `deepseek_flash_unavailable` 降级标记)、`qwen-token-plan(-cn/-individual)`、`kimi-k2.5`、`kimi-coding`、`minimax(-cn)`、`gpt-4.1`、`gpt-5`、`gemini`、`claude-sonnet-4-20250514`;多模态:`wb-asr` + `gpt-4o-mini-transcribe`(语音转写)、`hunyuan-image-v2.0-general-edit` / `hunyuan-image-v3.0`(图像生成/编辑)。
- 本会话由 GLM 驱动(服务端路由),与上述适配层结论一致。
## 5. 沙盒与安全(双层)
1. **策略层**:`@anthropic-ai/sandbox-runtime`(Anthropic 开源),负责权限策略与审批流(`CBC_SANDBOX_APPROVAL_TIMEOUT_MS`),权限提升经本地 `/api/v1/permission-bridge/request`。
2. **执行层(腾讯自研,Windows)**:`cli/vendor/sandbox/5.8.5/` —— `tsbx.dll` + `tsbx_rules.json`(规则)+ `tsbxldr.dll`(加载器)+ `sandbox_ffi.dll` + `sandbox-center.exe`(中心进程)+ `betterleaks.exe`(泄漏检测)+ `sandbox-cli*.exe`。
3. **Shim 层**:`cli/vendor/shim/` —— agent 子进程的 fs/exec/python 全部经过 shim 代理:`node-brokered-fs-shim`(文件系统走 broker IPC)、`node-language-shim`、`sitecustomize.py`(Python 运行时注入)、`safe-delete` 体系(删除进回收站 `GENIE_TRASH_DIR`,含 bulk-guard 防批量误删)、`brokered-bin/safe-bin` 白名单命令目录。
## 6. 扩展体系
- **MCP**:`@modelcontextprotocol/sdk@1.29.0`,配置在 `~/.workbuddy/mcp.json`(本次分析的 REA 即通过此机制接入)。
- **Skills**:`Skill` 工具 + A2A 扩展 `codebuddy.ai/a2a/extensions/skill-routing`;技能目录约定 `SKILL.md`(兼容 Anthropic Agent Skills 格式)。
- **A2A**:`@a2a-js/sdk`(agent-to-agent 协作);**ACP**:`@agentclientprotocol/sdk`(桌面 UI ↔ 引擎通信)。
- **消息通道**:`/api/v1/channels/wechat|wecom` + `qyapi.weixin.qq.com` 全套客服/群机器人 API(微信侧接入)。
- **插件**:`/api/v1/plugins/uninstall` 等本地 API + Anthropic 插件市场兼容。
## 7. 部署与治理
- **部署变体**:`product.json` 一套引擎四份配置 —— `cloudhosted`(公有云)/ `selfhosted`(自托管)/ `ioa`(私有化)/ `internal`(内部),由 `ACC_PRODUCT_CONFIG_V2/V3` 环境变量切换。
- **认证**:腾讯云账号体系,Bearer Token + `X-User-Id` 头,`account-scoped-external-link` 类型,桌面端 id 为 `workbuddy-desktop`。
- **可观测**:`@tencent/galileo-node-sdk`(腾讯内部遥测)+ OpenTelemetry `/v1/traces`。
- **资源治理**:COS 加速桶 `acc-*.cos.accelerate.myqcloud.com`(资源分发)。
## 8. REA 分析记录(诚实声明)
- 第一次运行:worker 堆(1GB 默认)耗尽,失败。
- 第二次运行(6GB 堆 / 5 分钟超时):成功解析主 bundle —— 遍历 **2,238,569 个 AST 节点**、产出 **248 个 findings**、0 解析失败;语义图超出父级结果预算被截断,仅保留静态与模块级事实。
- 其余 66 个懒加载分块未逐一分析;`.mjs` 为压缩产物,原始模块名已丢失。
## 9. 分析局限性
1. 静态分析不等于运行时行为——提示词全文、服务端模型路由策略、鉴权细节均在云端,本地不可见。
2. 无法从字节码确定引擎 fork 的确切基线版本。
3. app.asar 内的渲染进程 UI 逻辑未纳入本次范围(与"AI 如何实现"关系较小)。
---
## 一句话总结
**WorkBuddy AI = Claude Code 架构的本地 agent 引擎(腾讯 genie/codebuddy 内核)+ 腾讯云多模型网关 + 自研 Windows 沙盒 + MCP/Skill/A2A 扩展生态;桌面 App 本身只是这个引擎的一个 ACP 客户端。**