Skip to content

Releases: Oxmyxo/dsh-markji-bridge

2.7.0:统一列表过滤与加密凭证

Choose a tag to compare

@Oxmyxo Oxmyxo released this 27 Oct 01:15

2.7.0

列表过滤

  • markji_cards 的 list 与 markji_decks 的 list / chapter_list 统一使用 filter JSON 条件树,所有过滤都由 filter 完成。
  • filter 条件为 { field, op, value, case_sensitive?, flags? },组合为 { all: [...] } / { any: [...] } / { not: {...} };支持 eq、ne、contains、starts_with、ends_with、regex、in、not_in、gt、gte、lt、lte、exists。
  • 每个列表维护独立字段集;不属于该资源的字段或 op 返回 invalid_argument,不会跨资源匹配。字符串默认大小写不敏感,case_sensitive: true 可关闭;正则默认 i,可用 flags 覆盖。
  • scope 支持 all / deck / chapter / folder;不传时由 deck / chapter / folder_id 推断,显式冲突会报错。

凭证与插件页

  • 插件详情页可直接填写 Markji OpenAPI Key 并选择 cache.db 目录,保存前会调用只读接口测试。
  • Key 只以 AES-256-GCM 密文写入 cache.db 的 secrets 表;数据密钥由 DSH 凭据服务或仅当前用户可读的 secret.key 保存,页面只显示 hasKey 和尾 4 位,不回显明文。
  • 切换缓存目录会复制现有 cache.db 和 secret.key,重启 DSH 后生效。
  • 首次启动支持 apiKey 引导配置和环境变量;插件会加密写入 cache.db 并从进程环境清除。

写入与同步

  • create / update 在入队前自动校验每条正文的 Markji 语法,并默认批量查询 Pic / Audio 引用的文件 id;checkMediaOnWrite: false 可跳过媒体查询。
  • 语法错误、文件缺失或媒体查询失败会让该条直接失败且不产生待推送卡,批量中的其他项继续;推送前执行同一套语法与媒体预检作为最后一道闸。
  • 同步任务记录进度和结果,中断后可用 resume 续跑;wait 可阻塞到任务结束并支持超时。DSH 加载 dsh-tool-jobs 时,同步任务会登记为当前会话的后台任务并返回 job_id。
  • 冲突按卡片去重,支持 keep_local / keep_remote / use_content;批量解决单次最多 50 个,可混用策略。

安装

npm install dsh-markji-bridge@2.7.0

DSH bundle 安装与完整配置见 README。

验证

  • 单元 / 集成测试:155/155
  • Mock E2E:13/13
  • 入口冒烟:4 个工具
  • 无明文密钥检查:通过
  • 真实 DSH:核对列表过滤的 equality / contains / regex、跨资源字段拒绝、未知字段拒绝、插件设置区和缓存读取。

2.4.0:搜索合并为列表过滤,各 list 字段独立

Choose a tag to compare

@Oxmyxo Oxmyxo released this 25 Oct 02:26

2.4.0

本次包含 2.2.0、2.3.0、2.4.0 三次更新。核心变化:搜索成为列表过滤,且每个 list 只接受自己资源的字段。

列表过滤

  • 移除独立的 search action / markji_search,统一走 markji_cards 的 list、markji_decks 的 list / chapter_list。
  • query_mode 支持 substring(默认)、fuzzy、regex、predicate。
  • scope 支持全库 / 卡组 / 章节;不传时由 deck / chapter / folder_id 推断,显式冲突会报错。
  • fields 限定文本查询字段;predicate 是 JSON 条件树,支持 all / any / not、13 种 op 和点号路径,条件只读自有属性。
  • 每个 list 的字段集独立:
    • 卡组:文本 name / description / id,谓词含 description、updated_time、card_count、chapter_count 等卡组字段。
    • 章节:文本 name / id,谓词只含章节字段;没有 description,也不支持 deck_name,按父卡组筛选用 scope: "deck"。
    • 卡片:保留 text / content / cloud / status / 时间字段等完整集合。
  • 给某个 list 传它不拥有的字段会报 invalid_argument,不会被静默忽略或跨资源匹配。

同步与批量

  • markji_sync({ action: "progress", task_id }) 只返回对应任务;不传时仍返回 { active, tasks }。
  • 批量能力保留:卡片 get(cards)、create(new_cards)、update(updates)、validate(contents / cards)、move / archive,以及章节新建 / 重命名 / 排序。

其他

  • 2.2.0:卡片列表查询新增模糊匹配与正则,模糊结果带 score、matched_by,支持 min_score 和部分匹配回退。
  • 2.3.0:精简列表、读取和同步返回值,去掉重复环境信息、空字段和逐项包装。
  • 文档已同步:字段边界、独立 filter、2.2.0–2.4.0 变更与测试数量。

验证

  • 单元 / 集成测试:114/114。
  • mock HTTP E2E:13 checks / 0 failures。
  • 入口冒烟:4 个工具。
  • 已在真实 DSH 中重新加载 2.4.0 并验证列表字段边界、谓词、范围与 progress task_id。

安装

npm install dsh-markji-bridge@2.4.0

或在 DSH 插件配置中使用本仓库的 cordis.patch.yml。Markji token 通过 MAIMEMO_MARKJI_OPENAPI_TOKEN 环境变量提供。

v2.1.0 — 同步任务接入 DSH 后台任务

Choose a tag to compare

@Oxmyxo Oxmyxo released this 24 Oct 13:21

重点更新

  • markji_sync({ action: "start" }) 现在会把同步任务登记为当前会话拥有的 DSH 后台任务,并返回 job_id。
  • 任务会出现在 DSH 的「正在运行的后台任务」列表;进度实时更新,job_output 可读取结果,完成/失败/终止通知由 DSH 自动发送。
  • 终止后台任务会在同步管线检查点取消任务;任务变为 interrupted,已排队的本地修改保留,可用 markji_sync({ action: "start", resume: "<task_id>" }) 续跑。
  • 多进程场景下不会为其他 DSH 进程持有的运行中任务创建无法结束的本地 job。

文档

设计文档随包发布:DESIGN.md

修复

  • 修复 DSH job 结果必须是字符串的问题,避免 job_output 末尾出现 [object Object]。
  • 取消后的任务提示改为明确说明“用户取消、可 resume”,不再误报为宿主异常退出。

安装 / 升级

npm install dsh-markji-bridge@2.1.0

验证

  • 单元/集成测试:104/104
  • Mock E2E:13/13
  • 入口冒烟:4 个工具
  • 真实 DSH 联调:后台任务列表、进度、job_output、完成通知、job_kill → interrupted → resume 均已验证

v2.0.0 — 4 个 action 工具与章节操作

Choose a tag to compare

@Oxmyxo Oxmyxo released this 23 Oct 06:12

2.0.0

主要变化

  • 工具从 19 个细粒度工具合并为 4 个 action 式工具:markji_decks、markji_cards、markji_sync、markji_file
  • markji_decks 新增卡组详情、章节详情 / 新建 / 重命名 / 排序;Markji OpenAPI 不提供章节删除接口
  • markji_cards 统一卡片列表、搜索、读取、批量新建 / 修改、移动、归档、语法帮助与校验
  • 批量新建字段改为 new_cards;批量更新使用 updates;旧的细粒度工具名不再注册,迁移表见 README
  • 工具描述同步精简,保留缓存、队列写入、冲突与 id 约束

验证

  • 单元测试 98/98
  • mock HTTP E2E 13/13
  • 入口冒烟:4 个工具
  • npm pack --dry-run 确认 2.0.0 包内容

安装 / 升级

npm install dsh-markji-bridge@2.0.0

DSH bundle 安装与章节操作说明见 README。

dsh-markji-bridge 1.6.0

Choose a tag to compare

@Oxmyxo Oxmyxo released this 23 Oct 05:50

批量新建支持跨章节 / 卡组

  • markji_cards_create 的顶层 deck / chapter 改为可选默认值。
  • 每个 cards 项可设置自己的 deck / chapter,一次调用可跨章节 / 卡组。
  • order 相对于该项最终目标章节。
  • 旧的顶层传参方式保持兼容;未提供目标的项逐条报错,其他项继续创建。
  • 未提供顶层默认值时,结果的 deck_id / chapter_id 为 null,每项结果包含实际目标。

验证

  • 单元 97/97,E2E 13/13,入口烟测 19 个工具。

安装 / 升级:

npm install dsh-markji-bridge@1.6.0

或 plugin_manager install_bundle target=dsh-markji-bridge@1.6.0。

dsh-markji-bridge 1.5.0

Choose a tag to compare

@Oxmyxo Oxmyxo released this 23 Oct 05:42

1.5.0 — 批量操作

  • 新增 markji_cards_get:一次按 id 读取多张卡,保持请求顺序;未知 id 逐项报错,默认省略冗余的 text。
  • markji_card_syntax 支持 contents(多段正文)和 cards(多张已有卡)批量校验,cards 使用排队中的最新正文。
  • 新增 markji_cards_create:在同一个卡组章节中批量新建卡片。
  • markji_card_update 新增 updates 批量修改,支持部分成功。
  • 所有批量写操作逐项报告错误,坏项不会中断其他项;新增批量入口单次最多 50 项(归档 / 移动沿用原行为)。
  • 文档与测试同步更新:96 个单元测试、13 项 mock E2E、19 个工具入口烟测。

安装 / 升级:npm install dsh-markji-bridge@1.5.0,或在 DSH 插件市场升级。

v1.4.2 — markji_card_syntax 支持语法帮助

Choose a tag to compare

@Oxmyxo Oxmyxo released this 22 Oct 14:45

新增

markji_card_syntax 现在支持 action=help,用于在写入前查询墨墨记忆卡的原始富文本语法。帮助内容是插件内置的静态文档,不读取、不校验、不重写卡片内容,也不访问网络。

// 列出全部格式
markji_card_syntax({ action: "help" })

// 只查一个格式
markji_card_syntax({ action: "help", format: "picture" })

// 校验内容(原有行为,默认 action)
markji_card_syntax({ content: "[E##x+y]" })

可查询的内容

  • format 省略或传 all:全部语法、通用规则、嵌套矩阵和 9 个格式。
  • format: "basic":通用规则 + 允许的嵌套关系。
  • 格式 id:text-style、cloze、audio、card-ref、paragraph、choice、picture、formula、answer-line。
  • 也接受标签名或中文别名,例如 T、F、Pic、Choice、文字样式、挖坑、图片。

其他改动

  • 相邻的图片标签组成的图集现在通过语法校验,符合官方语法指南。
  • markji_sync 仍会在推送前重新校验待写卡片,并批量检查 Pic / Audio 文件 id 是否存在。

验证

  • 单元 / 集成测试:92/92
  • mock HTTP 端到端:13/13
  • 入口烟测:17 个工具

安装

  • npm:dsh-markji-bridge@1.4.2
  • 源码:git clone 后通过 plugin_manager install_bundle 安装

完整文档见 README。

v1.0.0

Choose a tag to compare

@Oxmyxo Oxmyxo released this 22 Oct 08:37

dsh-markji-bridge 1.0.0 — 给 DeepSeek Harness agent 的墨墨记忆卡(Markji)插件:

  • 16 个 markji_* 工具,纯 Node 内置模块,无第三方依赖
  • 本地 SQLite 缓存 + 纯文本搜索(忽略格式/媒体/base64)
  • 修改先排队,推送前拉取并三方合并,冲突逐卡恢复
  • 后台同步任务,崩溃/重启后可 resume
  • 卡片归档、远程删除检测、多进程写锁

安装:克隆仓库后 plugin_manager install_bundle target=<目录绝对路径>,token 通过环境变量 MAIMEMO_MARKJI_OPENAPI_TOKEN 提供。详见 README。