10 KiB
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-core0.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-streamSSE 流式(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. 沙盒与安全(双层)
- 策略层:
@anthropic-ai/sandbox-runtime(Anthropic 开源),负责权限策略与审批流(CBC_SANDBOX_APPROVAL_TIMEOUT_MS),权限提升经本地/api/v1/permission-bridge/request。 - 执行层(腾讯自研,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。 - 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. 分析局限性
- 静态分析不等于运行时行为——提示词全文、服务端模型路由策略、鉴权细节均在云端,本地不可见。
- 无法从字节码确定引擎 fork 的确切基线版本。
- app.asar 内的渲染进程 UI 逻辑未纳入本次范围(与"AI 如何实现"关系较小)。
一句话总结
WorkBuddy AI = Claude Code 架构的本地 agent 引擎(腾讯 genie/codebuddy 内核)+ 腾讯云多模型网关 + 自研 Windows 沙盒 + MCP/Skill/A2A 扩展生态;桌面 App 本身只是这个引擎的一个 ACP 客户端。