Gemini Workspacer:用对话把想法变成 Google 文档、表格和幻灯片
AIAI Summary (BLUF)
Gemini Workspacer 是一个本地演示应用,能通过聊天规划,自动调用 Gemini CLI 和 Google Workspace 工具,为你生成结构化的 Google 文档、表格和幻灯片。它适合技术开发者快速搭建原型,但仅限本地使用。
核心洞察
这个项目最有意思的地方在于它把 Gemini 的规划能力和 Gemini CLIA command-line interface for Google's Gemini AI model, providing code generation and technical support. 的执行能力串成了一条流水线:先用 SDK 聊出一个方案,再让 CLI 去干活。真正值得关注的是它处理最终链接的方式,先用确定性解析器从 CLI 输出里抠 URL,抠不到才回退到模型解析,这种务实做法比一上来就调模型靠谱得多。不过它目前只能在 localhost 跑,想直接拿去当服务用还差不少。
Gemini Workspacer一个本地演示应用,通过 Gemini 规划并驱动 Google Workspace 工具生成文档、表格和幻灯片。 能把你随口说的一个想法变成一套 Google 文档、表格和幻灯片。它用 Gemini 做规划和调度,然后驱动 Google WorkspaceA suite of cloud-based productivity and collaboration tools developed by Google, including Gmail, Docs, and Drive. 的工具把东西生成出来。
核心结论
Gemini Workspacer 将 Gemini 的规划能力与 Gemini CLI 的执行能力串联成流水线:先通过
@google/genaiSDK 进行对话式规划,确认方案后再启动本地geminiCLI 生成 Google 文档、表格和幻灯片三份产物。最终 Workspace 链接的提取采用"确定性解析器优先、模型兜底"的策略:先从 CLI 原始输出中确定性地抠出 URL,只有当三个链接拿不全时才回退到 Gemini SDK 做结构化提取。
生成过程通过 NDJSON 事件将服务端和 Gemini CLI 的日志实时流式推送到前端,且产物生成可能需要数分钟。
技术栈为 Next.js基于React的现代全栈Web开发框架,支持服务端渲染和静态生成。 16 App Router、React 19、TypeScript、Tailwind CSS v4、Vercel AI SDK、TanStack Query 和 Biome,规划与解析模型默认均为
gemini-3-flash-preview。该项目定位为 localhost 优先的演示应用,并非加固过的多用户服务,且 Gemini CLI 可能因配额限制、工具问题或网络不稳而失败。
它能做什么
- 从对话式规划开始,只在需要的时候才追问你
- 产出一份结构化的草稿方案,包含概念标题、摘要,以及文档、表格、幻灯片各自的目标
- 方案确认后,一次性生成三份 Google Workspace 产物
- 生成过程中把服务端和 Gemini CLI 的日志实时推到前端
- 从 CLI 输出里确定性地提取最终的 Workspace 链接,实在不行才用 Gemini SDK 兜底
应用是怎么跑的
- 你在聊天界面里描述一个想法。
/api/plan-chat通过@google/genai把对话发给 Gemini。- Gemini 要么追问一个问题,要么返回一份草稿方案。
- 你继续聊,改方案或者确认方案。
/api/generate启动本地的geminiCLI,并开启 Google Workspace 工具。- 服务端用 NDJSON 事件把状态更新和 CLI 日志流式推回浏览器。
- 应用拿到最终的 Google 文档、表格、幻灯片链接,显示在结果界面里。
技术栈
- Next.js 16 App Router
- React 19
- TypeScript
- Tailwind CSS v4
- Biome
- Vercel AI SDK,用于规划聊天界面
- TanStack Query,管理生成 mutation 的状态
- Motion,做界面动画
@google/genai,用于结构化的 Gemini SDK 调用- Gemini CLI,负责执行产物生成
环境要求
本地得把下面这些备齐:
- Node.js
pnpm- 一个有效的
GEMINI_API_KEY - 装好并登录过的
geminiCLI - Gemini CLI 能访问到 Google Workspace 的 CLI 工具和扩展
- 一个你愿意拿来创建测试文档、表格、幻灯片的 Google 账号
这个应用目前只打算在 localhost 上做演示用。
安装
装依赖:
pnpm install
创建本地环境文件:
cp .env.example .env
在 .env 里设置必需的变量:
GEMINI_API_KEY=your_api_key
GEMINI_PLANNING_MODEL=gemini-3-flash-preview
GEMINI_PARSER_MODEL=gemini-3-flash-preview
GEMINI_CLI_COMMAND=gemini
可选的开发开关:
NEXT_PUBLIC_ENABLE_AGENTATION=1
运行应用
启动开发服务器:
pnpm dev
然后打开:
http://localhost:3000
可用脚本
pnpm dev # 启动本地开发服务器
pnpm build # 构建生产版本
pnpm start # 运行生产版本
pnpm test # 跑 Vitest 测试
pnpm lint # 用 Biome 跑带自动修复的检查
pnpm format # 用 Biome 格式化文件
pnpm typecheck # 生成 Next.js 路由类型并跑 TypeScript
pnpm check # 跑 lint 加 typecheck
项目结构
app/
api/plan-chat/route.ts # 规划聊天接口
api/generate/route.ts # 流式生成接口
layout.tsx
page.tsx
src/components/
gemini-workspacer-app.tsx # 主界面
gemini-workspacer-providers.tsx # React Query provider
ai-elements/ # 聊天界面组件
src/lib/
gemini-workspacer-domain.ts # 共享 schema 和类型
gemini-workspacer-service.ts # Gemini SDK 加 Gemini CLI 的调度
gemini-workspacer-service.test.ts
环境变量
GEMINI_API_KEY
- 必需。
- 用于 Gemini SDK 的规划和兜底解析。
GEMINI_PLANNING_MODEL
- 可选。
- 规划阶段用的模型。
- 不设的话默认是
gemini-3-flash-preview。
GEMINI_PARSER_MODEL
- 可选。
- 只在确定性链接提取失败时才用的模型。
- 不设的话默认是
gemini-3-flash-preview。
GEMINI_CLI_COMMAND
- 可选。
- 启动本地 Gemini CLI 的命令。
- 默认是
gemini。
NEXT_PUBLIC_ENABLE_AGENTATION
- 可选。
- 开启仅开发环境可用的 agentation 工具栏。
生成相关的说明
- 产物生成可能要花好几分钟。
- 应用会把 Gemini CLI 的输出流式推到前端,方便你看它在干什么。
- 最终产物链接先用确定性解析器从 CLI 原始输出里提取。
- 如果确定性解析器拿不全三个链接,就回退到用 Gemini SDK 做结构化提取。
- 应用会引导文档和幻灯片用更强的排版、格式,以及幻灯片原生元素,比如形状、标注框、分隔线、时间线、简单示意图。
局限
- 这是个 localhost 优先的演示应用,不是加固过的多用户服务。
- 生成的产物会创建在你 CLI 和工具链能访问到的那个已登录 Google 账号里。
- Gemini CLI 还是会因为配额限制、工具问题或者网络不稳而失败。
- 图片插入的效果取决于可用的 Workspace 工具和运行时可访问的图源到底能支持到什么程度。
测试
目前的测试关注的是真实业务逻辑,不是 mock 内部实现。现在主要的回归覆盖是围绕从 Gemini CLI 输出里确定性地提取最终 Google Workspace 链接。
跑测试:
pnpm test
开发笔记
- 改完代码前先跑
pnpm check。 - 用
pnpm build确认应用还能正常构建生产版本。 - 格式化和 lint 都交给 Biome。
- 代码里大量用了显式的 Zod schema 和带类型的变体,把非法状态挡在界面和路由处理之外。
常见问题(FAQ)
Gemini Workspacer 到底能帮我做什么?
它能把你随口说的一个想法,通过聊天规划变成一套 Google 文档、表格和幻灯片。方案确认后一次性生成三份产物,并把 CLI 日志实时推到前端,最终链接会显示在结果界面里。
它处理最终 Workspace 链接的方式有什么特别?
它先用确定性解析器从 Gemini CLI 原始输出里抠 URL,抠不到才回退到 Gemini SDK 做结构化提取。这种务实做法比一上来就调模型靠谱得多,也是项目最值得关注的地方。
Gemini Workspacer 能直接部署成线上服务吗?
目前不行。它是个 localhost 优先的演示应用,不是加固过的多用户服务,产物会创建在你已登录的 Google 账号里,CLI 还可能因配额、工具或网络问题失败。
版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。
文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。
若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。



