lightmote-sf
Verifiedlightmote-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 (idlightmote)main— the page keyedlightmote
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.jsis a plain-JavaScriptwindow.__ModuleLoader__module. It has no build step and imports no Harness Client package.- Local engines:
searchCatalog(), the point-algebrasolver(), 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 routesGET /lightmote/health,POST /lightmote/search,POST /lightmote/academic/search,GET /lightmote/academic/status,POST /lightmote/academic/start, andPOST /lightmote/academic/finish. It callsctx.web.searchwith 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 throughctx.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 underDSH_PROFILE_DIR/lightmote-data(fallback~/.dsh/lightmote-data), keyed bydeepseekAccount.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)exposesversion,catalog,capabilities,search,solve,buildBrief,registerKnowledge,getKnowledge, andregistryfor 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.websearch 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.