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

10 KiB
Raw Permalink Blame History

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 客户端。