OpenWork 深度拆解:当 AI Agent 工作台遇上开源革命——从 Claude Cowork 平替到 MCP 生态的完全指南(2026)
18.7k Stars,48小时从 0 到爆款,OpenWork 正在重新定义 AI Agent 工作台的游戏规则。这不是又一个 AI 聊天客户端,而是一个将「订阅制 SaaS」变成「开源+本地」的革命性平台。本文从架构设计、MCP 协议、权限审批机制、工作流共享到生产部署,为你完整拆解这个 2026 年最受瞩目的开源项目。
背景:为什么我们需要 OpenWork?
订阅制的隐形成本
2026 年,AI Agent 已经成为开发者的日常工具。但随之而来的是「订阅疲劳」:Claude Pro、ChatGPT Plus、Cursor、Windsurf、Copilot……每个工具都在向你收取月费,而功能却高度重叠。更糟糕的是,数据被锁定在各个平台的云端,工作流无法跨工具复用。
Claude Cowork 作为 Anthropic 推出的 AI Agent 工作台,提供了强大的协作能力——但它是闭源的、订阅制的、数据存储在 Anthropic 的服务器上。对于一个真正关心数据隐私、希望定制化工作流的开发者来说,这远远不够。
OpenWork 的诞生
2026 年 7 月,创始人 Ben Shafii 在 Hacker News 上发布了一个帖子:「我花了 48 小时做了一个 Claude Cowork 的开源替代品」。这个帖子迅速登上 HN 首页,OpenWork 一夜之间获得了数千 Stars。
核心理念:
- 开源:MIT 核心协议,FSL-1.1-MIT 企业版
- 本地优先:所有数据在你自己的机器上
- MCP 原生:基于 OpenCode(18万+ Stars 开源编码代理)引擎
- 跨工具复用:一次配置,到处运行
截至 2026 年 8 月,OpenWork 已经获得 18,734+ Stars,日增长 +915,成为 GitHub Trending 常客。
一、核心架构:从 Electron 到 OpenCode 引擎
1.1 技术栈全景
OpenWork 的技术栈可以用「现代前端 + 强大后端」来概括:
┌─────────────────────────────────────────────────────────┐
│ OpenWork 架构 │
├─────────────────────────────────────────────────────────┤
│ 前端层 (Electron + React + TypeScript) │
│ ├── 可视化执行时间轴 │
│ ├── 文件浏览器 + 代码编辑器 │
│ ├── 权限审批面板 │
│ └── 技能管理器 │
├─────────────────────────────────────────────────────────┤
│ 中间层 (Node.js + IPC) │
│ ├── OpenCode Agent 引擎集成 │
│ ├── MCP 协议适配器 │
│ ├── 本地文件系统访问 │
│ └── 系统命令执行沙箱 │
├─────────────────────────────────────────────────────────┤
│ 后端层 (OpenCode Engine) │
│ ├── 多模型路由 (OpenAI/Claude/DeepSeek/...) │
│ ├── 工具调用编排 │
│ ├── 会话记忆管理 │
│ └── 技能执行引擎 │
└─────────────────────────────────────────────────────────┘
为什么选择 Electron 而非纯 Web?
这涉及到一个关键设计决策。Web 应用虽然跨平台,但在以下方面受限:
- 文件系统访问:浏览器无法直接读写本地文件
- 系统命令执行:Web 沙箱禁止运行 shell 命令
- 性能上限:Electron 可以调用原生模块,性能更高
- 数据隐私:本地应用不需要将数据上传到云端
OpenWork 选择 Electron,正是为了突破这些限制,让 AI Agent 真正成为你的「本地助手」。
1.2 OpenCode 引擎集成
OpenWork 的核心能力来自 OpenCode——一个拥有 18 万+ Stars 的开源编码代理引擎。OpenCode 提供了:
- 多模型路由:支持 OpenAI、Anthropic、Google、DeepSeek、智谱 AI 等 20+ 模型提供商
- 工具调用标准:统一的 Function Calling 抽象层
- 会话管理:持久化的对话历史和上下文窗口管理
- 技能系统:可插拔的能力扩展机制
OpenWork 通过 Node.js 的 child_process 或 IPC 机制与 OpenCode 引擎通信:
// 简化的引擎集成代码
import { spawn } from 'child_process';
class OpenCodeEngine {
private process: ChildProcess;
constructor(private config: EngineConfig) {}
async start() {
this.process = spawn('opencode', ['--mode', 'agent'], {
cwd: this.config.workspacePath,
env: { ...process.env, OPENCODE_API_KEY: this.config.apiKey }
});
this.process.stdout?.on('data', (data) => {
this.handleMessage(JSON.parse(data.toString()));
});
}
async executeTask(prompt: string, tools: Tool[]) {
const message = {
type: 'task',
payload: { prompt, tools, context: this.getContext() }
};
this.process.stdin?.write(JSON.stringify(message) + '\n');
}
}
这种架构设计的优势在于:
- 解耦:前端和引擎可以独立更新
- 稳定性:引擎崩溃不会导致整个应用退出
- 扩展性:可以替换或升级引擎而不修改前端代码
二、MCP 协议:打破工具孤岛的钥匙
2.1 什么是 MCP?
MCP(Model Context Protocol) 是 Anthropic 在 2024 年提出的一个开放协议,旨在解决 AI Agent 与外部工具之间的通信标准化问题。在 MCP 出现之前,每个 AI 工具都有自己的 API 格式:
- OpenAI 使用
functions参数 - Anthropic 使用
tools参数 - Google 使用
function_declarations
这导致开发者需要为每个模型写不同的工具适配代码。MCP 的目标是:
一次封装,到处运行。你只需要按照 MCP 协议实现一次工具,就可以在任何支持 MCP 的 AI Agent 中使用。
2.2 MCP 架构解析
MCP 采用 Client-Server 架构:
┌────────────────┐ ┌────────────────┐
│ MCP Client │ <-----> │ MCP Server │
│ (AI Agent) │ JSON-RPC│ (Tool Provider)│
└────────────────┘ └────────────────┘
核心概念:
- Resources:可读取的数据源(如文件、数据库记录)
- Prompts:预定义的提示模板
- Tools:可执行的函数(如搜索、代码执行、API 调用)
- Sampling:让 Server 请求 Client 生成文本的能力
OpenWork 作为 MCP Client,可以连接到任意 MCP Server。这意味着:
// MCP 工具定义示例
const mcpTools = [
{
name: 'read_file',
description: '读取本地文件内容',
inputSchema: {
type: 'object',
properties: {
path: { type: 'string', description: '文件路径' }
},
required: ['path']
}
},
{
name: 'execute_command',
description: '执行 shell 命令',
inputSchema: {
type: 'object',
properties: {
command: { type: 'string', description: '要执行的命令' },
cwd: { type: 'string', description: '工作目录' }
},
required: ['command']
}
}
];
2.3 OpenWork 的 MCP 生态
OpenWork 的杀手级特性是:跨工具 AI 工作流共享。
假设你在 OpenWork 中创建了一个「代码审查」工作流:
- 读取 Git diff
- 调用 AI 分析代码质量
- 生成审查报告
这个工作流可以被其他 MCP 兼容工具(如 Claude Code、Cursor)直接调用,无需重新配置。实现方式是:
# 将 OpenWork 注册为 MCP Server
# 在其他工具的配置中添加:
{
"mcpServers": {
"openwork": {
"command": "openwork",
"args": ["--mcp-server"]
}
}
}
然后,在 Claude Code 中:
请使用 openwork 的代码审查工具分析我的 PR
Claude Code 会通过 MCP 协议调用 OpenWork 的工作流,实现跨工具协作。
三、可视化执行时间轴:让 AI 的每一步都可追溯
3.1 传统 AI Agent 的黑盒问题
使用过命令行 AI Agent 的开发者都知道,输入一个提示后,你只能「盲等」。AI 在后台执行了什么操作?修改了哪些文件?运行了什么命令?你一无所知,直到最终结果输出。
这种黑盒体验带来两个问题:
- 信任缺失:用户不确定 AI 是否做了「正确的事」
- 调试困难:出问题时,难以定位是哪一步出错
3.2 OpenWork 的解决方案
OpenWork 将 AI Agent 的执行过程完全可视化:
┌────────────────────────────────────────────────────────┐
│ 执行时间轴 │
├────────────────────────────────────────────────────────┤
│ [14:32:01] 规划:分析用户需求,制定执行计划 │
│ └── 目标:重构用户认证模块,提升代码可读性 │
│ │
│ [14:32:05] 工具调用:read_file │
│ └── 路径:src/auth/user.ts │
│ └── 状态:✅ 成功,读取 342 行 │
│ │
│ [14:32:12] 工具调用:execute_command │
│ └── 命令:npm run lint src/auth/user.ts │
│ └── 状态:✅ 成功,无 lint 错误 │
│ │
│ [14:32:18] 文件修改:write_file │
│ └── 路径:src/auth/user.ts │
│ └── 变更:+45 -23 行 │
│ └── ⚠️ 等待用户审批 │
│ │
│ [14:32:25] 用户审批:已批准 │
│ └── 文件已保存 │
└────────────────────────────────────────────────────────┘
实现原理:
OpenWork 的中间层会捕获每一个 Agent 动作,并通过 IPC 发送到前端:
// 动作捕获中间件
class ActionLogger {
private timeline: Action[] = [];
intercept(action: AgentAction) {
const entry: Action = {
timestamp: Date.now(),
type: action.type, // 'read_file' | 'write_file' | 'execute_command'
payload: action.payload,
status: 'pending'
};
this.timeline.push(entry);
this.emitToUI(entry);
return action;
}
markComplete(actionId: string, result: any) {
const entry = this.timeline.find(a => a.id === actionId);
if (entry) {
entry.status = 'success';
entry.result = result;
this.emitToUI(entry);
}
}
}
3.3 实际案例:代码重构的可视化
假设你让 OpenWork 执行:「重构 src/utils 文件夹,提取公共函数到 shared 模块」。
时间轴会显示:
规划阶段(5秒):
- 扫描 src/utils 下所有文件
- 分析函数调用关系
- 生成重构计划
执行阶段(30秒):
- 创建 src/shared 文件夹
- 提取
formatDate()函数到 shared/date.ts - 更新 src/utils/date.ts 的导入
- 运行测试验证
审批阶段(用户交互):
- 显示文件 diff
- 等待你确认是否应用变更
每一步都有时间戳、状态标识、详细参数,让 AI 的行为完全透明。
四、人在回路:权限审批的安全防线
4.1 为什么需要权限审批?
AI Agent 越来越强大,但也越来越「危险」。一个错误的 rm -rf 命令可能删除你的整个项目;一个不当的 API 调用可能泄露敏感数据。
人在回路(Human-in-the-Loop) 是 OpenWork 的安全核心理念:
高风险操作必须经过用户批准,AI 不能擅自执行。
4.2 风险分级系统
OpenWork 将操作分为三个风险等级:
| 风险等级 | 操作类型 | 默认行为 | 示例 |
|---|---|---|---|
| 低风险 | 只读操作 | 自动执行 | 读取文件、查看 diff、列出目录 |
| 中风险 | 可逆修改 | 提示确认 | 创建文件、修改配置、安装依赖 |
| 高风险 | 不可逆操作 | 强制审批 | 删除文件、执行 shell 命令、发送网络请求 |
4.3 审批流程实现
当 Agent 尝试执行高风险操作时:
class ApprovalSystem {
async requestApproval(action: RiskyAction): Promise<boolean> {
return new Promise((resolve) => {
// 弹出审批面板
const panel = this.showApprovalPanel({
title: `AI 请求执行:${action.type}`,
description: action.description,
details: action.details, // 文件路径、命令内容等
risk: action.riskLevel,
buttons: ['批准', '拒绝', '查看详情']
});
panel.on('approve', () => resolve(true));
panel.on('reject', () => resolve(false));
panel.on('details', () => this.showActionDetails(action));
});
}
}
实际场景:
AI 想要执行
git push origin main:- 审批面板显示:「AI 请求推送代码到远程仓库」
- 详细信息:分支名、commit 列表、推送目标
- 你可以选择批准或拒绝
AI 想要修改
.env文件:- 审批面板显示:「AI 请求修改环境变量配置」
- diff 预览:显示新增/删除的变量
- 你可以检查是否有敏感信息泄露
4.4 批量审批与信任机制
对于重复性操作,OpenWork 提供了「信任此类型操作」选项:
interface TrustRule {
actionType: 'write_file' | 'execute_command' | 'network_request';
pattern: string; // glob 或正则
expiresAt: Date;
}
// 示例:信任 AI 对 src/generated 文件夹的所有写操作
const trustRule: TrustRule = {
actionType: 'write_file',
pattern: 'src/generated/**/*',
expiresAt: new Date(Date.now() + 3600000) // 1小时后过期
};
这样,AI 在生成代码到 src/generated 文件夹时,不会反复请求批准,提升效率的同时保持安全边界。
五、技能系统:插件化扩展 AI 能力
5.1 什么是「技能」?
OpenWork 的「技能」(Skill)是一种可插拔的能力扩展。类似于 VSCode 的扩展、Chrome 的插件,技能可以让 AI 获得新的能力:
- 代码审查技能:自动检查代码质量、安全漏洞
- 文档生成技能:从代码自动生成 API 文档
- 测试生成技能:为函数自动编写单元测试
- 数据分析技能:读取 CSV/Excel,生成可视化报告
5.2 技能的文件结构
每个技能是一个独立的文件夹:
.skills/
└── code-review/
├── skill.json # 技能元数据
├── prompts/
│ └── main.md # 主提示模板
├── tools/
│ └── analyze.ts # 工具实现
└── tests/
└── basic.test.ts # 测试用例
skill.json 示例:
{
"name": "code-review",
"version": "1.0.0",
"description": "自动化代码审查,检查代码质量和安全漏洞",
"author": "OpenWork Team",
"triggers": ["review", "审查", "检查代码"],
"tools": ["analyze"],
"permissions": ["read_file", "execute_command"]
}
5.3 技能执行流程
当你输入「审查 src/auth 模块」时:
- 触发识别:匹配到
code-review技能的触发词 - 上下文加载:读取
src/auth下的所有文件 - 提示注入:将文件内容注入到
prompts/main.md模板 - 工具调用:AI 调用
analyze工具进行深度分析 - 结果输出:生成结构化的审查报告
// 技能执行器
class SkillExecutor {
async execute(skillName: string, context: SkillContext) {
const skill = await this.loadSkill(skillName);
const prompt = await this.renderPrompt(skill, context);
const result = await this.agent.execute({
prompt,
tools: skill.tools,
maxTokens: 8000
});
return this.formatOutput(result, skill.outputFormat);
}
}
5.4 内置技能一览
OpenWork 默认提供以下技能:
| 技能名称 | 功能 | 触发词 |
|---|---|---|
code-review | 代码审查 | review, 审查 |
test-gen | 测试生成 | 生成测试, 写测试 |
doc-gen | 文档生成 | 生成文档, 写文档 |
refactor | 代码重构 | 重构, 优化代码 |
debug | 调试助手 | 调试, 排查问题 |
translate | 代码翻译 | 转换为, 重写为 |
你也可以创建自定义技能,只需在 .skills/ 文件夹中添加相应的文件。
六、本地部署与配置实战
6.1 安装 OpenWork
方式一:下载预编译包(推荐)
访问 GitHub Releases 页面,下载对应平台的安装包:
- macOS:
OpenWork-x.x.x-mac.zip - Windows:
OpenWork-x.x.x-win.exe - Linux:
OpenWork-x.x.x-linux.AppImage
方式二:从源码编译
# 克隆仓库
git clone https://github.com/different-ai/openwork.git
cd openwork
# 安装依赖
npm install
# 开发模式运行
npm run dev
# 构建生产版本
npm run build
6.2 配置模型提供商
OpenWork 支持多种 AI 模型。首次启动时,会引导你配置:
# ~/.openwork/config.yaml
providers:
openai:
apiKey: ${OPENAI_API_KEY} # 从环境变量读取
models:
- gpt-4-turbo
- gpt-3.5-turbo
anthropic:
apiKey: ${ANTHROPIC_API_KEY}
models:
- claude-3-opus-20240229
- claude-3-sonnet-20240229
deepseek:
apiKey: ${DEEPSEEK_API_KEY}
baseURL: https://api.deepseek.com
models:
- deepseek-chat
- deepseek-coder
default_provider: anthropic
default_model: claude-3-sonnet-20240229
6.3 MCP Server 配置
要将 OpenWork 作为 MCP Server 供其他工具调用:
# 启动 MCP Server 模式
openwork --mcp-server --port 3000
在其他工具(如 Claude Code)中配置:
{
"mcpServers": {
"openwork": {
"url": "http://localhost:3000/mcp",
"transport": "http"
}
}
}
6.4 工作区配置
在项目根目录创建 .openwork.yaml:
# .openwork.yaml
workspace:
root: .
ignore:
- node_modules/
- dist/
- .git/
- "*.log"
skills:
- code-review
- test-gen
approval_rules:
- action: write_file
pattern: "src/**/*"
auto_approve: false
- action: execute_command
pattern: "npm run *"
auto_approve: true # 信任 npm 脚本
七、性能优化与生产实践
7.1 上下文窗口管理
AI Agent 的一个核心挑战是「上下文窗口限制」。GPT-4 Turbo 有 128k tokens,Claude 3 有 200k tokens,但即使是最大的窗口,也无法一次性加载整个代码库。
OpenWork 采用智能上下文管理策略:
class ContextManager {
private window: TokenWindow;
private retriever: VectorRetriever;
async buildContext(query: string, files: string[]): Promise<string> {
// 1. 提取关键词
const keywords = await this.extractKeywords(query);
// 2. 向量检索相关文件
const relevantFiles = await this.retirever.search(keywords, {
topK: 10,
threshold: 0.7
});
// 3. 智能裁剪
let context = '';
for (const file of relevantFiles) {
const content = await this.readFile(file);
const tokens = this.countTokens(content);
if (this.window.remaining() >= tokens) {
context += `\n\n// File: ${file}\n${content}`;
this.window.use(tokens);
} else {
// 截断到窗口剩余空间
const truncated = this.truncate(content, this.window.remaining());
context += `\n\n// File: ${file} (truncated)\n${truncated}`;
break;
}
}
return context;
}
}
关键优化:
- 向量检索:只加载与当前任务相关的文件
- 优先级队列:核心文件(如入口文件)优先加载
- 增量更新:对话过程中动态调整上下文
7.2 响应流式输出
OpenWork 支持流式输出,让 AI 的响应「即时呈现」:
// 流式响应处理
async function* streamResponse(prompt: string): AsyncGenerator<string> {
const stream = await openai.chat.completions.create({
model: 'gpt-4-turbo',
messages: [{ role: 'user', content: prompt }],
stream: true
});
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta?.content || '';
if (delta) {
yield delta;
}
}
}
// 在 UI 中渲染
for await (const text of streamResponse(prompt)) {
appendToChat(text);
}
这避免了「等待 10 秒后突然出现长文本」的糟糕体验。
7.3 多模型路由策略
OpenWork 可以根据任务类型自动选择最合适的模型:
const routingRules = {
// 代码生成 → DeepSeek Coder
'code_generation': {
provider: 'deepseek',
model: 'deepseek-coder',
reason: '代码专用模型,性能更优'
},
// 复杂推理 → Claude 3 Opus
'complex_reasoning': {
provider: 'anthropic',
model: 'claude-3-opus-20240229',
reason: '最强推理能力'
},
// 快速响应 → GPT-3.5
'quick_chat': {
provider: 'openai',
model: 'gpt-3.5-turbo',
reason: '响应速度快,成本低'
}
};
function routeTask(taskType: string): ModelConfig {
return routingRules[taskType] || {
provider: config.default_provider,
model: config.default_model,
reason: '默认配置'
};
}
八、与企业级方案的对比
8.1 OpenWork vs Claude Cowork
| 特性 | OpenWork | Claude Cowork |
|---|---|---|
| 开源 | ✅ MIT 核心协议 | ❌ 闭源 |
| 部署方式 | 本地运行 | 云端 SaaS |
| 数据隐私 | 数据在本地 | 数据在 Anthropic 服务器 |
| 费用 | API 调用费(按量付费) | 订阅制($20/月) |
| 可定制性 | 高(源码可改) | 低(功能固定) |
| 模型选择 | 多模型支持 | 仅 Claude 系列 |
| MCP 支持 | 原生支持 | 部分支持 |
| 企业版 | FSL 协议 | 企业定制 |
8.2 OpenWork vs Cursor
| 特性 | OpenWork | Cursor |
|---|---|---|
| 定位 | AI Agent 工作台 | AI 代码编辑器 |
| 核心功能 | 多工具协作、工作流编排 | 代码补全、重构 |
| 执行能力 | 可执行系统命令 | 仅代码编辑 |
| 权限审批 | 内置审批系统 | 无 |
| MCP 支持 | 原生支持 | 不支持 |
| 学习曲线 | 中等 | 低 |
8.3 适用场景
选择 OpenWork,如果你:
- 需要一个可以执行复杂任务(不仅仅是写代码)的 AI 助手
- 关心数据隐私,希望数据留在本地
- 希望跨工具复用 AI 工作流
- 有定制化需求,希望修改源码
选择 Claude Cowork,如果你:
- 不想自己部署,希望开箱即用
- 不介意数据存储在云端
- 只使用 Claude 系列模型
- 预算充足,可以支付订阅费
九、15 条生产踩坑清单
9.1 配置篇
API Key 泄露风险:永远不要在
config.yaml中硬编码 API Key,使用环境变量:apiKey: ${OPENAI_API_KEY}模型限流问题:为每个 provider 配置重试策略:
providers: openai: retry: maxAttempts: 3 backoff: exponential代理配置:如果你在国内,记得配置 HTTP 代理:
network: proxy: http://127.0.0.1:7890
9.2 使用篇
上下文溢出:不要试图一次性加载整个代码库,使用
.openwork.yaml的ignore字段过滤无关文件。审批疲劳:对于可信操作,配置
auto_approve: true,减少审批频率。技能冲突:多个技能可能有相同的触发词,在
skill.json中明确优先级:{ "priority": 10 } // 数值越大越优先命令注入攻击:永远不要让 AI 执行包含用户输入的命令,使用参数化方式:
// ❌ 危险 exec(`git commit -m "${userMessage}"`); // ✅ 安全 exec('git', ['commit', '-m', userMessage]);
9.3 部署篇
资源占用:Electron 应用内存占用较高,建议至少 8GB RAM。
日志管理:开启调试日志便于排查问题:
logging: level: debug file: ~/.openwork/logs/app.log备份策略:定期备份
.openwork/文件夹,包含配置和会话历史。多用户环境:每个用户应该有独立的
config.yaml,避免配置冲突。
9.4 性能篇
向量索引:首次打开大型项目时,OpenWork 会构建向量索引,可能耗时几分钟。建议提前构建:
openwork --index-only /path/to/project模型切换延迟:切换不同 provider 时,首次请求会有冷启动延迟,预热一下:
openwork --warmup --provider anthropic并发限制:不要同时打开过多 OpenWork 实例,会导致 API 限流。
缓存清理:定期清理缓存目录:
rm -rf ~/.openwork/cache/*
十、未来展望:AI Agent 工作台的演进方向
10.1 多 Agent 协作
未来的 OpenWork 将支持多个 AI Agent 协同工作:
- 规划 Agent:负责任务分解和调度
- 执行 Agent:负责具体操作(写代码、跑测试)
- 审查 Agent:负责结果验证
这种分工协作模式可以大幅提升复杂任务的成功率。
10.2 更强的沙箱隔离
当前的命令执行沙箱仍有一定风险,未来可能引入:
- WebAssembly 沙箱:AI 生成的代码在 WASM 虚拟机中运行,完全隔离
- 容器化执行:每个任务在独立的 Docker 容器中执行
10.3 企业级特性
企业版 OpenWork 可能包含:
- 团队协作:共享技能库、工作流模板
- 审计日志:完整的操作记录,满足合规要求
- 权限管理:细粒度的 RBAC 控制
总结
OpenWork 代表了 AI Agent 工作台的一个重要演进方向:从订阅制 SaaS 转向开源+本地。它通过以下核心特性,为开发者提供了真正可控、可定制的 AI 助手:
- MCP 协议原生支持:打破工具孤岛,实现跨工具工作流共享
- 可视化执行时间轴:让 AI 的每一步操作都可追溯
- 人在回路审批系统:高风险操作必须经过用户批准
- 技能插件系统:可插拔的能力扩展机制
- 多模型路由:根据任务自动选择最优模型
如果你厌倦了订阅制、关心数据隐私、希望真正掌控你的 AI 工具,OpenWork 是一个值得深入探索的选择。
「我花了 48 小时做出了 OpenWork,因为我相信 AI 工具不应该被少数公司垄断。」—— Ben Shafii, OpenWork 创始人
参考资源:
本文撰写于 2026 年 8 月 13 日,基于 OpenWork v1.2.0 版本。开源项目迭代迅速,部分细节可能已更新,请以官方文档为准。