以文档优先模式阅读内容,独立端口与网页界面并存
32.9/100
综合分
6
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/8/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add bill9109/dsh-101该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@bill9109/dsh-101(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^20.0.0 || >=22.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/17 12:41:01
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 45 处,展示前 31 条)
- 删除本地文件lib/index.js:886
await rm(join(this.translationsDir, docId, `${locale}.md`)); - 读取本地文件lib/index.js:910
const parsed = parseMarkdownVariant(await readFile(join(this.translationsDir, docId, `${locale}.md`), "utf8")); - 写入本地文件lib/index.js:946
await mkdir(dir, { recursive: true }); - 写入本地文件lib/index.js:949
await writeFile(tmp, input.body, "utf8"); - 写入本地文件lib/index.js:950
await rename(tmp, target); - 读取本地文件lib/index.js:984
const bindings = JSON.parse(readFileSync(this.#bindingsPath(), "utf8")).bindings; - 写入本地文件lib/index.js:1003
await mkdir(dshHomePath(CURATION_HOME_DIR), { recursive: true }); - 写入本地文件lib/index.js:1006
await writeFile(tmp, JSON.stringify({ - 写入本地文件lib/index.js:1010
await rename(tmp, target); - 读取本地文件lib/index.js:1050
return parseCorpusIndex(readFileSync(join(this.corpusDir, "corpus.json"), "utf8")); - 读取本地文件lib/index.js:1059
const curation = parseCurationFile(readFileSync(path, "utf8")); - 读取本地文件lib/index.js:1087
const raw = JSON.parse(readFileSync(this.#seenRevisionPath(), "utf8")); - 删除本地文件lib/index.js:1108
rmSync(tmp, { force: true }); - 读取本地文件lib/index.js:1141
const raw = await readFile(join(corpusDir, "documents", `${id}.json`), "utf8"); - 发起网络请求lib/client.js:71
const response = await fetch(`${BASE}${path}`, init); - 发起网络请求lib/client.js:961
const result = (await (await fetch(`/api/${method}`, { - 删除本地文件src/app/index.ts:211
await rm(join(this.translationsDir, docId, `${locale}.md`)) - 读取本地文件src/app/index.ts:237
const raw = await readFile(join(this.translationsDir, docId, `${locale}.md`), 'utf8') - 写入本地文件src/app/index.ts:268
await mkdir(dir, { recursive: true }) - 写入本地文件src/app/index.ts:271
await writeFile(tmp, input.body, 'utf8') - 写入本地文件src/app/index.ts:272
await rename(tmp, target) - 读取本地文件src/app/index.ts:306
const raw = JSON.parse(readFileSync(this.#bindingsPath(), 'utf8')) as { - 写入本地文件src/app/index.ts:333
await mkdir(home, { recursive: true }) - 写入本地文件src/app/index.ts:337
await writeFile(tmp, payload, 'utf8') - 写入本地文件src/app/index.ts:338
await rename(tmp, target) - 读取本地文件src/app/index.ts:381
const text = readFileSync(join(this.corpusDir, 'corpus.json'), 'utf8') - 读取本地文件src/app/index.ts:392
const curation = parseCurationFile(readFileSync(path, 'utf8')) - 读取本地文件src/app/index.ts:423
const raw = JSON.parse(readFileSync(this.#seenRevisionPath(), 'utf8')) as { revision?: unknown } - 删除本地文件src/app/index.ts:444
rmSync(tmp, { force: true }) - 读取本地文件src/app/index.ts:477
const raw = await readFile(join(corpusDir, 'documents', `${id}.json`), 'utf8') - 发起网络请求src/client/api.ts:13
const response = await fetch(`${BASE}${path}`, init)
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-agent@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-theme@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-session给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 文档优先阅读模式
- 独立端口运行
- 网页界面并存
DSH 文档阅读模式
README
由 DeepSeek 最新模型翻译生成dsh-101 — DSH 文档优先阅读器 profile bundle
Release v0.1.7
License: BSD-3-Clause
Node.js
DSH profiles
安装: bash / 下的一个目录 —— 仓库的 profile/ 就是可直接使用的 profile 内容。
推荐:一键脚本(把 profile/ 放到 ~/.dsh/profiles/dsh-101/ 并安装 bundle):
从 GitHub 安装(建议 pin 到 tag/commit): bash 不要装进 web profile。 dsh-101 的 bundle 会禁用 ui-layout(默认浏览器外壳),装进 web-app 系 profile 会连坐搞挂 web(sidebar / conversation / app-shell 全部等待 layout 服务而 pending,web 起不来)。dsh-101 请始终作为独立 profile 使用(dsh --profile dsh-101,默认 3081 端口,可与 3080 的 web 并存)。install.sh 已对 --profile web 直接拒绝。
端口
默认 3081(与 3080 的 web GUI 并存)。
展开完整文档(README 剩余 1 节)
dsh-101 — DSH 文档优先阅读器 profile bundle Release v0.1.7 License: BSD-3-Clause Node.js DSH profiles 安装: bash / 下的一个目录 —— 仓库的 profile/ 就是可直接使用的 profile 内容。 推荐:一键脚本(把 profile/ 放到 ~/.dsh/profiles/dsh-101/ 并安装 bundle): 从 GitHub 安装(建议 pin 到 tag/commit): bash 不要装进 web profile。 dsh-101 的 bundle 会禁用 ui-layout(默认浏览器外壳),装进 web-app 系 profile 会连坐搞挂 web(sidebar / conversation / app-shell 全部等待 layout 服务而 pending,web 起不来)。dsh-101 请始终作为独立 profile 使用(dsh --profile dsh-101,默认 3081 端口,可与 3080 的 web 并存)。install.sh 已对 --profile web 直接拒绝。 端口 默认 3081(与 3080 的 web GUI 并存)。两种改法: 启动时临时指定(推荐,不改配置,dsh 0.1.0-rc.6+): sh dsh --profile dsh-101 --port 8080 改 profile 配置(持久化默认端口): yaml ~/.dsh/profiles/dsh-101/cordis.patch.yml - id: webserver inject: [webStartup] config: host: !!js ctx.webStartup.host ?? '127.0.0.1' port: !!js ctx.webStartup.port ?? 8080 (启动参数优先;patch 里的值只是回退默认。) Git 安装与构建产物。 lib/ 已提交到本仓库,所以 git 安装直接拿到构建好的 host + client bundle —— 无需构建、无需授权。若在构建前从全新 clone 安装,先运行 node scripts/build.mjs(需要 DSH 源码 checkout,见下)。 升级 用新的 pin tag 重跑一键脚本: sh bash 本地 checkout 安装则对更新后的 checkout 重跑 ./scripts/install.sh .(脚本只补缺失的层,profile 现有状态不会丢)。DSH 发布新快照后,用 node scripts/upgrade.mjs 从升级后的 checkout 同步 bundle 源码(见「从更新的 DSH 快照升级」)。 卸载 sh dsh plugin --profile dsh-101 remove @bill9109/dsh-101 如果不再需要这个独立 profile: rm -rf ~/.dsh/profiles/dsh-101 第一条命令在 profile 目录执行 pnpm remove 并从 dsh.profile.bundles 移除该 bundle;第二条删除独立 profile 本身。 故障排查 | 症状 | 解决 | | 安装 dsh-101 后 web GUI(3080)起不来 / sidebar 一直 pending | dsh-101 被装进了 web profile,禁用了 ui-layout —— 把 @bill9109/dsh-101 从 web profile 移除,再用一键脚本把 dsh-101 装成独立 profile | | dsh --profile dsh-101 启动失败 | 确认 $DSH_HOME/profiles/dsh-101/ 存在且 bundles 列表包含三层(dsh-base、dsh-web-app、@bill9109/dsh-101);缺层就重跑 install.sh | | 端口 3081 被占用 | 启动时加 --port ,或在 profile 的 cordis.patch.yml 里持久化别的默认端口 | | GitHub 安装失败或装到旧代码 | 把安装 pin 到 tag(github:bill9109/dsh-101#v0.1.7),或从本地 checkout 安装(./scripts/install.sh .) | | 文档缺失或过期 | 从 DSH 源码 checkout 重新生成语料:DSH_CHECKOUT=/path/to/dsh node scripts/build.mjs --corpus | | DSH 发布新快照后出问题 | 用 node scripts/upgrade.mjs --checkout /path/to/upgraded-dsh 同步源码并重建 | 目录结构 src/ app/ 主机插件:语料服务 + /api/dsh101 路由(来自 dsh-101-app) app/invariant.ts core/ 语料模型:加载、合并、搜索(来自 dsh-101-core) tutor/ 主机插件:模型工具、curator 技能(来自 dsh-101-tutor) client/ 浏览器端:阅读器外壳(来自 dsh-101-app/src/client) invariant.ts assets/dsh-101/ 生成的语料(corpus.json + documents/ + images/) cordis.patch.yml bundle 补丁:挂载 app(包根)+ tutor(./tutor 子路径) profile/ 开箱即用的 dsh-101 profile(package.json + pnpm-workspace.yaml + cordis.patch.yml) scripts/ install.sh 一键 profile 安装脚本(install.sh --port ) build.mjs 针对 DSH checkout 构建 host + client bundle gen-dsh-101-corpus.ts 从 DSH 源码树重新生成语料 upgrade.mjs 从升级后的 DSH checkout 同步源码 + 重建 verify-i18n.mjs 双语 README 一致性检查(node scripts/verify-i18n.mjs) 构建 bundle 的 peer 依赖从 DSH 安装解析 —— 可以是源码 checkout(DSH_CHECKOUT),也可以是运行中 DSH 的模块回退($DSH_HOME/profiles/node_modules)。工具链(tsc、tsdown)优先取 DSH 源码 checkout。 sh DSH_CHECKOUT=/path/to/dsh node scripts/build.mjs 重新生成语料后构建: DSH_CHECKOUT=/path/to/dsh node scripts/build.mjs --corpus build.mjs 把 DSH 的 peer 软链进 node_modules,依次运行 tsc(类型输出到 types/)和 tsdown(host bundle + client bundle 输出到 lib/),结束后移除软链。 通常不需要构建。 lib/ 已提交,dsh plugin add(GitHub / tarball / 本地 checkout)安装的都是构建好的 bundle。只有开发本仓库或执行 upgrade 同步后才需要构建。 重新生成语料 语料是 DSH 仓库文档的快照。从任意 DSH 源码 checkout 重新生成(使用该 checkout 的 tsx): sh DSH_CHECKOUT=/path/to/dsh node scripts/build.mjs --corpus 或显式指定: /path/to/dsh/node_modules/.bin/tsx scripts/gen-dsh-101-corpus.ts /path/to/dsh 从更新的 DSH 快照升级 DSH 仓库发布新快照后,从升级后的 checkout 同步本 bundle: sh node scripts/upgrade.mjs --checkout /path/to/upgraded-dsh 脚本会:把 101 各包的源码复制到 src/ → 将内部 import 改写为相对路径 → 重新生成语料 → 重建。之后审查 diff、提交、升版本号并打 tag: sh git add -A && git commit -m "sync with DSH " git tag v0.2.0 && git push origin main --tags 开发与验证 sh pnpm install pnpm run build # tsc + tsdown -> lib/(已提交) pnpm run gen-corpus # 从 DSH 源码树重新生成语料(需要 DSH_CHECKOUT) node scripts/verify-i18n.mjs # 双语 README 一致性 pnpm run build 把 host + client bundle 生成到 lib/,lib 已提交,消费方安装无需构建。 保持双语 README 同步:改 README.md 和 README.zh.md 任一侧都要同步另一侧,然后 node scripts/verify-i18n.mjs --write 重新记录 blob hash。 社区与关于 - 可复现的 bug、聚焦的功能请求和使用问题,走 GitHub Issues。 - 提变更前先读 CONTRIBUTING.md;安全问题通过 SECURITY.md 私有上报。 - 版本与兼容性说明见 CHANGELOG.md。 License BSD-3-Clause
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
bill9109/dsh-101
以文档优先模式阅读内容,独立端口与网页界面并存
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目