diff --git a/public/marketing/xworkmate-suite-hero.png b/public/marketing/xworkmate-suite-hero.png new file mode 100644 index 0000000..1cee115 Binary files /dev/null and b/public/marketing/xworkmate-suite-hero.png differ diff --git a/src/app/xworkmate-suite/page.tsx b/src/app/xworkmate-suite/page.tsx new file mode 100644 index 0000000..47452cd --- /dev/null +++ b/src/app/xworkmate-suite/page.tsx @@ -0,0 +1,21 @@ +import type { Metadata } from "next"; + +import Footer from "@/components/Footer"; +import UnifiedNavigation from "@/components/UnifiedNavigation"; +import XWorkmateSuiteMarketing from "@/components/marketing/XWorkmateSuiteMarketing"; + +export const metadata: Metadata = { + title: "XWorkmate 产品矩阵 | Cloud-Neutral Console", + description: + "面向个人 AI 工作流的 XWorkmate App、Bridge、OpenClaw multi-session plugins 与 workspace core skills 产品矩阵。", +}; + +export default function XWorkmateSuitePage() { + return ( +
+ + +
+ ); +} diff --git a/src/components/marketing/XWorkmateSuiteMarketing.tsx b/src/components/marketing/XWorkmateSuiteMarketing.tsx new file mode 100644 index 0000000..998b8d0 --- /dev/null +++ b/src/components/marketing/XWorkmateSuiteMarketing.tsx @@ -0,0 +1,278 @@ +import Image from "next/image"; +import Link from "next/link"; +import { + AppWindow, + ArrowRight, + Bot, + Boxes, + CheckCircle2, + Cloud, + Code2, + FolderArchive, + GitBranch, + Layers3, + Plug, + ServerCog, + ShieldCheck, + Sparkles, + TerminalSquare, +} from "lucide-react"; + +type SuiteProduct = { + name: string; + repo: string; + role: string; + description: string; + icon: typeof AppWindow; +}; + +const suiteProducts: SuiteProduct[] = [ + { + name: "xworkmate-app", + repo: "x-evor/xworkmate-app", + role: "桌面工作台", + description: + "承载任务线程、执行模式、工作区文件和产物预览,让用户在 macOS 客户端内完成 AI Agent 工作流。", + icon: AppWindow, + }, + { + name: "xworkmate-bridge", + repo: "x-evor/xworkmate-bridge", + role: "网关与运行时连接", + description: + "连接你的桌面工作区与远程 OpenClaw 运行环境,让长任务可以继续跑、可恢复、可回到同一条线程。", + icon: ServerCog, + }, + { + name: "openclaw-multi-session-plugins", + repo: "x-evor/openclaw-multi-session-plugins", + role: "多会话执行插件", + description: + "把 OpenClaw 扩展成可并行处理任务的执行环境,支撑多线程、归档任务和产物落盘。", + icon: Plug, + }, + { + name: "xworkspace-core-skills", + repo: "x-evor/xworkspace-core-skills", + role: "核心技能包", + description: + "沉淀常用写作、编程、图片、视频和工作区处理方式,让个人任务从聊天走向稳定产物。", + icon: Boxes, + }, +]; + +const outcomes = [ + "把 App Store 产品页里的能力描述落到可感知的网站入口", + "把桌面端、网关、插件、技能包讲成一个人的 AI 工作台", + "突出任务不断线、文件有归档、产物能预览的日常使用价值", +]; + +const deliverySteps = [ + { + title: "1. Desktop workspace", + body: "用户从 XWorkmate App 发起任务,保留上下文、线程、归档和产物目录。", + icon: TerminalSquare, + }, + { + title: "2. Bridge contract", + body: "Bridge 负责身份、端点、版本和工作区转发,不把运行时状态散落到本地配置。", + icon: Cloud, + }, + { + title: "3. OpenClaw sessions", + body: "多会话插件把任务拆到可恢复的执行线程,支持代码、文档、图片和视频产物。", + icon: GitBranch, + }, + { + title: "4. Workspace skills", + body: "核心技能包把常见任务变成可复用工作方式,让写作、代码、图片和视频制作更稳定。", + icon: ShieldCheck, + }, +]; + +export default function XWorkmateSuiteMarketing() { + return ( +
+
+
+
+
+

+ XWorkmate 产品矩阵 +

+

+ 从桌面工作台到网关、插件与核心技能,把个人 AI + 助手变成能持续处理任务的工作区。 +

+
+ + 下载客户端 +
+
+ {outcomes.map((item) => ( +
+
+ ))} +
+
+ +
+
+ XWorkmate 产品矩阵营销页面视觉稿 +
+
+
+ +
+
+
+

+ Product matrix +

+

+ 四个仓库,一个人的 AI 工作台 +

+
+

+ 页面主张不只讲“聊天更聪明”,而是展示任务线程、远程执行、多会话处理和文件产物如何服务个人工作流。 +

+
+ +
+ {suiteProducts.map( + ({ name, repo, role, description, icon: Icon }) => ( +
+
+ + + + {role} + +
+

+ {name} +

+

+ {description} +

+ + {repo} +
+ ), + )} +
+
+ +
+
+
+
+
+
+

+ 从聊天窗口到个人工作区 +

+

+ 新页面的核心是把产品矩阵解释成一个人的使用闭环:客户端承载任务线程,Bridge + 连接运行环境,OpenClaw 插件处理多会话任务,Core Skills + 帮助产出文件、图片、视频和代码。 +

+
+ +
+ {deliverySteps.map(({ title, body, icon: Icon }) => ( +
+
+ ))} +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+ ); +} diff --git a/src/lib/navigation.ts b/src/lib/navigation.ts index c2f416d..4a316ee 100644 --- a/src/lib/navigation.ts +++ b/src/lib/navigation.ts @@ -19,6 +19,7 @@ import { Info, CreditCard, LifeBuoy, + PackageOpen, } from "lucide-react"; export type ReleaseChannel = "stable" | "beta" | "develop"; @@ -79,6 +80,14 @@ export const createNavConfig = ( active: (pathname) => pathname?.startsWith("/xworkmate"), showOn: "both", }, + { + key: "xworkmateSuite", + label: isChinese ? "产品矩阵" : "Suite", + href: "/xworkmate-suite", + icon: PackageOpen, + active: (pathname) => pathname?.startsWith("/xworkmate-suite"), + showOn: "both", + }, { key: "docs", label: isChinese ? "文档" : "Docs",