Skip to content

架构

数据流总览

[浏览器] 选择器 overlay → SelectionContext(provider/surface/doc/target/snapshot)
   → [Gateway] /selection /edit  → CLI 代理(白名单, shell:false) / 可选 qodercli
   → dws | lark-cli | ntn  → 官方 OpenAPI → 改文档 / 多维表 → 结果回流高亮

浏览器只产出「改哪里」,Gateway 负责「怎么改」,官方 CLI 负责「真的改」。

组件职责

Chrome 扩展(packages/chrome-extension

  • Content Script:注入选择器 overlay,处理 hover / 点击 / ESC,抽取 SelectionContext;不含业务逻辑。
  • Background(Service Worker):连接本地 Gateway,转发选区与编辑请求,回传 SSE 流。
  • Side Panel(侧边栏 UI):Setup 向导、选区卡片、指令输入、Direct/Agent 切换、结果与 CLI 输出流式回显。

Gateway(packages/gateway

  • Selection Store:暂存当前选区上下文。
  • CLI Proxy / Runner:以白名单二进制、shell:false 调用官方 CLI;输出经 SSE 回流。
  • Provider Registry:登记每个 provider(钉钉 / 飞书 / Notion)的命令模板与能力。
  • Setup Bootstrap:检测 / 安装 CLI、安装 skill、驱动 OAuth 登录。
  • Process Manager(可选):管理本地 qodercli(Agent 模式)。

官方 CLI

产品CLI文字多维表登录
钉钉dwsdoc blockaitable recorddws auth login
飞书lark-clidocsbaselark-cli auth login
Notionntnblocks / apidatabasentn login

SelectionContext 数据模型

拾取选区时,Content Script 产出一份结构化上下文,Gateway 据此拼装 CLI 命令:

字段说明
providerdingtalk / feishu / notion
surfacetext(文字)或 table(多维表)
doc文档标识(kind + id)
target定位信息:locatorid 精确 / content 内容回退)、blockId / recordId / fieldId
snapshot选中内容摘要,用于确认与内容回退定位

locator: 'content' 表示按内容匹配定位,可能不精确,UI 会给出提示。

Provider 适配器

每个 provider 实现统一的 ProviderAdapter 接口:如何识别页面、如何从 DOM 抽取 SelectionContext、以及对应的 CLI 命令模板。新增一个平台 = 新增一个适配器 + provider-registry 条目,主链路不变。

更细的接口契约见 Gateway APICLI 参考

基于 MIT 许可发布