上班摸鱼才叫赚钱
DSH 的摸鱼套件。第一个模块是伪装成构建日志的小说阅读器,后面会接入更多摸鱼模式。
功能(v0.1)
- 阅读面:输入框下方那一条状态行(会话统计所在位置),一页一行、等宽字体,显示当前内容与章节/页码;阅读开启时会隐藏 DSH 自己的会话统计(轮数 / tok/s / 缓存命中)和上下文占用百分比,关闭阅读后自动恢复;不占用右侧栏,也没有独立的阅读 tab;
- 点击翻页:点这一行的左侧 30% 上一页、右侧 70% 下一页;
- 本地 TXT:导入绝对路径,UTF-8 / GBK / GB18030 / UTF-16 自动识别,按「第 X 章 / 番外 / 序章」等自动分章;
- 书架:多本书、按书保存进度(章 + 页),设置页管理;在线书支持换源;
- 阅读设置:每页字数(状态栏一次显示的字数);
- 目录面板:
Cmd/Ctrl + L 打开章节列表,支持筛选、↑↓ 选择、Enter 跳转、Esc 关闭;当前章节高亮。
- 快捷键:
Cmd/Ctrl + ↑ 上一页
Cmd/Ctrl + ↓ 下一页
Cmd/Ctrl + ← 上一章
Cmd/Ctrl + → 下一章
Cmd/Ctrl + ; 跳转(输入页码,或 c12 跳到第 12 章)
Cmd/Ctrl + L 打开目录(章节列表,可筛选)
Cmd/Ctrl + Shift + M 老板键:隐藏阅读行
- 老板键:只隐藏阅读行,不动右侧栏;点会话头部的鲸鱼图标恢复阅读和书/章/页。
使用
- 打开 设置 → 上班摸鱼才叫赚钱;
- 在「书架」里粘贴 TXT 文件的绝对路径(支持
~/novels/book.txt),点「导入」;
- 导入后输入框下方立即出现阅读行,直接开始阅读;
- 用快捷键或点击状态栏左/右区域翻页。
仓库里带了一本用于测试的样书:/Users/czy/.dsh/bot/workspace/moyu-sample.txt。
老板键说明
默认 Cmd/Ctrl + Shift + M(Cmd+M 在 macOS 上是系统级最小化,插件拿不到,所以换了组合)。
除了注册到 DSH 的快捷键系统,插件还挂了一个页面级键盘兜底:当快捷键系统拒绝某个组合(原生菜单占用/冲突)时,方向键和老板键仍然可用;如果两者都触发,兜底会通过 defaultPrevented 跳过,不会翻两页。翻页/翻章只在阅读开启(状态栏可见)时生效,老板键随时可用。
在线书源规则
在线书源是你自己维护的规则,插件不内置、也不收集任何站点规则。设置页的「在线书源」里用精简表单填写:
- 必填:站点地址、搜索地址(可点「从首页识别搜索」自动填)、搜索结果项、目录项、正文容器;
- 可选:书源名称;其余标题/作者/链接字段默认从条目里自动推导,收在「高级选项」里。
填好后点 测试书源,插件会依次跑 搜索 → 目录 → 正文 并显示每一步结果,通过后保存即可。
保存后可以添加多个书源;搜索支持书名或作者;搜到后加入书架;阅读时如果某个源缺章或加载失败,可以在书架里点「换源」,按书名在另一个书源里搜索、选中后迁移进度。
表单字段对应的规则格式如下(也见 examples/source-rule.example.json):
{
"id": "example",
"name": "示例书源",
"baseUrl": "https://example.com",
"search": {
"url": "https://example.com/search?q={{keyword}}",
"list": ".result-item",
"title": ".title@text",
"author": ".author@text",
"bookUrl": "a@href"
},
"toc": {
"list": "#list dd a",
"title": "@text",
"chapterUrl": "@href",
"bookTitle": "h1"
},
"content": {
"text": "#content",
"remove": ["script", ".ads"]
}
}
- 选择器语法:
selector@text(默认,取文本)、selector@html、selector@属性名(如 a@href);相对地址自动按所在页面解析。
- 多选择器回退:字段可以用
|| 分隔多个候选,例如 #content || .content || .showtxt,按顺序取第一个非空结果。
- 正文换行:正文提取会把
<br>、<p>、<div>、<li>、<tr> 转成换行,并强制移除 script/style/noscript。
- 模板:
{{keyword}} 会被 URL 编码后替换;{{base}} 是 baseUrl。
- 必填:
id/name、toc.list、content.text;搜索相关可选。
- 编码:Host 代理会自动识别
Content-Type 或 <meta charset>,GBK/GB2312 会按 GB18030 解码。
- 只支持静态 HTML;需要 JS 渲染、登录、验证码的站点不在能力范围内。
测试与换源
- 测试书源:表单填好后点一下,自动用测试关键词跑 搜索 → 取第一个结果的书籍页 → 目录 → 第一章节正文,并显示每步结果;失败时给出具体是哪一步、什么错误。
- 换源:书架里每本在线书有「换源」按钮,选另一个书源、按书名搜索、选中结果后切换;如果新旧目录的章节标题能对上,会迁移到对应章节,否则保留章节序号。
关于开源规则
书源格式本身有开源的先例(例如「阅读/Legado」的 book source JSON),但它的规则引擎包含 JS 表达式、XPath、复杂模板,完整兼容工作量很大;公开规则库大多指向盗版站点,本插件不会内置或代为收集。当前实现的是一个简单、可读的 CSS 选择器规则,方便你自己写、自己维护;后续可以加 Legado 规则的转换/导入(只做格式兼容,不附带站点)。
后续
- Legado 规则格式的导入/转换(格式兼容,不附带站点);
- 更多摸鱼模块(股票、网页、视频…),共用这套外壳;
- EPUB、自动滚屏、书签/目录面板。
文件
index.js — Host 半:本地 TXT 读取、编码识别、分章、按章取文。
client.js — Client 半:阅读 tab、状态栏、入口、设置页、快捷键。
cordis.patch.yml — 插入 Host 行。
locale/*.json — 插件管理页元数据。
icon.svg — 插件图标。