cowrite
Cowrite 是一个本地运行的对话式写作画布。浏览器负责承载和编辑文章,Codex / Claude Code 通过 MCP 读写同一份数据;左侧的 Skill 管理会自动读取本机 Codex、Claude Code 和自定义目录里的能力。配图统一调用 Codex 内置 image_gen,HTML 解释图和文章优化由仓库内置 Skill 完成。它同时提供 Codex 与 Claude Code marketplace,安装后会自动准备依赖、构建前端并启动本地服务。
安装
要求:Node.js 20.19+(或 22.12+)、npm,以及已登录的 Codex CLI 或 Claude Code。使用“发送到飞书”还需要本机安装并登录 lark-cli,同时安装其 lark-doc Skill。
让 Codex 自动安装
把下面这段口令发给 Codex:
请安装 Cowrite:https://github.com/SpaceZephyr/cowrite.git
请依次运行:
1. codex plugin marketplace add SpaceZephyr/cowrite --ref main
2. codex plugin add cowrite@cowrite
3. codex plugin list,确认 Cowrite、8 个 Skills 和 Cowrite MCP 已安装
安装完成后告诉我需要新建一个任务来加载插件;新任务中调用 cowrite_open_canvas,在 Codex 内打开原生画布。也可以直接在终端安装:
codex plugin marketplace add SpaceZephyr/cowrite --ref main
codex plugin add cowrite@cowrite安装后新建一个 Codex 任务,然后说:
启动 Cowrite,并在 Codex 内打开画布。让 Claude Code 自动安装
把下面这段口令发给 Claude Code:
请安装 Cowrite:https://github.com/SpaceZephyr/cowrite.git
请依次运行:
1. claude plugin marketplace add SpaceZephyr/cowrite
2. claude plugin install cowrite@cowrite --scope user
3. claude plugin list,确认 Cowrite、8 个 Skills 和 Cowrite MCP 已安装
安装完成后提醒我运行 /reload-plugins 或新开一个 Claude Code 会话;加载后调用 cowrite_get_status,返回本地画布地址。也可以在 Claude Code 中手动执行:
/plugin marketplace add SpaceZephyr/cowrite
/plugin install cowrite@cowrite
/reload-plugins或直接使用终端命令:
claude plugin marketplace add SpaceZephyr/cowrite
claude plugin install cowrite@cowrite --scope user首次启动会发生什么
插件的 MCP 首次加载时会自动:
检查并安装 npm 依赖;
构建 Cowrite 浏览器前端;
在
http://127.0.0.1:4320启动生产服务;注册 Cowrite MCP 工具;
将页面和资产持久化到
~/.cowrite/。
首次启动可能需要几十秒。服务仅监听本机,不会把文章上传到远端。插件会话结束时,由插件启动的服务也会停止;下一次加载会自动恢复。
从源码运行
git clone https://github.com/SpaceZephyr/cowrite.git
cd cowrite
npm install
npm run dev开发模式默认打开 http://127.0.0.1:4321,API 位于 127.0.0.1:4320,测试页面数据保存在 data/cowrite.json。若 4321 被占用,Vite 会在终端显示自动切换后的地址。
本地 Skill 管理
点击左侧「Skill 管理」,Cowrite 会分别扫描 ~/.codex/skills 和 ~/.claude/skills;也可以输入一个自定义 Skill 目录。每个一级子目录只要包含 SKILL.md、skill.md 或 Skill.md,就会显示为可搜索、可分类的 Skill。专家视图根据本地分类聚合能力,不会调用远端模型。
点击 Skill 的「使用」,可以复制
SKILL.md调用地址,或填写文档地址、目标和输出格式等补充信息后复制完整调用口令。删除 Skill 前必须二次确认。Cowrite 不会立即永久清除文件,而是把对应文件夹移入当前目录的
.cowrite-trash,需要时可从本地恢复;符号链接只移动链接本身。专家是本地聚合分组,没有独立文件夹。删除专家只会从当前目录的专家视图隐藏该分组,不会删除成员 Skill。
自定义目录必须先在 Cowrite 成功加载,才允许执行删除。所有写操作都要求当前 Cowrite 会话令牌,并拒绝其他本地端口或跨站页面发起的请求。
项目工作台
点击左侧「项目」可选择一个本地文件夹,把它作为 Markdown 工作区打开:
左栏递归展示项目中的
.md/.markdown目录树,并支持刷新或切换文件夹;依赖、构建产物和 Git 内部目录不会进入扫描结果。中栏复用 Cowrite 的 Vditor 即时预览编辑器,修改自动保存回原文件;文件被其他程序改动时,版本校验会阻止覆盖。
点击右栏「+」会打开 Skill 选择弹窗,可按关键词、分类以及 Codex / Claude Code 来源筛选,并查看 Skill 所属文件夹与分类。已添加的 Skill 按项目文件夹分别保存,右栏只显示名称;整个 Skills 面板可收起并记住状态。
点击右栏 Skill 会打开使用弹窗,可填写任务、预览并复制一段包含 Skill 调用地址、Skill 文件夹、项目绝对路径、Markdown 文件清单和当前正文的 Codex 提示词;也可从当前项目移除关联,不会删除本地 Skill 文件。
系统文件夹选择器不可用时,可在项目欢迎页输入绝对路径作为备用方式。项目授权只在当前 Cowrite 进程内有效;服务端会拒绝目录穿越、符号链接逃逸和非 Markdown 文件读写。
写作工作流
新建页面时可填写标题和创作要求,也可从本地导入
.md/.markdown文件;导入会自动识别一级标题或使用文件名。编辑时可直接粘贴 PNG、JPEG、GIF 或 WebP 图片,Cowrite 会先存入本地资产库再插入短链接,避免 base64 导致页面卡顿。点击顶部「Cowrite」,在“按页面内容为要求创作”和“输入自定义创作要求”之间二选一;Codex 会弹出原生“发送后续提示?”确认窗,确认后任务连同当前页面全文直接发送到当前对话。
在编辑器中选中文字,使用浮动工具栏的「配图」「HTML」「优化」或「对话」;所有 Agent 按钮都会先进入 Codex 原生确认窗,「对话」可在确认窗中补充具体修改要求。
点击每个 Page 顶部的「Slide」,选择 PPT 或 HTML;PPT 模式会同时生成可编辑 PPTX 和浏览器可打开的 PDF 预览,Agent 把交付链接插回文章顶部。
点击「排版」,选择公众号或小红书:公众号生成可复制富 HTML;小红书按确认后的策略用 Codex 内置
image_gen生成 3:4 图片组。点击顶部「配图」,确认后由 Agent 分析整篇文章,使用 Codex 内置
image_gen生成 2-6 张统一风格的 16:9 配图并插入对应段落。点击「发送」,可选择飞书、公众号或知乎;飞书确认后通过本机
lark-cli创建云文档,公众号与知乎暂标记为“待完善”。Agent 读取页面最新 revision,调用指定 Skill 产出结果,再通过 MCP 精确写回。
编辑器轮询更新,人和 Agent 可以继续编辑同一页面;revision 乐观锁会阻止相互覆盖。
删除页面时,在左侧目录对应标题最右侧点击删除图标,并在确认弹窗中执行删除。
内置 Skill 路由
Cowrite 操作 | 仓库内 Skill | 固定产物与约束 |
配图 |
| Codex 内置 |
整篇配图 |
| 自动规划 2-6 个锚点、统一风格、逐图安全插入 |
HTML |
| 16:9 HTML/PPT 风格单页、内联 CSS + SVG、适合 iframe |
优化 |
| Method 5 局部改写,只替换选中文字 |
Slide |
| 智能品牌匹配;原生可编辑 PPTX + PDF 浏览器预览,或 16:9 HTML deck |
排版 |
| 自动匹配 Claude / OpenAI / Google;微信公众号可复制富 HTML 预览页 |
小红书排版 |
| 两次方案确认;Codex 内置 |
页面读写 |
| MCP 操作、revision 合并、防覆盖规则 |
按钮发送的任务会显式声明 Skill 名称和已确认参数。普通浏览器无法连接当前 Codex 对话时,Cowrite 会明确提示并提供复制兜底,不会伪装成已发送。所有位图生成统一走 Codex 内置 image_gen,不需要配置图片 API key,也不会改用外部模型或插入来源不明的图片。
内置图片生成
Cowrite 不再包含 LabNana、Gemini 或其他外部图片 API 脚本。配图、整篇配图、小红书图片和 Slide 图片模式都使用 Codex 内置 image_gen:
不需要
LABNANA_API_KEY或OPENAI_API_KEY每张不同图片单独调用一次内置工具
生成后先检查,再复制到项目目录、上传并插入 Cowrite
内置工具不可用或失败时停止,不使用 CLI 或外部模型回退
Codex 提供内置生图时图片按钮可直接执行。Claude Code 仍可使用页面编辑、排版、HTML、PPTX 和 MCP 能力;如果当前运行时没有 Codex 内置 image_gen,图片任务会明确停止,不会自动切换供应商。
Agent 接入
.codex-plugin/plugin.json Codex 插件描述与 Skill 入口
.agents/plugins/marketplace.json Codex marketplace
.claude-plugin/plugin.json Claude Code 插件描述
.claude-plugin/marketplace.json Claude Code marketplace
.mcp.json Codex / Claude Code 双端 MCP 启动配置
scripts/start-plugin.mjs 自动安装、构建、启动与持久化
skills/cowrite/SKILL.md 页面读写与并发规则
skills/image-studio/ Codex 内置 image_gen 工作流、风格和提示词模板
skills/article-batch-illustration/ 整篇文章配图规划、统一视觉与安全插入规则
skills/text-logic-diagram/ HTML/PPT 逻辑图规范与模板
skills/ai-writing-assistant/ 文章创作与局部优化方法
skills/space-multi-design-ppt/ 文章转 PPTX / HTML Slides 工作流
skills/space-wechat-layout/ 微信公众号排版与可复制 HTML 预览模板
skills/baoyu-xhs-images/ 小红书内容拆解、策略、风格与图片组工作流MCP 提供八个工具:cowrite_open_canvas、cowrite_get_status、cowrite_list_pages、cowrite_get_page、cowrite_create_page、cowrite_update_page、cowrite_upload_asset 和 cowrite_insert_after。其中 cowrite_open_canvas 通过 MCP App 在 Codex 内打开画布,并把按钮任务交给 Codex 原生确认窗;cowrite_get_status 仍返回普通浏览器地址,供 Claude Code 或源码调试使用。
如果只想临时加载本地源码而不安装 marketplace,也可以使用 Claude Code 的开发参数:
claude --plugin-dir /absolute/path/to/cowrite插件模式不需要手动保持 npm run dev;自启动运行器会管理生产服务。源码开发时仍使用 npm run dev。
架构
浏览器 Vditor ───────────────┐
├─> Express API ─> ~/.cowrite/cowrite.json
Codex / Claude + Skills ─MCP─┘ └─> ~/.cowrite/assets/服务只监听
127.0.0.1,网页本身不执行 Agent 或 Skill。Skill 元数据和专家偏好只在本机处理;Skill 删除进入所在目录的
.cowrite-trash。marketplace 安装模式使用
~/.cowrite/持久化;源码开发模式使用仓库内data/。列表接口不返回正文,Agent 只在需要时读取完整页面,减少上下文消耗。
带
prompt且revision = 1的页面会显示为“等待 Agent 创作”。图片和 HTML 先进入 Cowrite 资产库,再以 Markdown 图片或 iframe 插入锚点段落后。
验证
npm test
npm run build
npm run probe:pluginLatest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SpaceZephyr/cowrite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server