长篇中文小说工作台DSH…
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add micellince/dsh-long-novel-workbench该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 87 处,展示前 60 条)
- 写入本地文件index.js:953
await mkdirP(baseDir, { recursive: true }) - 读取本地文件index.js:960
try { statSync(dir) } catch { exists = false } - 写入本地文件index.js:962
await mkdirP(dir, { recursive: true }) - 读取本地文件index.js:1353
if (!existsSync(target)) throw invalid(`路径不存在:${target}`) - 读取本地文件index.js:1406
entries = readdirSync(dir, { withFileTypes: true }) - 读取本地文件index.js:1442
const stat = statSync(target) - 读取本地文件index.js:1444
const baseDir = stat.isDirectory() && existsSync(chaptersDir) && statSync(chaptersDir).isDirectory() ? chaptersDir : target - 读取本地文件index.js:1444
const baseDir = stat.isDirectory() && existsSync(chaptersDir) && statSync(chaptersDir).isDirectory() ? chaptersDir : target - 写入本地文件index.js:1649
await mkdirP(manuscriptDir, { recursive: true }) - 写入本地文件index.js:1663
await writeFile(filePath, `${name}\n\n${parts.join('\n\n')}\n`, 'utf8') - 执行外部命令来自配置/变量index.js:2539
const child = spawn(cmd, args, { detached: true, stdio: 'ignore' }) - 发起网络请求client.js:286
res = await fetch(apiBase(), { - 写入剪贴板client.js:416
await navigator.clipboard.writeText(value) - 写入剪贴板client.js:886
try { navigator.clipboard.writeText(text) } catch { } - 读取本地文件lib/store.js:84
await stat(path) - 读取本地文件lib/store.js:128
const raw = await readFile(path, 'utf8') - 写入本地文件lib/store.js:139
await mkdir(dirname(path), { recursive: true }) - 写入本地文件lib/store.js:141
await writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, 'utf8') - 写入本地文件lib/store.js:142
await rename(tmp, path) - 写入本地文件lib/store.js:146
await mkdir(dirname(path), { recursive: true }) - 写入本地文件lib/store.js:148
await writeFile(tmp, String(text ?? ''), 'utf8') - 写入本地文件lib/store.js:149
await rename(tmp, path) - 读取本地文件lib/store.js:163
const real = await realpath(wanted) - 读取本地文件lib/store.js:189
const realDir = await realpath(dir) - 读取本地文件lib/store.js:194
const realDir = await realpath(dir) - 读取本地文件lib/store.js:244
const files = await readdir(join(dir, 'chapters')) - 删除本地文件lib/store.js:738
for (const old of names.slice(0, Math.max(0, names.length - BACKUP_LIMIT))) await rm(join(sub, old), { force: true }) - 删除本地文件lib/store.js:923
await rm(plan.txt, { force: true }) - 删除本地文件lib/store.js:927
await rm(plan.md, { force: true }) - 删除本地文件lib/store.js:931
await rm(plan.metaPath, { force: true }) - 删除本地文件lib/store.js:1211
for (const old of extra) await rm(join(target, old), { force: true }) - 读取本地文件lib/usage.js:91
entries = await readdir(dir, { withFileTypes: true }) - 读取本地文件lib/usage.js:101
info = await stat(full) - 读取本地文件lib/usage.js:134
files = (await readdir(sessionDir)).filter((name) => /^session\.v\d+\.jsonl\.zstd$/.test(name)) - 读取本地文件lib/usage.js:142
buf = await readFile(file) - 请求外部主机models.devlib/usage.js:197
const response = await fetch('https://models.dev/api.json', { signal: AbortSignal.timeout(8000) }) - 发起网络请求lib/usage.js:197
const response = await fetch('https://models.dev/api.json', { signal: AbortSignal.timeout(8000) }) - 读取本地文件lib/bookdb.js:39
return JSON.parse(await readFile(file, 'utf8')) - 写入本地文件lib/bookdb.js:46
await mkdir(join(file, '..'), { recursive: true }) - 写入本地文件lib/bookdb.js:48
await writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, 'utf8') - 写入本地文件lib/bookdb.js:49
await rename(tmp, file) - 读取本地文件lib/bookdb.js:183
const raw = await readFile(`${base}.${ext}`, 'utf8') - 读取本地文件lib/bookdb.js:204
const raw = await readFile(join(dir, 'reviews.json'), 'utf8').catch(() => '[]') - 读取本地文件lib/bookdb.js:502
try { files = (await readdir(chapterDir)).filter((file) => /^\d{4}\.txt$/.test(file)) } catch { files = [] } - 读取本地文件lib/bookdb.js:509
try { text = await readFile(join(chapterDir, file), 'utf8') } catch { continue } - 读取本地文件lib/bookdb.js:510
try { meta = JSON.parse(await readFile(join(chapterDir, file.replace(/ txt$/, '.meta.json')), 'utf8')) } catch { meta = {} } - 写入本地文件lib/review-doc.js:129
await mkdir(manuscriptDir, { recursive: true }) - 写入本地文件lib/review-doc.js:130
await writeFile(filePath, content, 'utf8') - 发起网络请求lib/update.js:40
const res = await fetch(url, { signal: controller.signal, headers: { accept: 'application/json' } }) - 读取本地文件lib/update.js:126
try { await stat(path); return true } catch { return false } - 请求外部主机registry.npmjs.orglib/update.js:150
const metaRes = await fetch(`https://registry.npmjs.org/${PKG}/latest`, { headers: { accept: 'application/json' } }) - 发起网络请求lib/update.js:150
const metaRes = await fetch(`https://registry.npmjs.org/${PKG}/latest`, { headers: { accept: 'application/json' } }) - 发起网络请求lib/update.js:160
const res = await fetch(tarball) - 写入本地文件lib/update.js:174
await mkdir(staging, { recursive: true }) - 写入本地文件lib/update.js:178
if (file.dir) { await mkdir(target, { recursive: true }); continue } - 写入本地文件lib/update.js:179
await mkdir(dirname(target), { recursive: true }) - 写入本地文件lib/update.js:180
await writeFile(target, file.data) - 写入本地文件lib/update.js:183
await rename(root, backup) - 写入本地文件lib/update.js:185
await rename(staging, root) - 读取本地文件lib/update.js:208
try { entries = await readdir(parent) } catch { entries = [] }
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:models.dev、registry.npmjs.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
长篇中文小说工作台:章节/时间线/事实账本/伏笔/冲突/人物/高光/审稿/提案/对齐/9 Agent 分工/名家风格预设,AI 可直接生成与审稿。
README
由 DeepSeek 最新模型翻译生成GitHub 自动化配置
- workflows/ci.yml:每次 push / PR 跑语法检查,外加版本 / CHANGELOG / 发布说明一致性预检(不跑自动化测试)。
- workflows/publish.yml:推 v* tag 时校验 tag 与 package.json 版本一致,然后发布到 npm(凭据:仓库 secret NPM_TOKEN)。
- ISSUE_TEMPLATE/:Issue 模板;PULL_REQUEST_TEMPLATE.md:PR 模板。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
micellince/dsh-long-novel-workbench
长篇中文小说工作台DSH…
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目