DSH better-sidebar 的 Overleaf 标签页:直连 CDP 登录、项目镜像存到 <workspace>/overleaf/、git/API 同步、侧边栏文件预览
31.5/100
综合分
2
GitHub 星标
46
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-better-overleafnpm 源 · dsh-better-overleaf 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 35 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-better-overleaf @ 0.2.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 11:36:51
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 34 处,展示前 31 条)
- 执行外部命令固定命令lib/index.js:112
const encoded = spawnSync("powershell.exe", [ - 读取本地文件lib/index.js:123
if (executable === "" || !existsSync(executable)) return void 0; - 读取本地文件lib/index.js:155
return candidates.filter((candidate) => existsSync(candidate) && !/firefox/i.test(candidate)); - 读取本地文件lib/index.js:160
if (browserPath !== void 0 && browserPath.trim() !== "" && existsSync(browserPath.trim())) candidates.push({ - 发起网络请求lib/index.js:255
const response = await fetch(`http://127.0.0.1:${port}/json/version`, { signal: AbortSignal.timeout(2e3) }); - 发起网络请求lib/index.js:278
const response = await fetch(`http://127.0.0.1:${port}/json/list`, { signal: AbortSignal.timeout(2e3) }); - 发起网络请求lib/index.js:290
const response = await fetch(`http://127.0.0.1:${port}/json/list`, { signal: AbortSignal.timeout(2e3) }); - 执行外部命令固定命令lib/index.js:333
if (process.platform === "win32") spawnSync("taskkill", [ - 写入本地文件lib/index.js:353
await mkdir(profileDir, { recursive: true }); - 执行外部命令来自配置/变量lib/index.js:358
const child = spawn(executablePath, [ - 删除本地文件lib/index.js:381
await rm(tempProfileDir, { - 执行外部命令来自配置/变量lib/index.js:406
const child = spawn(command.file, command.args, { - 读取本地文件lib/index.js:455
parsed = JSON.parse(await readFile(join(mirrorPath, BINDING_FILENAME), "utf8")); - 写入本地文件lib/index.js:472
await writeFile(join(binding.mirrorPath, BINDING_FILENAME), `${JSON.stringify({ - 写入本地文件lib/index.js:476
await appendFile(join(binding.mirrorPath, ".git", "info", "exclude"), `${BINDING_FILENAME}\n`, "utf8").catch(() => void 0); - 删除本地文件lib/index.js:481
await rm(join(mirrorPath, BINDING_FILENAME)); - 读取本地文件lib/index.js:496
entries = await readdir(mirrorsDir); - 写入本地文件lib/index.js:513
await mkdir(candidate, { recursive: true }); - 读取本地文件lib/index.js:518
await readdir(path); - 发起网络请求lib/index.js:700
const response = await fetch(`${this.origin}${path}`, { - 发起网络请求lib/index.js:756
const response = await fetch(`${this.origin}/project`, { - 执行外部命令固定命令lib/index.js:788
const child = spawn("git", args, { - 执行外部命令固定命令lib/index.js:863
const child = spawn("powershell.exe", [ - 写入本地文件lib/index.js:905
await writeFile(zipPath, zip); - 删除本地文件lib/index.js:909
await rm(join(binding.mirrorPath, entry), { - 删除本地文件lib/index.js:917
await rm(tempRoot, { - 删除本地文件lib/index.js:1252
await rm(mirrorPath, { - 写入本地文件lib/index.js:1279
await writeFile(zipPath, zip); - 删除本地文件lib/index.js:1284
await rm(tempDir, { - 发起网络请求lib/client.js:43
response = await fetch(path, { - 发起网络请求lib/client.js:556
const envelope = await (await fetch("/sidebar/api/fs.tree", {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-credentials@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-ptc-runtime@deepseek-ai/dsh-sandbox@deepseek-ai/dsh-sandbox-policy@deepseek-ai/dsh-scope@deepseek-ai/dsh-session给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 直连CDP登录
- 项目镜像本地存储
- git/API同步
最近更新
在 GitHub 查看全部 →v0.3.02026-08-31
· 概览
v0.3.0 把 dsh-better-overleaf 从“快照拉取 + Git 令牌推送”变成“任意账号、任何时间、双向同步”——免费账号通过 Overleaf 网页端点(不再需要 Git 令牌)即可把本地修改推回 Overleaf;同时 UI 重构为以同步条为核心、设亮教程与 PDF 阅读器。
· 亮点
· 1. 快照模式双向同步(核心)
免费账号也能双向同步。不再依赖 Git 桥,按以下路径推送到 Overleaf:
1. 拉一次远端 zip → 本地仓进新 commit
2. git diff remote..pre 解析出本地变更(add/modify/delete/rename)
3. 逐个应用:删除旧 doc/file、上传新 doc/file
4. 再拉一次确认结果
实现细节见 src/overleaf-web.ts(手动实现 socket.io 0.9 协议,手工 multipart upload)和 src/transports.ts:apiSnapshotPush。由于 Overleaf 的上传端点不支持 in-place 修改,“更新”采用 “删除 + 上传同名” 策略,所以同名的修订历史会断开。
· 2. UI 重构
原 4 卡片堆叠的页面(登录教程占据首屏)重写为:
· 顶部 同步条:项目名 + 状态 pill + 拉取 / 推送 / 检查 + 编译预览(检测到 latexmk 才出现)+ 设置
· 中部 项目列表:登录后自动加载,点项目 = 直接绑定
· 底部 绑定列表:每行状态行 + 行内拉取/推送/打开/解绑,快照镜像多一个「切换 Git 双向」按钮
· 设置弹窗:所有连接说明都在 里折叠,默认不占货仓
· 3. PDF 阅读器
用 pdf.js 替换 sidebar 内置的 iframe PDFium 渲染器。包含缩放、适应宽度、页码跳转、目录、全文搜索、文本选择复制、深色模式反色适配。以 priority 10 注册为 overleaf-pdf,全局替换 .pdf viewer。
· 4. 智能同步
· 拉取:自动提交未保存修改后 rebase;有冲突时中止并列出冲突文件
· 推送:远端有更新时拒绝并提示先拉取,防止覆盖
· 检杏:实时显示「落后 N · 领先 M · 远端 X 前更新 · 上次同步 X 前」
· 模式切换:快照项目可一键升级为 Git 双向(splice 本地提交到远端历史),远端较新时拒绝
· 5. 后台自动同步
绑定后不需打开 Overleaf 标签页。设置里选「每 5/15/30 分钟 / 每 1 小时」拉动间隔;自动推送独立开关(默认关);跳过工作区有未提交修改的镜像并提醒。
· 6. 本地编译
检测到本机 latexmk 后,同步条出现「编译预览」按钮:在镜像目录 latexmk -pdf 一次,生成 PDF 后在新标签页用新的 pdf.js 阅读器打开。失败时原样回显末尾几行日志。
· 7. AI 工具
在 ctx.tools 注册了 4 个工具,会话里可直接调用:
· overleaf_status:查项目同步状态
· overleaf_pull / overleaf_push:拉 / 推
· overleaf_compile:本地编译,返 PDF 路径
这是 VSCode 做不到的——在 DSH 会话里一句话驱动完整编辑-同步循环。
· 8. Bug 修复
· 快照拉取以前会误删 .overleaf.json,导致后续同步 / 编译报错“not bound”。现在保留并在每次拉取后重写
· “打开”现在自动选含 \documentclass 的 .tex,不再打开 sty 等辅助文件
· 补 bind 的“认领现有目录”逻辑,丢失绑定的镜像能重绑
· 快照项目可一键升级为 Git 双向,含远端较新保护
· 代码质量
· 36 个测试全部通过(6 个 spec 文件)
· 含一个推推送集成测试(真 HTTP server + ws server 模拟 overleaf.com 端到端跑一遍)
· TypeScript 严格模式 typecheck 绿
· Peer 范围 调整到 sidebar 0.13–0.18
· 仓库
· 主仓库:
· 依赖:DSH Desktop 2.0.4 + dsh-better-sidebar 0.13–0.18
v0.2.12026-08-28
· 修复 (DSH Desktop 2.0.x 兼容)
· 客户端 bundle 注册 id 必须等于 npm 包名;改为从 package.json 推导,防止再改名后脱同步(DSH Desktop 2.0.3 强制包身份校验 + 客户端模块系统按包名查找)
· 放宽 dsh-better-sidebar peer 范围至 <0.17(registerTab / openTab / openFile 客户端接口与 0.16.1 验证兼容)
· 新增 scripts/replug.ps1:一键重新构建 + 重新接线 + 校验插件契约(身份 / patch / 客户端 id / loader 行名)
· Install
dsh plugin --profile desktop add dsh-better-overleaf@0.2.1
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-better-overleaf
DeepSeek Harness (DSH) 的 Overleaf 集成,构建于 dsh-better-sidebar 的工作台之上。一个 Overleaf 项目 ↔ 一个位于 /overleaf// 下的本地 git 镜像,因此侧边栏的资源管理器、编辑器、图片/PDF 预览器、Git 面板以及对话文件引用(@ 提及)可直接操作 Overleaf 内容。
工作原理
Overleaf 项目 ──┬── git 桥接 (git.overleaf.com/) ← 双向拉取/推送 └── 网站 zip 快照 (cookie 认证) ← 仅拉取回退方案 │ ▼ /overleaf// ← 真实 git 仓库 + .overleaf.json 绑定 │ ▼ dsh-better-sidebar 工作台 ← 资源管理器 / 编辑器 / 预览 / Git 面板 / @引用
- host(src/index.ts → lib/index.js):提供 ctx.overleaf 以及仅限回环的 /overleaf/* JSON 路由(status / projects / bindings / login / cookie / bind / unbind / sync)。
展开完整文档(README 剩余 1 节)
dsh-better-overleaf
DeepSeek Harness (DSH) 的 Overleaf 集成,构建于 dsh-better-sidebar 的工作台之上。一个 Overleaf 项目 ↔ 一个位于 /overleaf// 下的本地 git 镜像,因此侧边栏的资源管理器、编辑器、图片/PDF 预览器、Git 面板以及对话文件引用(@ 提及)可直接操作 Overleaf 内容。
工作原理
Overleaf 项目 ──┬── git 桥接 (git.overleaf.com/) ← 双向拉取/推送 └── 网站 zip 快照 (cookie 认证) ← 仅拉取回退方案 │ ▼ /overleaf// ← 真实 git 仓库 + .overleaf.json 绑定 │ ▼ dsh-better-sidebar 工作台 ← 资源管理器 / 编辑器 / 预览 / Git 面板 / @引用
- host(src/index.ts → lib/index.js):提供 ctx.overleaf 以及仅限回环的 /overleaf/* JSON 路由(status / projects / bindings / login / cookie / bind / unbind / sync)。
- client(src/client/index.ts → lib/client.js):当该可选对等依赖被挂载时,向 dsh-better-sidebar 注册 Overleaf 标签页;若未挂载,插件保持休眠但无害(可热插拔)。
凭据绝不会进入浏览器 bundle 或路由载荷:host 通过 ctx.credentials 解析 OVERLEAF_COOKIE 和 OVERLEAF_GIT_TOKEN。
兼容性
| 版本 | 已验证的 DSH | 已验证的 dsh-better-sidebar |
| 0.2.4 | @deepseek-ai/dsh 0.2.0-rc.2(DSH Desktop 0.2.0-rc.2,Node 24.18.1 / Electron 44) | 0.24.1 |
| 0.2.3 | 0.1.7-rc.2 | 0.21.1 |
- 对等依赖为 @deepseek-ai/cordis ^4.0.2、@deepseek-ai/dsh-credentials、 @deepseek-ai/dsh-host-webserver、@deepseek-ai/dsh-tools,版本范围 =0.1.2-rc.1 =0.13.1 =0.13.1 <0.25.0-0
dsh plugin --profile desktop add dsh-better-overleaf@0.2.4
then restart the app so the host halves mount; hard-refresh the web view
dev flow:
dsh plugin --profile desktop add link:D:/Coding/dsh-better-overleaf
如果 pnpm 报告 node-pty 的构建脚本被忽略,请在配置文件的 pnpm-workspace.yaml 中设置 allowBuilds: { node-pty: true }(终端功能需要它;其他所有功能在没有它的情况下也能正常工作)。
配置 yaml
- insert:
- id: overleaf
name: dsh-better-overleaf
config:
transport: auto # auto | git | api
baseUrl: https://www.overleaf.com
gitOrigin: https://git.overleaf.com
browserChannel: auto # auto | default | msedge | chrome
browserPath: '' # explicit executable, tried first
playwrightHeadless: false
loginTimeoutMs: 600000
transport: auto 只要存储了 OVERLEAF_GIT_TOKEN 就优先使用 git;当只有 cookie 时,拉取会降级为 API 快照。API 传输无法推送(网站端点对内容为只读);推送需要 git 桥接凭据(账户密码,或用于 SSO 账户的 Git 集成令牌)。
同步语义
| 传输 | 拉取 | 推送 | 备注 |
| git | ✅ pull --ff-only | ✅ push HEAD | 完整历史;better-sidebar 的 Git 面板显示真实差异 |
| api | ✅ zip 快照 → 清空并提交 | ❌ | 当镜像存在未提交的更改时拒绝执行 |
绑定会在镜像内写入 .overleaf.json,并通过以下方式将其排除: .git/info/exclude;解绑只删除绑定文件,绝不删除你的文件。
状态 / 路线图
已完成:项目列表/切换、镜像绑定/解绑、git clone/pull/push、API 快照拉取、使用自定义浏览器路径的直接 CDP 登录、手动 cookie 回退、仅限回环的路由、可热插拔的可选对等端。
欢迎提出想法:面向 agent 的拉取/推送工具(这样模型可以自行同步)、通过文件夹/文件上传端点进行 API 推送、PDF 编译预览。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Hoemr/dsh-better-overleaf
DSH better-sidebar 的 Overleaf 标签页:直连 CDP 登录、项目镜像存到 <workspace>/overleaf/、git/API 同步、侧边栏文件预览
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目