dsh-plugins

给智能体的工具,人也能用

两个插件:Git 分支就在输入框下方、完整面板在右栏,最新文档接进对话。

工作区 Git release
fix(ci): name the test files instead of the directory litingyes 11-07 f9b2161
chore(site): refresh the graph after the release gate origin/release litingyes 11-07 ddb5b39
chore(release): make a version bump without a tag impossible litingyes 11-07 0c2f9ab
chore(site): refresh the graph after the 0.5.1 follow-ups litingyes 11-07 0813c53
build(git): assert the committed client.js is fresh litingyes 11-07 fac38bf
fix(git): rebuild the browser half for 0.5.1 dsh-git-v0.5.1 litingyes 11-07 31418ab
chore(site): refresh the data for dsh-git 0.5.1 litingyes 11-07 b4a027a
界面预览 数据来自本仓库的 git 历史,用插件自己的泳道算法排版。

两个插件

工作区 Git

@litingyes/dsh-git

状态行里切换分支;右栏是提交图、变更、分支与工作树,提交节点右键可拣选 / 撤销 / 删除。

0.5.1 MIT 查看详情

Context7 文档查询

@litingyes/dsh-context7

两个工具:库名解析成 library ID,再取最新文档与代码示例。插件还补了一段常驻的触发引导。

0.2.1 2 个工具 MIT 查看详情

插件仓库

github.com/litingyes/dsh-plugins

两个插件的源码、双语 README 与 tag 触发的发布脚本。

MIT 仓库

提交图

所有本地与远程分支按日期展开,泳道并排;点开一行看完整提交。

27 个提交

fix(ci): name the test files instead of the directory litingyes 2026-11-07 f9b2161

fix(ci): name the test files instead of the directory Node 22's test runner takes file arguments; `node --test scripts/` resolves the directory as a module and fails with "Cannot find module …/scripts", which turned the gate's own step red on the first run. Node 26 accepts the directory, so the local run hid it. Spell the glob out in the workflow and in the commands AGENTS.md documents.

作者
litingyes
提交时间
2026-11-07 15:09
父提交
ddb5b39
refs
—

2 个文件变更

  • M .github/workflows/ci.yml +2 -1
  • M AGENTS.md +1 -1

补丁 AGENTS.md

diff --git a/AGENTS.md b/AGENTS.mdindex 7fc72e1..44ca928 100644--- a/AGENTS.md+++ b/AGENTS.md@@ -45,3 +45,3 @@ npm run check          # 产物新鲜度 + 语法;dsh-git 先跑 build --check node scripts/check-release.mjs            # 门禁:每个 manifest 版本都有 tag-node --test scripts/                      # 门禁自身的测试+node --test scripts/*.test.mjs            # 门禁自身的测试(Node 22 不展开目录参数) node scripts/release.mjs <dir> --bump patch --dry-run   # 演练发版
chore(site): refresh the graph after the release gate origin/release litingyes 2026-11-07 ddb5b39

chore(site): refresh the graph after the release gate `pnpm sync` picks up the new commits; the portal data is a snapshot, so any change to plugin code has to land here too.

作者
litingyes
提交时间
2026-11-07 15:07
父提交
0c2f9ab
refs
origin/release

1 个文件变更

  • M site/src/data/repo-graph.json +217 -120

补丁 site/src/data/repo-graph.json

diff --git a/site/src/data/repo-graph.json b/site/src/data/repo-graph.jsonindex dad3e08..fc0a03b 100644--- a/site/src/data/repo-graph.json+++ b/site/src/data/repo-graph.json@@ -2,7 +2,7 @@   "source": {-    "head": "fac38bfd7a7c7f4137abb5ae2af931ba3d48bab2",-    "headShort": "fac38bf",+    "head": "0c2f9abc35db22bbf67c1140ed50c3d8445eba4d",+    "headShort": "0c2f9ab",     "headDate": "2026-11-07",     "currentBranch": "release",-    "total": 23,+    "total": 25,     "limit": 40,@@ -11,2 +11,31 @@   "commits": [+    {+      "sha": "0c2f9abc35db22bbf67c1140ed50c3d8445eba4d",+      "parents": [
chore(release): make a version bump without a tag impossible litingyes 2026-11-07 0c2f9ab

chore(release): make a version bump without a tag impossible Publishing is tag-triggered, but bumping `package.json` and tagging were separate manual steps. Skip the second one and the version lives only in the manifest: dsh-git reached npm as 0.2.0 → 0.5.0 while 0.3.0 and 0.4.0 were never published, which is exactly the kind of gap a registry should not show. Three pieces, so the rule is enforced rather than remembered: - `scripts/check-release.mjs` asserts, for every package, that the manifest version is tagged at a commit which declares the same version and is an ancestor of HEAD. Offline on purpose: publishing only happens from tags, so asking npm would just make the gate flaky. Covered by five tests against throwaway repositories. - `release.mjs --bump <patch|minor|major>` does the whole release in one command: bump, rebuild the browser half (its banner carries the version), rewrite the install pins, commit `release: <dir> <version>`, tag, and with `--push` push both refs in a single push. `--dry-run` prints the plan. - `.github/workflows/ci.yml` runs the gate on every push to `release` and on pull requests. `publish.yml` now refuses a tag older than npm's `latest`, so a stray old tag cannot move the dist-tag backwards. AGENTS.md records the conventions this repository actually follows: artifacts that must be committed and rebuilt, the no-hand-edited-version rule, bilingual docs, portal data sync, dependency discipline, and what not to touch. The dsh-git README now anchors the tool removal on 0.5.0 — the first published version after 0.2.0 — instead of the unpublished 0.3.0.

作者
litingyes
提交时间
2026-11-07 15:06
父提交
0813c53
refs
—

11 个文件变更

  • A .github/workflows/ci.yml +47 -0
  • M .github/workflows/publish.yml +36 -0
  • A AGENTS.md +97 -0
  • M README.md +11 -13
  • M dsh-git/README.en.md +2 -2
  • M dsh-git/README.md +2 -2
  • A scripts/check-release.mjs +149 -0
  • A scripts/check-release.test.mjs +132 -0
  • A scripts/packages.mjs +32 -0
  • M scripts/release.mjs +158 -17

补丁 dsh-git/README.en.md

diff --git a/dsh-git/README.en.md b/dsh-git/README.en.mdindex f2a63af..f503787 100644--- a/dsh-git/README.en.md+++ b/dsh-git/README.en.md@@ -2,3 +2,3 @@ -A Git plugin for DeepSeek Harness: **the current branch is shown and switchable in the status row below the composer**, and a **right-sidebar tab follows the Session's workspace** with **a multi-branch commit graph as the primary view**, where every node shows its description, author, date, and commit and expands into full details — beside staging, committing, and branch and worktree management. Right-click a commit for cherry-pick / revert / drop, or a branch row to merge it into the current branch or rebase onto it. Both surfaces share one repository snapshot. 0.3.0 no longer registers agent tools.+A Git plugin for DeepSeek Harness: **the current branch is shown and switchable in the status row below the composer**, and a **right-sidebar tab follows the Session's workspace** with **a multi-branch commit graph as the primary view**, where every node shows its description, author, date, and commit and expands into full details — beside staging, committing, and branch and worktree management. Right-click a commit for cherry-pick / revert / drop, or a branch row to merge it into the current branch or rebase onto it. Both surfaces share one repository snapshot. 0.5.0 no longer registers agent tools. @@ -90,3 +90,3 @@ Configuration lives on the mount row in `cordis.patch.yml`. **Overriding the row -> 0.3.0 removed the four agent tools (`git_status` / `git_diff` / `git_commit` / `git_branch`) along with the `tools` and `defaultWorkspaceId` fields. Legacy keys left in a profile patch are ignored, not rejected.+> 0.5.0 removed the four agent tools (`git_status` / `git_diff` / `git_commit` / `git_branch`) along with the `tools` and `defaultWorkspaceId` fields (the change itself landed in the 0.3.0 commit, but 0.3.0 and 0.4.0 were never published on their own — 0.5.0 is the first npm version after 0.2.0). Legacy keys left in a profile patch are ignored, not rejected.
chore(site): refresh the graph after the 0.5.1 follow-ups litingyes 2026-11-07 0813c53

chore(site): refresh the graph after the 0.5.1 follow-ups The bundle rebuild and the freshness guard touch plugin files, which the data guard treats as code: regenerate the snapshot so the portal keeps describing HEAD.

作者
litingyes
提交时间
2026-11-07 12:56
父提交
fac38bf
refs
—

1 个文件变更

  • M site/src/data/repo-graph.json +180 -158

补丁 site/src/data/repo-graph.json

diff --git a/site/src/data/repo-graph.json b/site/src/data/repo-graph.jsonindex fc04a64..dad3e08 100644--- a/site/src/data/repo-graph.json+++ b/site/src/data/repo-graph.json@@ -2,7 +2,7 @@   "source": {-    "head": "4d1e1f677742618f2efe27bd1ed9dc7f57e12979",-    "headShort": "4d1e1f6",+    "head": "fac38bfd7a7c7f4137abb5ae2af931ba3d48bab2",+    "headShort": "fac38bf",     "headDate": "2026-11-07",     "currentBranch": "release",-    "total": 20,+    "total": 23,     "limit": 40,@@ -12,5 +12,5 @@     {-      "sha": "4d1e1f677742618f2efe27bd1ed9dc7f57e12979",+      "sha": "fac38bfd7a7c7f4137abb5ae2af931ba3d48bab2",       "parents": [
build(git): assert the committed client.js is fresh litingyes 2026-11-07 fac38bf

build(git): assert the committed client.js is fresh

作者
litingyes
提交时间
2026-11-07
父提交
31418ab
refs
—
fix(git): rebuild the browser half for 0.5.1 dsh-git-v0.5.1 litingyes 2026-11-07 31418ab

fix(git): rebuild the browser half for 0.5.1

作者
litingyes
提交时间
2026-11-07
父提交
b4a027a
refs
dsh-git-v0.5.1
chore(site): refresh the data for dsh-git 0.5.1 litingyes 2026-11-07 b4a027a

chore(site): refresh the data for dsh-git 0.5.1

作者
litingyes
提交时间
2026-11-07
父提交
4d1e1f6
refs
—
docs(git): correct claims the source contradicts litingyes 2026-11-07 4d1e1f6

docs(git): correct claims the source contradicts

作者
litingyes
提交时间
2026-11-07
父提交
4e7b356
refs
—
chore(site): refresh the repo graph after the release tags litingyes 2026-11-06 4e7b356

chore(site): refresh the repo graph after the release tags

作者
litingyes
提交时间
2026-11-06
父提交
2c5cba0
refs
—
chore(site): align the portal with dsh-git 0.5.0 dsh-git-v0.5.0 dsh-context7-v0.2.1 litingyes 2026-11-06 2c5cba0

chore(site): align the portal with dsh-git 0.5.0

作者
litingyes
提交时间
2026-11-06
父提交
0899728
refs
dsh-git-v0.5.0, dsh-context7-v0.2.1
docs: sync the plugin docs with the released behaviour litingyes 2026-11-06 0899728

docs: sync the plugin docs with the released behaviour

作者
litingyes
提交时间
2026-11-06
父提交
8737129
refs
—
feat(git): act on commits and branches from the panel feature/dsh-git litingyes 2026-11-06 8737129

feat(git): act on commits and branches from the panel

作者
litingyes
提交时间
2026-11-06
父提交
c0e204c
refs
feature/dsh-git
chore(site): refresh the repo graph after the dsh-git merge litingyes 2026-11-06 c0e204c

chore(site): refresh the repo graph after the dsh-git merge

作者
litingyes
提交时间
2026-11-06
父提交
2658252
refs
—
docs(git): keep the npm install note pre-release litingyes 2026-11-06 2658252

docs(git): keep the npm install note pre-release

作者
litingyes
提交时间
2026-11-06
父提交
9dbfec8
refs
—
Merge branch 'feature/dsh-git' into release litingyes 2026-11-06 9dbfec8

Merge branch 'feature/dsh-git' into release

作者
litingyes
提交时间
2026-11-06
父提交
0a297ec f9d31c3
refs
—
feat(git): switch branches from the composer status row litingyes 2026-11-06 f9d31c3

feat(git): switch branches from the composer status row

作者
litingyes
提交时间
2026-11-06
父提交
81cefd6
refs
—
fix(site): keep the data guard green after docs-only commits litingyes 2026-11-06 0a297ec

fix(site): keep the data guard green after docs-only commits

作者
litingyes
提交时间
2026-11-06
父提交
dda11f1
refs
—
feat(site): add the bilingual portal for the plugin collection litingyes 2026-11-06 dda11f1

feat(site): add the bilingual portal for the plugin collection

作者
litingyes
提交时间
2026-11-06
父提交
f66eaba
refs
—
feat(context7): add always-on guidance so the tools actually get called dsh-context7-v0.2.0 litingyes 2026-11-05 f66eaba

feat(context7): add always-on guidance so the tools actually get called

作者
litingyes
提交时间
2026-11-05
父提交
bf39041
refs
dsh-context7-v0.2.0
chore: ignore the local pnpm store litingyes 2026-11-05 bf39041

chore: ignore the local pnpm store

作者
litingyes
提交时间
2026-11-05
父提交
b784bb8
refs
—
feat(git): fold the branch sections and move worktrees above remote litingyes 2026-11-05 81cefd6

feat(git): fold the branch sections and move worktrees above remote

作者
litingyes
提交时间
2026-11-05
父提交
f003889
refs
—
chore(release): keep the tag probe from printing git errors litingyes 2026-11-05 b784bb8

chore(release): keep the tag probe from printing git errors

作者
litingyes
提交时间
2026-11-05
父提交
e7198d0
refs
—
chore(release): publish from npm through tag-triggered CI dsh-git-v0.2.0 dsh-context7-v0.1.0 litingyes 2026-11-05 e7198d0

chore(release): publish from npm through tag-triggered CI

作者
litingyes
提交时间
2026-11-05
父提交
459979e
refs
dsh-git-v0.2.0, dsh-context7-v0.1.0
feat(git)!: manage worktrees and stop clipping the right-sidebar rows litingyes 2026-11-05 f003889

feat(git)!: manage worktrees and stop clipping the right-sidebar rows

作者
litingyes
提交时间
2026-11-05
父提交
459979e
refs
—
feat(git): add right-sidebar workspace Git plugin litingyes 2026-11-05 459979e

feat(git): add right-sidebar workspace Git plugin

作者
litingyes
提交时间
2026-11-05
父提交
0090429
refs
—
feat(context7): add Context7 MCP documentation plugin litingyes 2026-11-04 0090429

feat(context7): add Context7 MCP documentation plugin

作者
litingyes
提交时间
2026-11-04
父提交
055d494
refs
—
Initial commit Liting 2026-11-04 055d494

Initial commit

作者
Liting
提交时间
2026-11-04
父提交
—
refs
—
本仓库最近的 27 个提交。泳道、分支徽标与文件计数都是真的。 工作区 Git 详情

对话里的一行

装上工具,不等于模型会用。

57 个会话、5,527 次 tool/call,两个工具只占 0.33%;装后 22.6 小时里,26 个会话只有 2 个主动用过。

Context7 详情

Context7 解析库 ID resolve-library-id
Context7 查询文档 query-docs

系统提示 节选

call mcp__context7__resolve-library-id and then mcp__context7__query-docs before answering from memory or fetching documentation with web_fetch. Skip both when the answer is in this workspace’s own code or in the installed package’s types.

工具行,以及它背后那段常驻提示。

两个文档工具

Git 面板不注册智能体工具;Context7 带来这一对。

Git 面板不注册智能体工具;Context7 带来这一对。
工具 参数 来自
mcp__context7__resolve-library-id libraryName query Context7 文档查询
mcp__context7__query-docs libraryId query language? Context7 文档查询

安装

用 DSH 插件管理器装,不要手改 profile 的 package.json 或 cordis.patch.yml。

@litingyes/dsh-git

plugin_manager action=install_bundle target= @litingyes/dsh-git@0.5.1

@litingyes/dsh-context7

plugin_manager action=install_bundle target= @litingyes/dsh-context7@0.2.1
  • 升级 dsh-git 或改动引导段落后,重启 DSH 或重新加载插件行。
  • 两个插件都要求 DSH >=0.2.1-rc.5 <0.3.0-0。

边界

这些事插件不做。

不做网络操作

dsh-git 只读写本机仓库:没有 fetch、pull、push、clone,也没有 stash。merge / rebase / cherry-pick 只从面板的右键菜单发起,遇到冲突自动中止。

浏览器给不了任意路径

写操作只接受工作区 id;读快照时还可以给会话目录,但必须落在已注册工作区内。git 通过 execFile 逐个传参,不经过 shell;丢弃要 UI 与 Host 两次确认。

查询会离开本机

Context7 的查询内容发往远端服务;不配 API key 时按 IP 匿名限流。