Skip to content

lightmote-sf

Verified

lightmote-sf · v1.4.0 · MIT · Web UI

Lightmote: a DeepSeek Harness studio for hard SF writing, academic papers, and professional work reports, PPT, and concept videos, with Host search, source ledgers, long-form chunked generation, and account-scoped cooldown.

Install

dsh plugin add lightmote-sf

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Creators

Readme

光屑 · 科幻视界 / Lightmote · SF Vision

A left-sidebar DSH workbench for hard science fiction. It is built as a Client plugin: everything that can be decided locally (catalog filtering, constraint solving, task-brief construction, capability registration) runs in the browser; the finished brief is handed to a normal DSH session as an editable draft.

1.4.0 highlights

  • Onboarding wizard, service connection test, changelog, local data export.
  • Long-form task center: inspect, resume, cancel, export background jobs.
  • Academic: DOI verification, BibTeX/RIS, claim–evidence table, research gaps.
  • Word/PDF/PPTX export; work templates, scorecard, risk matrix, stakeholder map.
  • World bible, continuity check, chapter versions, submission Word/TXT export.
  • Device management, rate limits, usage stats, admin overview/backup.
  • Email is hidden until the “signed in” chip is clicked.

What it does

  • 作品检索:38 个本地科幻坐标(中文、英文、法文、波兰文、俄文)即时过滤;一键生成覆盖中英日文、带来源核验要求的 Agent 检索任务书。本地库明确不是全集。
  • 硬科幻创作:把大纲、科学内核、人物、篇幅、视角和严格度压成一份写作任务书,要求“科学账本 → 场景卡 → 正文 → 连续性校对”,禁止万能技术和解释性偷懒。
  • 设定解构:把设定拆成实体、变量、规则、尺度与时间线,分层为已确立科学 / 合理外推 / 可约束猜想 / 作品公理,并输出冲突表与最小修改集。
  • 相容性实验:本地 point-algebra 约束求解器检测传递闭包、严格不等式环、!= 冲突和单位不一致;随后可生成语义深审任务书,检查定义歧义、因果闭环、守恒、规模不经济等本地引擎覆盖不到的问题。
  • 对比评价 / 风格解剖 / 建模鉴赏:分别输出可比性声明与差异分析、可证据化的风格指纹与仿写、六维模型评分与“模型—主题”耦合论证。
  • 通用文学:非科幻的鉴赏、仿写、修改、比较支线,不强行附加科学解释。
  • 地表 · 快速概念成文:只给 50–100 字的模糊概念;自动匹配风格、氛围、视角与节奏;一次最多 1,500 字。
  • 平流层 · 快速详细成文:可加最多 2,000 字的提示句,指定氛围、心理、场景与光影;一次最多 10,000 字。
  • 深空 · 专业成文与审校:可加最多 20,000 字素材;支持“先审校 / 一次成文 / 逐章成文”三个阶段。审校阶段只出报告、问题表、修改策略和连续性账本模板;成文阶段按章推进,逐章可带上一章账本,一次成文仍保留 100,000 字总上限。逐章单章上限 20,000 字;审校不消耗冷却,成文提交后 2 小时内不能再次生成。深空还提供结构化连续性账本、读取最近回复 / 提取账本 / 检查字数,以及字数、账本完整性、章节连续性和简单物理/感官规则的启发式校验。
  • 氛围启导 / 灵感急救:当你不知道写什么、卡在情绪里,或不确定文本适合什么氛围时,专门诊断“绝望 / 悲伤 / 释然 / 孤独 / 敬畏 / 苦甜交加”的情绪机制;提供可展开的范例解剖(说明为什么有效、可迁移技巧、使用边界)、三种风格实验、两版对照例文,以及“5 个场景种子 + 3 个第一句 + 15 分钟练习”的急救包。
  • 开始创作 · 引导流程:把项目、概念、档位、任务书、写作、捕获、自动校验和下一章收束成五步流程;侧栏和首页都有入口。深空仍有冷却/确认检查,其他档位可以直接复用流程。
  • 学术空间 · 论文 / 研究报告:首页和检索页可直接进入独立学术工作区,支持论文/报告生成、论文总结、思维/论证分析、改进和纠错;生成提示词最多 300 字,普通目标字数 2 千–15 万字共 8 档,长文会提示预计用时与冷却;可粘贴最多 15 万字全文做审校/分析。改进和纠错也按目标字数计时;生成与修改使用独立冷却,互不影响。另有专业 25 万字模式:生成/修改各自独立冷却 5 小时,输入上限提高到 25 万字。捕获正文后自动生成学术思维导图和修改建议;用户同意后可带来源进入改进模式。学术检索优先 OpenAlex(DOI/引用/年份)并补充 PubMed、arXiv、CNKI 等门户,来源标注可信度;所有来源仍要求打开核验,禁止编造文献/DOI/数据。
  • 继续下一章:深空捕获正文后自动解析账本、生成编年史速览并跑校验;点“生成下一章任务书”会带上一章账本、章节号和审校报告,直接进入下一章任务书。
  • 编年史 / 时间线思维导图:粘贴正文后自动按时间词、转折词和长段落切分节点,标出事件、转折、因果连接和“事件 / 人物 / 设定 / 伏笔”分支,并给出时间标记不足、时间顺序可疑、转折缺少因果铺垫、事件粒度过粗等启发式提示;可导出 Markdown,也可把自动提取的时间轴交给 Agent 做更严格的逻辑校正和思维导图深化。
  • 作者思维坐标:首页提供 12 位科幻作者的“创作方法坐标”(克拉克的工程—敬畏、阿西莫夫的公理—推演、刘慈欣的极端—宏尺度、特德·姜的概念—经验、勒古恩的人类学—他者等),可展开看方法、风格、适用场景和边界;在氛围启导中可选择 1–2 位作为参照,任务书会要求先分析用户文本的思维倾向,再说明“为什么契合 / 哪部分不适用”,不贴“你是 XX 型”的人格标签。
  • 项目上下文:把作品名、一句话前提、主要人物、世界/技术设定、硬约束和风格目标保存一次;之后每份任务书都会自动附加这段长期上下文,减少重复解释。
  • 草稿箱:把当前任务书和表单状态保存到本机,可载入、删除、导出全部,也可导入之前导出的 JSON 草稿;长篇创作不必每次从头填。
  • 知识包:除了内置范例与风格卡,还可以注册自己的氛围范例和风格卡,立即进入“氛围启导”,并按本机持久化。检索页还会记住最近 8 次查询。
  • Host 检索 / 来源台账:检索页新增 Host 检索按钮,走 index.js 注册的 /lightmote/search 路由,由 Host 的 ctx.web 供应商返回来源;来源自动进入本机台账,并可带入检索任务书。供应商未配置或不可达时,返回明确标注的公共书目 API 回退或“仅检索入口”链接回退,不冒充已抓取内容。
  • 明确的确认入口:每个工作流都有蓝绿色的 确定 ▶ 按钮;页面右下角还固定保留一个同样的确认按钮,长表单滚动后也不会找不到。任务书预览里的复制/下载也改为带文字标签的按钮。
  • 扩展中心:能力包是数据,不是补丁。用户可粘贴 JSON 注册新工作流;未来 Client 插件可通过 lightmote 服务注册/注销能力。

Install and use

The technical package is @local/lightmote v1.1.0. Install the package directory with plugin_manager install_bundle. The bundle inserts one row (lightmote) and contributes two Client slots:

  • sidebar.panellist — the left-sidebar icon (id lightmote)
  • main — the page keyed lightmote

If the sidebar icon is not visible after installation, refresh the page so the Client module graph picks up the new bundle. Open the icon, choose a workflow, fill the fields, and press 确定 ▶. 在对话中开始 opens a new session with the brief as an unsent draft (whenDraftExists: 'append'); the plugin never sends automatically.

Architecture

  • client.js is a plain-JavaScript window.__ModuleLoader__ module. It has no build step and imports no Harness Client package.
  • Local engines: searchCatalog(), the point-algebra solver(), and the prompt builders.
  • The UI uses only --dsw-alias-* theme tokens and inline plugin-owned styles; it renders through slots rather than replacing the app root.
  • The Host half (index.js) registers the web routes GET /lightmote/health, POST /lightmote/search, POST /lightmote/academic/search, GET /lightmote/academic/status, POST /lightmote/academic/start, and POST /lightmote/academic/finish. It calls ctx.web.search with the profile's configured provider, normalizes sources, caches search results for five minutes, and falls back to public bibliographic APIs or link-only search entries when the primary provider is unavailable. The academic route additionally reads OpenAlex through ctx.web.fetch (with a direct fixed-endpoint fallback), filters trusted domains, and returns portal links when needed. Academic generation/modification cooldowns are stored host-side under DSH_PROFILE_DIR/lightmote-data (fallback ~/.dsh/lightmote-data), keyed by deepseekAccount.getDeviceIdentity() (user: / device: / local), signed with an HMAC secret stored beside the state; start/status/finish are serialized and write atomically. It deliberately exposes no generic URL fetcher.
  • ctx.provide('lightmote', service) exposes version, catalog, capabilities, search, solve, buildBrief, registerKnowledge, getKnowledge, and registry for future clients.

Extending

const service = ctx.get('lightmote')

const dispose = service.registerCapability({
  id: 'my-capability',
  title: '我的能力',
  description: '做什么,适合谁。',
  fields: [{ key: 'input', label: '输入', type: 'textarea', rows: 6, required: true }],
  template: '你是……\n\n【输入】\n{{input}}',
})

registerCapability validates the id, title, description, field keys, and template length; it returns a disposer. User packs registered from the UI are stored in localStorage under dsh.lightmote.userPacks.v1 (the one-time legacy key dsh.scifiStudio.userPacks.v1 is still read); plugin-registered packs live for the page lifetime.

service.registerKnowledge({ id, title, examples, styles }) adds mood examples and style cards. User knowledge packs are stored under dsh.lightmote.knowledge.v1; drafts under dsh.lightmote.drafts.v1; the long-term project under dsh.lightmote.project.v1; recent searches under dsh.lightmote.searchHistory.v1. All of these are browser-local: they do not sync across browsers, machines, or DSH profiles.

Automatic updates

The Host checks for a newer published bundle 15 seconds after startup and then every 6 hours. The default index is:

https://fancy-marshmallow-7c0ad3.netlify.app/index.json

Override it with LIGHTMOTE_UPDATE_INDEX. If the installed package is a normal published bundle (not @local/lightmote) and a newer version exists, the Host asks pluginManager to install and activate it. DSH may require a restart after the update.

Disable automatic installation with:

LIGHTMOTE_AUTO_UPDATE=0

The local development package only reports that a newer release exists; it never overwrites the working tree.

Limits

  • The local shelf is a curated set of 38 coordinates, not a claim to contain all science fiction. The Host search route depends on a configured ctx.web search provider; without one it returns bibliographic or link-only fallbacks that are explicitly labeled. The Agent brief remains the place for full open-web verification.
  • The local solver checks formal transitive relations only. It cannot decide whether a setting is physically credible or thematically successful; that is the semantic review's job.
  • The plugin cannot write or research by itself. It produces a rigorous, editable task brief and a set of local checks; the model does the generation.
  • “Read latest reply” is best-effort: launching a generation attempts to identify and track the newly opened Session, subscribes to its assistant messages, and caches the latest text; the button uses that cache first, then the most recent Session, then clipboard. It can still miss the intended reply in unusual navigation; paste manually in that case.
  • The post-generation checker is deliberately heuristic: it verifies actual length, missing ledger, chapter continuity gaps, lost condition/threads, and a few simple physics/sensory rules (vacuum sound, lightless color vision, human-speed movement). It is not proof of physical or psychological accuracy.
  • The academic space is an assistance surface, not a substitute for research ethics or peer review. It retrieves candidates from OpenAlex and configured web search, but source credibility must be checked by the user; generated citations, DOIs, data, and claims require verification. The progress bar is an estimate from length/time, not a real streaming meter. Host-side cooldown is account/device scoped and signed, so clearing browser storage or editing the JSON fails closed; however the state is still local to this Host, a user with filesystem access can replace both state and secret, a system clock change can still affect it, and multi-device syncing or a real quota requires a remote account service and model gateway.
  • The chronicle is also heuristic: sentence splitting, time-word detection, and turn detection are text-level cues. It can miss implicit time jumps, deliberate non-linear narration, and events without time words; the Agent brief is where deeper causal correction happens.
  • The author mind library is an editorial synthesis of transferable methods, not the authors’ own words, a biography, or a psychological diagnosis. It must not be used to label the user as a particular author’s “type”; the brief asks for fit, mismatch, and evidence.
  • Input caps and output caps for Surface / Stratosphere / Deep Space are enforced in the UI where possible and written into the brief as hard constraints; the model may still exceed a prompt cap, so the brief asks it to self-count. Deep Space's 2-hour cooldown is stored in the browser and starts when a prose brief (not an audit brief) is opened in a chat (conservative); copying the brief and generating elsewhere bypasses it. Deep Space keeps the 100,000-character total cap but can be run as an audit stage, a single batch with internal chapters, or chapter-by-chapter with a continuity ledger.
  • Drafts, project context, knowledge packs, and search history are browser-local. They do not sync between browsers or users; use the export button for a portable draft file.
  • Visual verification was limited to JavaScript syntax, manifest/resources, core logic tests, and live slot registration. A screenshot-level review of light/dark rendering was not available in this environment.