dsh-loopx-plugin
loopx-project/loopxLoopX——面向长周期 Agent 的提供商中立、本地优先状态内核与控制平面:在 DeepSeek Harness 执行层之上持久化 Goal、Todo、门禁、证据、配额、恢复与交接状态;插件负责引导安装 CLI 与技能、准入有界的同会话续跑,并为精确绑定的工作循环提供本地 GoalBar。
DSH 侧边栏的小说创作面板:绑定本地书稿目录,把导入的 Agent 技能当作分析视角,并扫描平台榜单归纳故事架构。
DeepSeek Harness 的侧边栏小说创作面板,三个页签:
sidebar.panellist,order 35)→ main 同名面板。uiWorkspace.pickDirectory())或手输路径;限深扫描并显示子文件夹 / 文件 / 疑似章节 / 正文字数。%DSH_HOME%\novel-assist\state.json。%DSH_HOME%\skills,展示名称、描述、文件数、更新时间和来源。SKILL.md 的文件夹(多技能会列出子技能)、本地 SKILL.md / .zip 路径、GitHub 仓库 / tree / blob / raw 链接。description、修正非 kebab-case 的 name、重名落盘为 <name>-2 并同步改写 frontmatter。SKILL.md 的目录。/rank/1_2_258)或数字 ID,保存到 state.json,可删除。{genre} / {genreLabel} 占位。.txt / .md 或文件夹(自动分章、取前 10 章标题),右上角勾选已导入技能,一键用所选技能分析本地小说的开篇架构;技能只作分析视角,不执行代码。page-abstract-content、chapter-item-title、meta keywords),不再使用字体混淆后的状态数据,因此不会出现 □□□;书页解析失败时才回退。%DSH_HOME%\novel-assist\rank-last.json;切换页签、关闭面板、刷新页面后自动恢复,不重复调用模型、不重复消耗 Token。deepseek-account/deepseek-flash)输出结构化架构分析;正文本身不在界面展示,只给出可跳转的来源链接。| 位置 | 说明 |
|---|---|
%DSH_HOME%\novel-assist\state.json | 作品参数、绑定文件夹、自定义平台、自定义分区 |
%DSH_HOME%\novel-assist\rank-last.json | 最近一次扫榜结果缓存 |
%DSH_HOME%\skills\<name>\ | 导入的技能 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /novel-assist/api/state | 读取状态 |
| POST | /novel-assist/api/state | 保存 { state } |
| POST | /novel-assist/api/scan | 扫描作品文件夹 { path } |
| GET | /novel-assist/api/skills | 本地技能库 |
| POST | /novel-assist/api/skills/import | 导入技能 { kind, path? , url? } |
| POST | /novel-assist/api/skills/repo | 从仓库安装 { repo, path?, branch? } |
| POST | /novel-assist/api/skills/remove | 移除 { dir } |
| GET | /novel-assist/api/skills/market?q= | 精选 + GitHub 搜索 |
| GET | /novel-assist/api/rank/platforms | 平台与 38 个分区目录 |
| GET | /novel-assist/api/rank/last | 最近一次扫榜缓存 |
| POST | /novel-assist/api/rank/scan | 扫榜 { platforms, genres, topN, chapters, mirror, skills } |
| POST | /novel-assist/api/rank/local | 导入本地小说 { path } |
| POST | /novel-assist/api/rank/local/analyze | 分析本地小说 { path, skills } |
| GET | /novel-assist/api/rank/mirror?title=&author= | 镜像检索诊断 |
genres 既接受分区 id 字符串,也接受 { id, label, keywords, maps } 对象(自定义分区用对象)。
| 文件 | 作用 |
|---|---|
package.json | bundle 清单:dsh.bundle.patch + dsh.client |
cordis.patch.yml | 插入 novel-assist Host 行 |
index.js | Host 半:状态、作品目录扫描、技能导入/移除、GitHub 搜索与下载 |
rank.js | Host 半:平台/分区目录、榜单抓取、镜像正文、架构分析(LLM) |
client.js | Client 半:侧边栏图标、三页签面板、仿宋结果区、本地化、样式 |
locale/zh.json、locale/en.json | 插件管理里的名称与说明 |
client.js 由 src/build-client.mjs 拼接生成,改代码请改 src/client/:
| 文件 | 板块 | 内容 |
|---|---|---|
src/client/00-boot.js | 公共层 | 加载器外壳、zh/en 文案、状态合并、请求、格式化、图标、基础控件 |
src/client/10-skills.js | 技能兼容 | SkillsStudio |
src/client/20-rank.js | 平台扫榜 | RankTab |
src/client/30-work.js | 自己作品 | NovelPanel、全局样式、apply 注册 |
src/build-client.mjs | 构建 | 按顺序拼接 → client.js |
详细代码地图见:
构建:
$node = 'C:\Users\lx\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\node\bin\node.exe'
& $node 'D:\WenJian\GZQ\novel-assist\src\build-client.mjs'
源码目录 D:\WenJian\GZQ\novel-assist,以 link: 方式装进 desktop profile。
index.js / rank.js):在插件管理里关开一次插件让它重新挂载。client.js):刷新 Web 界面后生效(客户端模块不做热更新)。$env:ELECTRON_RUN_AS_NODE=1
& 'D:\WenJian\DeepSeek\DeepSeek Harness.exe' --check 'D:\WenJian\GZQ\novel-assist\rank.js'