Skip to content

samxiexs/adhd-reader

Repository files navigation

Focus Reader

让一段文字,变得更容易开始。

Focus Reader 是一个面向 ADHD 读者、学生和知识工作者的便利阅读工具。它不会总结、翻译或改写原文,而是通过更清楚的段落节奏、内容层级和词首聚焦,降低开始阅读和持续阅读的负担。

Focus Reader 预览

为什么做这个工具

长文本的困难常常不只是“看不懂”,还包括不知道从哪里开始、难以维持注意力,以及读到后面忘记前文。

Focus Reader 试图解决的是呈现问题:保留作者原本的措辞和信息,只让文字更容易扫描、更容易定位重点,也更容易分段完成。

主要功能

文本阅读

  • 粘贴任意语言的文本
  • 选择保留粗体、斜体、链接和列表,或清洗为统一纯文本
  • 默认以词内前缀加粗的方式创建视觉落点
  • 调整词首聚焦长度,或随时关闭该样式
  • 使用完全本地的确定性规则整理内容
  • 使用可选的 AI 模式添加轻量的语义提示
  • 在网页中直接编辑生成结果
  • 复制为富文本,粘贴到 Word、Notion 等工具时保留格式
  • 下载为 Markdown 文件

文件阅读

  • 打开 Markdown 文件
  • 打开包含可选文字层的 PDF
  • 原文与便利阅读版分屏显示
  • 切换为单栏专注阅读
  • 按 PDF 页码关联原文与便利阅读内容
  • 对较长文件进行分块处理并显示进度

阅读体验

  • 调整字号、行距和内容宽度
  • 调整词首聚焦长度
  • 分别选择西文与中文的输出字体;已经生成的内容可立即换字体验
  • 支持键盘操作和清晰的焦点状态
  • 默认不建立账户,不保存阅读历史

工作方式

Focus Reader 使用一个简单但严格的原则:原文内容不能被改变。

默认的词首聚焦会为每个可识别词段的前缀加粗,形成类似人工注视点的视觉路径。它是一种可关闭、可调节的阅读偏好,并不承诺对所有读者提升速度或理解。

本地模式通过固定规则识别段落和词首范围,不需要联网,也不需要模型密钥。AI 模式只允许模型返回段落 ID 和轻量语义提示的字符位置。服务端会检查段落是否完整、顺序是否一致、字符范围是否合法;无法验证的结果会被拒绝,并自动回退到本地模式。

这意味着 AI 负责建议“看哪里”,但没有权限重写“原文是什么”。

本地运行

需要 Node.js 22.13 或更高版本。

npm install
npm run dev

终端会显示本地访问地址。没有配置 AI 服务时,本地模式仍可完整使用。

生产构建与测试:

npm run build
npm test
npm run lint

配置 AI 服务

项目支持 OpenAI 兼容接口。复制 .env.example.env.local,然后在本地填写密钥。

单一服务商的基本配置如下:

OPENAI_API_KEY=your_key_here
OPENAI_MODEL=your_model_name
OPENAI_BASE_URL=https://api.openai.com/v1

需要多个服务商时,可以通过 AI_PROVIDERS_JSON 定义显示名称、接口地址、模型和密钥对应的环境变量名。真实密钥始终保留在服务端,不会发送到浏览器。

不要把 .env.local、真实密钥或内部接口地址提交到 Git 仓库。

手动部署

用 Docker 部署到自己的服务器

这是一种最简单、也最容易迁移的部署方式。服务器需要安装 Docker;应用本身不需要数据库。

先在项目目录创建本地配置。只使用本地规则模式时,配置文件可以为空;要启用 AI 模式时,再参考 .env.example 填入服务端密钥。

cp .env.example .env.local
docker build -t focus-reader .
docker run --rm -p 3000:3000 --env-file .env.local focus-reader

随后访问 http://服务器地址:3000。在自己的电脑上试用时,地址通常是 http://localhost:3000

如果要让服务器重启后自动恢复运行,改用下面的启动命令:

docker run -d --name focus-reader --restart unless-stopped -p 3000:3000 --env-file .env.local focus-reader

更新版本时,先重新拉取代码并执行 docker build,再停止并移除旧容器,然后使用同一条后台启动命令创建新容器。不要把 .env.local 提交到 Git 仓库。

默认容器不使用数据库,也不需要持久卷。用户内容只存在于当前浏览器会话和请求处理期间。

隐私设计

  • 不要求注册或登录
  • 不建立阅读历史数据库
  • 不把文件写入持久存储
  • 模型密钥只在服务端读取
  • 本地模式不向模型服务发送文本
  • 页面刷新或关闭后不保留当前内容

如果启用第三方 AI 服务,文本会在处理请求期间发送给部署者所配置的服务商。实际部署时应根据服务商政策提供相应的隐私说明。

当前限制

  • PDF 必须包含可选择的文字层
  • 扫描件和图片型 PDF 暂不支持 OCR
  • 当前 AI 接入范围是 OpenAI 兼容接口
  • 富文本只保留基础格式,不保证复刻来源页面的完整样式
  • 便利阅读结果不会导出为重新排版后的 PDF

项目结构

app/                 页面与服务端接口
lib/                 文档处理、格式校验与模型适配
public/              静态资源
tests/               服务端渲染与接口测试
Dockerfile           容器部署配置
.env.example         安全的环境变量示例

免责声明

Focus Reader 改善的是文字呈现和阅读体验,不用于 ADHD 诊断、治疗或医疗建议。

License

项目尚未指定开源许可证。在正式公开分发或接受外部贡献前,应先选择并添加合适的许可证。

About

ADHD Reader Helps U to

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors