dsh-plugin-notebook-tools

DSH PLUGIN模型与账号接入

仓库 Boenxia/dsh-plugin-notebook-tools

模型与账号接入 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

dsh-plugin-notebook-tools 是 Boenxia 维护的 模型与账号接入 类 DSH 可安装插件, 仓库为 Boenxia/dsh-plugin-notebook-tools,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

dsh-plugin-notebook-tools 是模型与账号接入类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类模型与账号接入 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 未标注 · 未关闭 issue 未标注
最近更新 2026-10-15 创建于 未标注
README 8.5 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:Boenxia/dsh-plugin-notebook-tools#v0.2.3
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

模型与账号接入
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

文件读写

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在模型与账号接入场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-plugin-notebook-tools当前 L5 · 运行验证通过 低风险 0 未标注 有
archify L4 · 沙盒安装通过 低风险 8.0 万 未标注 有
DeepSeek-Reasonix L4 · 沙盒安装通过 低风险 3.6 万 未标注 有
nocobase L3 · 安装规范通过 低风险 2.5 万 0.1.1-rc.2 无
learn-harness-engineering L4 · 沙盒安装通过 低风险 2.0 万 未标注 有
dsh-our-free-model 未做沙盒验证 未标注 8,064 未标注 无

仓库档案

模型与账号接入
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方Boenxia仓库 dsh-plugin-notebook-tools · 默认分支 未标注
分类模型与账号接入ai
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 未标注 / 未标注收录时的数值,非实时
创建 / 更新未标注 · 2026-10-15最后推送 未标注
本站收录2026-10-30首次进入本站目录的时间

README 全文

8.5 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-plugin-notebook-tools

Cell-aware Jupyter notebook tools for DSH agents. A zero-dependency Node ESM
plugin that ports the OpenClaw notebook-tools plugin (9 tools) onto the DSH
host.

The core read / write / edit tools treat .ipynb files as opaque JSON,
which is error-prone, token-hungry, and easy to corrupt. This plugin provides a
structured, cell-aware API instead: stable cell ids, output-aware truncation,
stale-edit guards, and format-preserving atomic writes.

Install

dsh plugin --profile desktop add --config.minimumReleaseAge=0 F:\path\to\dsh-plugin-notebook-tools

dsh plugin forwards to the pnpm bundled with DSH, and --profile is
required. The --config.minimumReleaseAge=0 override is needed while the
target profile's existing lockfile entries are newer than pnpm's default
minimumReleaseAge cutoff (pnpm 11.7.0 enforces that default even when the
profile's pnpm-workspace.yaml lists the same offenders under
minimumReleaseAgeExclude). Without it you get
ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION naming packages you did not touch.

On success the package is appended to both dependencies and
dsh.profile.bundles in \profiles\\package.json — no
manual edit needed. A failed run can still leave a link in node_modules, so
treat the package.json entry, not node_modules, as proof.

The plugin ships a cordis.patch.yml that inserts it under the id
notebook-tools. DSH composes that row at boot, so restart the DSH app for
the tools to appear in an already-running session.

No dependencies are installed: pnpm install is unnecessary, and the package
imports only node: builtins.

Companion skill

skill/notebook-tools/SKILL.md is the matching DSH skill: it tells the agent
when to reach for these tools, which of them can mutate a notebook, and how
stable a cell id really is. Copy it into the skills directory:

Copy-Item -Recurse skill\notebook-tools "$env:USERPROFILE\.dsh\skills\notebook-tools" -Force

DSH hot-reloads the skills directory, so the skill shows up without a restart —
unlike the plugin itself, which is composed at boot.

Tools

Tool Writes Purpose
notebook_create yes Create a notebook from structured cells
notebook_read no Structured read, optionally with outputs
notebook_list_cells no Cheap index: id, type, preview, counts
notebook_search no Find cells by text or regex
notebook_validate no Validate structure and report facts
notebook_edit_cell yes Replace a cell's source / type
notebook_insert_cell yes Insert a new cell at a position
notebook_delete_cell yes Delete a cell by id or index
notebook_clear_outputs yes Clear outputs (all or one cell)

Guarantees

  • Writes preserve the file's own formatting. The plugin probes the layout a
    notebook already uses — JSON indent (0/1/2/4), CRLF vs LF, trailing newline —
    and writes it back unchanged, so a notebook produced by JupyterLab,
    nbformat.writes, or a text editor is not reformatted. A cell whose source
    is a plain string stays a string, and keys that were absent (outputs,
    execution_count, metadata) are not invented. Read-then-write with no edit
    is byte-identical. Not preserved: tab indentation, \uXXXX-escaped non-ASCII
    (Python's ensure_ascii=True), and more than one trailing newline.
  • Atomic saves. Mutations serialize to a sibling temp file
    (.‹basename›.tmp-‹pid›-‹counter›-‹random›) in the same directory, fsync it,
    then rename over the target. A killed process can never leave a half-written
    notebook, and no temp file ever lands in the system temp directory.
  • Validation before every write. A notebook that fails the deep audit — cell
    ids outside ^[A-Za-z0-9_-]{1,64}$ or duplicated, non-object metadata,
    non-array outputs, non-string source elements — is refused by the writers
    and reported by notebook_validate, instead of being silently rewritten.
  • Cell ids over indexes. notebook_read, notebook_list_cells, and
    notebook_search always return an id. A notebook too old to store ids
    (nbformat < 4.5) gets ids derived from sha256(&quot;v1||&quot;), so
    the same cell keeps the same id across loads and processes; the derived id is
    persisted only once the file's format supports ids. nbformat_minor is never
    bumped. Indexes shift after every insert/delete — prefer ids.
  • Editing a code cell clears outputs and execution_count, and the
    response text says so.
  • Three stale-edit guards on every mutating tool. expected_file_sha256
    catches any change to the bytes on disk — including a rewrite inside the same
    millisecond, which expected_file_mtime_ms cannot see; expected_source_sha256
    catches a change to the one cell an operation depends on (the anchor cell for
    an insert, the target cell for an edit, delete, or clear); the mtime check is
    the cheap one and tolerates sub-millisecond jitter. All of them fail before
    any write. notebook_read and notebook_list_cells return both mtime_ms
    and file_sha256; only notebook_read returns per-cell source_sha256.
  • nbformat 4 only. v3 and earlier are rejected.
  • No kernel execution, ever.
  • Failures throw a NotebookError subclass carrying a stable code
    (NOTEBOOK_NOT_FOUND, STALE_NOTEBOOK, CELL_NOT_FOUND, …). There is no
    isError field on the DSH tool result contract.

Usage

notebook_list_cells  { path: &quot;~/analysis.ipynb&quot; }
notebook_read        { path: &quot;~/analysis.ipynb&quot;, cell_ids: [&quot;a1b2c3d4&quot;] }
notebook_search      { path: &quot;~/analysis.ipynb&quot;, query: &quot;train_test_split&quot; }
notebook_edit_cell   { path: &quot;~/analysis.ipynb&quot;, cell_id: &quot;a1b2c3d4&quot;,
new_source: &quot;model.fit(X, y)\n&quot;,
expected_source_sha256: &quot;…&quot;,
expected_file_sha256: &quot;…&quot; }
notebook_validate    { path: &quot;~/analysis.ipynb&quot; }

Pass the guards straight back from the read that produced them — file_sha256
comes from notebook_read or notebook_list_cells, source_sha256 only from
notebook_read.

Development

node --test          # from this directory

Tests use node:test + node:assert/strict and require Node >= 22 (verified
on Node 24).

Releasing

Releases are one command, run from a clean main that already contains the
version bump:

npm run release -- --title &quot;v0.2.1 - short one-line summary&quot;

It refuses to run unless CHANGELOG.md carries a non-empty ## []
section and a []: link reference for the version in package.json,
the working tree is clean, and HEAD is the commit that carries the bump. Then it
runs node --test, pushes the release branch, creates the annotated tag
v, pushes it, and
creates the GitHub Release: the tag annotation is the release title and the
CHANGELOG section is its body. Credentials come from GITHUB_TOKEN / GH_TOKEN,
falling back to the stored git credential for github.com (nothing is ever
printed); the GitHub CLI is not required.

Other flags: --dry-run (print the plan, change nothing), --skip-tests,
--branch (default main), --remote (default origin).

Layout

lib/index.js              composition only — registers the 9 tools on ctx.tools
lib/nb/*.js               pure domain; node: builtins only, no host SDK imports
lib/tools/*.js            adapters: JSON Schema params, error mapping, response text
scripts/release.mjs       the release command behind &quot;npm run release&quot;
test/*.test.js            node:test suites
cordis.patch.yml          the composition row DSH merges at boot
skill/notebook-tools/     the companion skill (SKILL.md)

The domain layer (lib/nb/) knows nothing about DSH — it only knows about
notebooks, so it stays unit-testable in isolation.

Credits and license

MIT. This is a port, not a fork: the domain layer and all nine tool
adapters were re-implemented for the DSH plugin host from the original plugin's
documented behavior.

  • Upstream: Lightbridge-KS/openclaw-notebook-tools
    by Kittipos Sirivongrungson (MIT). The tool surface, the behavioral spec in
    its docs/Notebook-Tools-Spec.md, and the companion skill all originate
    there.
  • This port: the DSH packaging (cordis.patch.yml, the dsh.bundle.patch
    hook), the zero-dependency plain-object tool descriptors, and the test
    suites.

LICENSE carries both copyright notices.

常见问题

5 问
答案由本站依据条目字段整理,不引用上游原文
dsh-plugin-notebook-tools 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:Boenxia/dsh-plugin-notebook-tools#v0.2.3` 即可。

dsh-plugin-notebook-tools 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-plugin-notebook-tools 安全吗?

低风险。

dsh-plugin-notebook-tools 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-plugin-notebook-tools 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

模型与账号接入
按星标排序,可作替代方案

archify

archify

从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。

L4 · 沙盒安装通过 8.0 万 星

nocobase

nocobase

L3 · 安装规范通过 2.5 万 星

dsh-our-free-model

dsh-our-free-model

为 DeepSeek Harness 挂载免登录、免 API Key 的免费前沿模型通道,装完即用,并附用量看板与 OpenAI 兼容本地转

未标注验证等级 8,064 星

dsh-purge

dsh-purge

dsh-purge 是一款 DeepSeek Harness 设置插件,可修改默认副本、权限策略和工具限制,并添加规则卡片以分组应用补丁,支

L5 · 运行验证通过 4,573 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。