Skip to content
MbAIGCPublic

About

SY-GSP —— 思源笔记 GitHub/Gitee 同步插件(同步引擎 2.0:三方合并、冲突中心、确认基准跟踪)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SY-GSP

English SY-GSP 是一款思源笔记 GitHub 同步插件,基于「同步引擎 2.0」方案以全新可读源码完整重写:三方合并、冲突中心、确认基准跟踪,全程不伪造成功。

本插件的前身是 SGSP(Fork 自 xstarling/sy-git-sync-plugin v0.3.0)。SY-GSP 为全新实现,旧版源码归档于仓库内 SGSP-V1/ 目录,仅作历史参考。 重写依据见 docs/V1/SGSP同步引擎2.0可落地实施方案.md。

  • 纯Vibe-Coing产物!!! - 主要感谢 GLM-5.3-Flash
  • 截止到v0.1.66版基本功能实现V1阶段,目前token花费月费:5.4亿
  • 其中代码:GPT-5.6-Terra:126M,GLM-5.3-Flash,91.7M + 60M + 100M + 150M + 5M + 5M = 411.7M。
  • 功能讨论、Review:ChatGPT若干、DeeepSeek-v4-flash若干、GLM-5.3:3M

V2 - 待实现功能

  • 利用Github Action把Github端的.sy转换为.md,并保持目录结构
  • Github支持二级目录同步,而不是仅能存储在repo/data
  • 强制删除后,再次同步不复活
  • 插件自动升级功能

核心特性

  • 三方合并:以「确认基准(BASE)」为参照合并本地与远端改动;互不相邻的编辑自动合并,同一区域的冲突进入冲突中心,绝不静默覆盖。
  • 确认基准跟踪:只有在远端推送确认成功后才更新 BASE;旧版遗留的提交 SHA 只作为诊断线索,绝不自动充当基准。
  • 冲突中心:冲突发生时自动暂停自动同步并持久化冲突快照,用户可逐文件选择「保留本地 / 保留远端」,解决后自动恢复同步。
  • 错误分类与有限重试:网络/超时/远端前移/推送拒绝等错误统一分类,仅对可重试类别做有限自动重试,重试前重新规划。
  • 首同步向导:无基准时先做只读诊断与计划预览,用户确认方向(上传/下载)后才执行首次写入。
  • 双平台支持:GitHub(原子树提交 + CAS 引用更新)。Gitee 暂不支持,历史代码保留在 Git 历史中,后续版本再补充。
  • 同步历史:本地持久化最近 100 条同步记录,可按仓库查看每次同步的状态、阶段与错误。
  • 同步范围 / 策略 / 格式 / 模式:与旧版一致的完整设置项(工作空间/数据目录/笔记文件、自动/手动方向、思源/Markdown 格式、定时/手动同步),另新增自动重试、成功通知、单请求体量上限设置。
  • 迁移:首次启动自动读取旧版 SGSP 配置(按平台分文件)并迁入,旧版基准仅作线索展示。

安全不变量

  1. 未确认远端状态前不写入远端;
  2. 远端操作未确认成功前不更新本地基准;
  3. 不可合并的冲突不自动覆盖任何一方;
  4. 推送失败如实报告(PUSH_UNCONFIRMED 等),不返回伪造成功;
  5. 删除操作经多重守卫(基准存在、清单存在、范围校验),存疑时跳过并提示。

安装

  1. 下载发布包(GitHub Releases)或从仓库构建(见下文「开发」);
  2. 思源笔记 → 设置 → 外部插件 → 导入 SY-GSP 插件目录(含 index.js、index.css、plugin.json、i18n/);
  3. 启用插件,按提示填写仓库地址、分支与令牌(Token 需具备仓库读写权限)。

使用

  • 顶栏图标:点击即手动同步;红色徽标表示存在待处理冲突,点击进入冲突中心。
  • 设置面板:仓库平台/地址/分支/令牌、同步范围、同步策略、同步模式、忽略规则、资源路径前缀等。
  • 命令面板 / 右键菜单:开始同步、打开设置、同步历史、诊断面板、冲突中心。

开发

npm install          # 安装依赖(node-diff3 + esbuild)
npm test             # 运行单元测试(node:test)
npm run build        # esbuild 打包为 index.js(CJS,external siyuan)
npm run smoke        # 冒烟验证:存根环境下装载插件并走通生命周期
npm run verify       # test + build + smoke 全链路验证

目录结构:

src/
  plugin/      入口、菜单、仓库地址解析
  sync/        引擎、规划器、三方合并、冲突服务、队列、重试
  git/         HTTP 客户端与 GitHub Provider
  local/       内核封装、工作空间适配、忽略规则、内容适配
  storage/     元数据/历史/本地清单存储与旧版迁移
  ui/          设置面板、冲突对话框、诊断/历史面板、通知
tests/         单元测试(node:test)
smoke/         冒烟验证脚本

已知限制

  • 远端文件统一以 100644 模式写入,可执行权限位不同步(笔记场景不受影响);
  • 超过单文件请求上限(默认 32MB)的文件不上传;远端超过该上限的文件跳过下载并记录在运行日志中;
  • 触发 GitHub API 限流时自动按服务端重置时间退避重试至多 2 次,重置时间过长(超过 2 分钟)则转为可见失败,等待下一轮自动同步;
  • 文件重命名会被识别为"旧路径删除 + 新路径新增",双端同时改名可能出现冲突;
  • Gitee 暂不支持(历史代码保留,后续版本补充)。

协议

LGPL-3.0

About

SY-GSP —— 思源笔记 GitHub/Gitee 同步插件(同步引擎 2.0:三方合并、冲突中心、确认基准跟踪)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages