dsh-plugin
DayuanJiang/next-ai-draw-iodsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
为 DeepSeek Harness 提供常驻索引 grep,以同名遮蔽内置 grep/glob 工具:重复内容检索命中按访问/修改 frecency 排序的内存索引,glob 在可用时对齐内置 ripgrep 语义、不可用时回退索引。
English | 中文
A DeepSeek Harness plugin that takes over the built-in grep / glob file-search tools: grep runs on a resident index with frecency ranking, glob mirrors the built-in discovery semantics exactly when ripgrep is available (and degrades to the resident index otherwise).
The built-in tools spawn a fresh ripgrep process on every call and scan from scratch. In long sessions with many parallel subagents, the same searches run dozens of times. dsh-frecency keeps one resident index per working directory (the Rust fff engine via @ff-labs/fff-node), so repeated searches answer from that hot memory instead of spawning ripgrep per call, ranked by access/modification frecency.
dsh plugin --profile <profile> add dsh-frecency
Restart dsh and start a session — grep / glob keep their names and schemas; grep hits the resident index and glob serves the same results as the built-in tool, whatever agent preset you use. The built-in search tools are mounted per-session on the agent plane, which beats any host-plane registration, so the plugin registers into each agent's own layer at agent creation (first-party precedent: dsh-tool-subagent). Config enabled: false or removing the plugin falls back to the built-in ripgrep tools.
Host packages come from the running installation: @deepseek-ai/dsh-tools, @deepseek-ai/dsh-tool-fs-search, @deepseek-ai/dsh-output-retention and @deepseek-ai/schemastery are resolved through the profile's module resolution, never installed alongside the plugin. Built and tested against DSH 0.1.2-alpha.3 through 0.2.1-alpha.1.
grep / glob keep their names and schemas; the model switches with zero prompt changes.rg --files invocation as the built-in tool: hidden and ignored files included, VCS metadata excluded, modification-time order. If ripgrep is unavailable, it degrades to the resident index.isDefinition and per-file gitStatus ride along in grep results, so the model can spot definition lines and modified files without re-reading.gitStatus in results.See docs/design.md for the full design rationale.
pnpm install
pnpm check # typecheck + build + test
scripts/setup-hooks.sh # point git hooks at .githooks/ (pre-commit / pre-push)
Local e2e against a real harness: build, then boot the default headless profile with a --patch overlay pointing at ./dist/index.js.
Quality gates: python3 scripts/verify-adr-format.py && python3 scripts/verify-handoff-structure.py && python3 scripts/verify-doc-budgets.py --manifest scripts/doc-budgets.manifest.json && python3 scripts/verify-md-links.py.