在网页写作室立书设卡,按章生成并改稿
27.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add shuaixiangzi/dsh-mojian该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 62 处,展示前 47 条)
- 读取本地文件plugins/dsh-novel-studio/index.js:10
if (!existsSync(dir)) return '' - 读取本地文件plugins/dsh-novel-studio/index.js:11
const files = readdirSync(dir, { withFileTypes: true }) - 读取本地文件plugins/dsh-novel-studio/index.js:17
return [readFileSync(full, 'utf8')] - 读取本地文件plugins/dsh-novel-studio/index.js:26
const identity = existsSync(path.join(PROMPTS, '00-identity.md')) - 读取本地文件plugins/dsh-novel-studio/index.js:27
? readFileSync(path.join(PROMPTS, '00-identity.md'), 'utf8') - 读取本地文件plugins/dsh-novel-studio/index.js:47
if (!existsSync(NOVELS)) return [] - 写入本地文件server/db.ts:28
mkdirSync(DATA_DIR, { recursive: true }) - 读取本地文件server/db.ts:236
if (existsSync(SETTINGS_PATH)) { - 读取本地文件server/db.ts:238
const raw = readFileSync(SETTINGS_PATH, 'utf8') - 读取本地文件server/db.ts:245
if (!existsSync(NOVELS_DIR)) return - 读取本地文件server/db.ts:246
for (const entry of readdirSync(NOVELS_DIR, { withFileTypes: true })) { - 读取本地文件server/db.ts:249
if (!existsSync(file)) continue - 读取本地文件server/db.ts:259
const novel = JSON.parse(readFileSync(file, 'utf8')) as Novel - 读取本地文件server/env.ts:7
if (!existsSync(file)) return - 读取本地文件server/env.ts:8
for (const raw of readFileSync(file, 'utf8').split(/ ? /)) { - 读取本地文件server/index.ts:60
if (!existsSync(file) || !req.params.file.endsWith('.mp3')) { - 读取本地文件server/index.ts:344
if (existsSync(WEB_DIR)) { - 读取本地文件server/prompts.ts:9
for (const entry of readdirSync(dir, { withFileTypes: true })) { - 读取本地文件server/prompts.ts:31
if (!existsSync(PROMPTS_DIR)) return [] - 读取本地文件server/prompts.ts:34
const parsed = matter(readFileSync(file, 'utf8')) - 读取本地文件server/prompts.ts:49
const parsed = matter(readFileSync(abs, 'utf8')) - 写入本地文件server/prompts.ts:50
writeFileSync(abs, matter.stringify(body.replace(/^ /, ''), parsed.data), 'utf8') - 写入本地文件server/store.ts:45
mkdirSync(NOVELS_DIR, { recursive: true }) - 写入本地文件server/store.ts:46
mkdirSync(DATA_DIR, { recursive: true }) - 读取密钥环境变量server/store.ts:64
...profileFromPreset(preset, process.env.DEEPSEEK_API_KEY ?? ''), - 读取密钥环境变量server/store.ts:71
...profileFromPreset(preset, process.env.MINIMAX_API_KEY ?? ''), - 读取密钥环境变量server/store.ts:76
...profileFromPreset(preset, process.env.KIMI_API_KEY ?? ''), - 读取本地文件server/store.ts:115
const raw = readKv(getDb(), 'settings') ?? (existsSync(SETTINGS_PATH) ? readFileSync(SETTINGS_PATH, 'utf8') : '') - 读取本地文件server/store.ts:115
const raw = readKv(getDb(), 'settings') ?? (existsSync(SETTINGS_PATH) ? readFileSync(SETTINGS_PATH, 'utf8') : '') - 写入本地文件server/store.ts:166
writeFileSync(SETTINGS_PATH, serialized, 'utf8') - 写入本地文件server/store.ts:244
mkdirSync(dir, { recursive: true }) - 写入本地文件server/store.ts:245
writeFileSync(path.join(dir, 'novel.json'), JSON.stringify(novel, null, 2), 'utf8') - 写入本地文件server/store.ts:246
writeFileSync(path.join(dir, 'BIBLE.md'), renderBibleMarkdown(novel), 'utf8') - 读取本地文件server/store.ts:328
if (existsSync(dir)) rmSync(dir, { recursive: true, force: true }) - 删除本地文件递归server/store.ts:328
if (existsSync(dir)) rmSync(dir, { recursive: true, force: true }) - 写入本地文件server/tts.ts:58
mkdirSync(TTS_DIR, { recursive: true }) - 读取本地文件server/tts.ts:59
if (!existsSync(abs)) { - 写入本地文件server/tts.ts:61
writeFileSync(abs, audio) - 读取密钥环境变量server/tts.ts:76
|| process.env.MINIMAX_API_KEY - 读取密钥环境变量server/tts.ts:77
const xai = process.env.XAI_API_KEY - 发起网络请求server/tts.ts:113
const response = await fetch(minimaxTtsUrl(), { - 请求外部主机api.x.aiserver/tts.ts:155
const response = await fetch('https://api.x.ai/v1/tts', { - 发起网络请求server/tts.ts:155
const response = await fetch('https://api.x.ai/v1/tts', { - 发起网络请求web/src/api.ts:14
const res = await fetch(url, { - 发起网络请求web/src/api.ts:77
const res = await fetch(url) - 发起网络请求web/src/api.ts:100
const res = await fetch(`/api/novels/${id}/run`, { - 发起网络请求web/src/api.ts:112
const res = await fetch(`/api/novels/${id}/events`)
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.x.ai
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 网页写作室
- 立书设卡
- 按章生成改稿
墨间 · DeepSeek Harness 小说工坊。网页写作室 + dsh-plugin。
README
由 DeepSeek 最新模型翻译生成墨间 · 小说工坊
License: MIT
dsh-plugin
DeepSeek Harness
给作者用的写小说屋子。先立一本书,进房间后再选「细聊」或「直接生成」。短篇可通过聊天自动成稿,长篇先更新世界与人物设定,再生成大纲并按章推进。写作室只换界面主题(排版、材质、按钮),不改模型文风。
这是一个开源的 DeepSeek Harness 项目,GitHub topic 为 dsh-plugin。网页是给作者用的正门;仓库里的 plugins/dsh-novel-studio 是给 dsh 用的插件。
她怎么用
1. 打开网页,在右上角「模型」里给常用服务填一次钥匙。
2. 可直接选择 DeepSeek、MiniMax Coding Plan 或 Kimi Coding Plan,也可新增 OpenAI 兼容服务。
3. 在首页写书名或题眼,选短篇 / 长篇和主题房间,点「创建这本书」。
4. 进入房间后选「先细聊」或「直接生成」。
5. 「发送并写入」会更新设定并生成正文,「只讨论 / 先细聊」不会改稿。
6. 左边设定柜随时看题眼、世界、人物、大纲。正文可划词引用,按段落改稿。
不要让她碰提示词。提示词是给你维护的。
你怎么启动
需要 Node 20+。钥匙可以写在 .env,也可以只在网页里保存。
展开完整文档(README 剩余 1 节)
墨间 · 小说工坊 License: MIT dsh-plugin DeepSeek Harness 给作者用的写小说屋子。先立一本书,进房间后再选「细聊」或「直接生成」。短篇可通过聊天自动成稿,长篇先更新世界与人物设定,再生成大纲并按章推进。写作室只换界面主题(排版、材质、按钮),不改模型文风。 这是一个开源的 DeepSeek Harness 项目,GitHub topic 为 dsh-plugin。网页是给作者用的正门;仓库里的 plugins/dsh-novel-studio 是给 dsh 用的插件。 她怎么用 1. 打开网页,在右上角「模型」里给常用服务填一次钥匙。 2. 可直接选择 DeepSeek、MiniMax Coding Plan 或 Kimi Coding Plan,也可新增 OpenAI 兼容服务。 3. 在首页写书名或题眼,选短篇 / 长篇和主题房间,点「创建这本书」。 4. 进入房间后选「先细聊」或「直接生成」。 5. 「发送并写入」会更新设定并生成正文,「只讨论 / 先细聊」不会改稿。 6. 左边设定柜随时看题眼、世界、人物、大纲。正文可划词引用,按段落改稿。 不要让她碰提示词。提示词是给你维护的。 你怎么启动 需要 Node 20+。钥匙可以写在 .env,也可以只在网页里保存。 git clone https://github.com/shuaixiangzi/dsh-mojian.git cd dsh-mojian copy .env.example .env npm install npm run dev 浏览器打开 http://127.0.0.1:5176 网页内置以下免手输地址的服务预设: - DeepSeek - MiniMax Coding Plan - Kimi Coding Plan 三家的 Key 互不通用。 接 DeepSeek Harness 先能跑起来: npx @deepseek-ai/dsh web 然后把墨间当成 dsh-plugin 装上。工作区选这个仓库根目录。 从 GitHub 安装: dsh plugin --profile web add github:shuaixiangzi/dsh-mojian 本地开发时: dsh plugin --profile web add ./plugins/dsh-novel-studio 或临时挂上: dsh web --patch ./plugins/dsh-novel-studio/cordis.patch.yml 插件会: - 注入工坊人格(来自 prompts/) - 提供 novel_list / novel_bible / novel_prompts - 和网页版共用同一份稿件数据 技能在 skills/,AGENTS.md 会告诉 agent 先读提示词、再动稿。 提示词在哪 全部在 prompts/,改完立刻生效,不用重启也能在「提示词」页保存。 | 文件 | 管什么 | | prompts/00-identity.md | 作者人格(启用) | | prompts/modes/short.md | 短篇写法(启用) | | prompts/modes/long.md | 长篇写法(启用) | | prompts/stages/.md | 各步输出格式 | | prompts/01-craft.md、prompts/skins/.md | 已停用,屋子只换界面 | 写作室只换界面主题,不会把真人写进小说。 数据在哪 真源是本地 SQLite:data/mojian.sqlite - 书籍、章节、段落、设定柜、对话、钥匙都在库里 - data/novels// 里的 novel.json、BIBLE.md、章节 .md 是给人看的快照 - data/ 不会进 Git,钥匙和稿件留在你自己机器上 写作室(界面主题) - 清新风 · 青芽来信 - 可爱风 · 奶油星球 - 中国风 · 千里青绿 - 中国风 · 长街灯市 - 中国风 · 烟雨留白 - 帅哥风 · 舞台侧光 开源 MIT License。欢迎提 issue 和 PR。 GitHub topics:dsh-plugin · deepseek-harness · dsh · cordis
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
shuaixiangzi/dsh-mojian
在网页写作室立书设卡,按章生成并改稿
相关插件 · 其他
模型破甲清洗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
这是你的仓库?认领条目