Skip to content

Releases: SiriusWJ/dsh-rp-tools

v1.15.3:放行名单按插件分类到底,去掉「其它」;保存入口收成一个

Choose a tag to compare

@SiriusWJ SiriusWJ released this 17 Sep 11:55

v1.15.3

设置页「第三方工具管理」这张表按来源插件分类到底,去掉「其它」,并把整页的保存入口收成一个。

1. 放行名单按插件一行一行分(用户:「其它」里面的内容我看是很多插件的,把其它去掉,按插件分类)

本机这张表现在是:

行 工具
dsh-image-gen(生图 / 画布)🖼 generate_image edit_image canvas_state view_canvas
dsh-genui(界面卡片) render_ui validate_dsh_ui
宿主内置 · 联网搜索 web_search web_fetch
dsh-mcp(MCP 工具热注入) mcp_tool_search mcp_servers
dsh-lite-memory(记忆 / 日历 / 定时) 13 个工具合成一行(本来就是同一个插件)
dsh-updater-npm(官方文档索引) dsh_docs_read dsh_docs_search
dsh-find-plugin(插件市场检索) find_dsh_plugin
其它 / 兜底组「宿主内置 · 其它」 空

映射表(lib/global-tools-defaults.js 的 GLOBAL_TOOL_SOURCES)按插件一条一条登记,3 条 → 7 条。
映射表没覆盖到的才会落到兜底组,组名是「宿主内置 · 其它」(不是中性的「其它」,也不是给维护者
看的「未登记归属(映射表缺条目)」),并在行上列出具体工具名 —— 故意不静默隐藏。它真漏了的话,
smoke-dm 里那道「本机全部实际工具都有归属」的闸门会红。

2. 内置工具不再被误标成「未注册」(用户:web_search 是内置的,应该有这个工具)

根因:tools.schemas() 不带 scope 只给全局层,而 web_search / web_fetch 是宿主注册在
会话作用域的 —— 设置页只读全局层,于是把一直在用的内置工具标成「未注册」。

现在清单 = 全局层 ∪ 会话作用域里已点过名的:

  • 样本 agent 来自 agent/created 与每轮 system-prompt/assemble 的 context.agent
    (插件是运行中重新装载的,已经在跑的会话不会再发 agent/created,只靠前者样本永远为空);
  • session/disposed 时放掉样本(比 id 前先 normalizeSessionId:agent.id 是 session-<uuid>、
    disposed 给的是裸 uuid);
  • ⚠️ 会话作用域那一份必须按放行名单过滤:样本就是用户当前那个对话的 agent,它的作用域里有
    read / write / glob / pwsh 等 26 个自己的工具,照单全收会让设置页凭空多出 26 行
    (这条是在真机接口上抓到的,available 从 23 涨到 51);
  • 「本机没注册」不再自成一组(__missing__ 键消失):混进它该在的那组,并在组上点名
    未注册 xxx —— 同一个插件的工具不再被劈成两处。

3. 保存入口收成一个(用户:去掉截图里的面板,rp 工具统一用最上面的保存)

第三方工具管理那一节不再有自己的按钮:「手填工具名」输入框与「保存 / 全部放行 / 全部取消 /
恢复默认」整排删掉(连带 addGlobalTool / saveGlobalTools / .gtdraft / .gtAct)。
顶上那颗「保存」现在两次串行请求(/rp-tools/config + /rp-tools/global-tools),
「恢复默认」同样两件事一起做(配置 reset + 名单写回宿主给的 gt.defaults)。

测试

smoke-dm 1079 / smoke-client 480 / smoke-card 256 / verify-roundtrip 10 /
check-no-machine-paths 通过,全 0 失败。

顺手修掉两处桩没铺路:桩里既没有 /rp-tools/config 也没有 /rp-tools/reset 分支,两者都落到
末尾的 { ok:false } —— 于是「保存 / 恢复默认」在第一发就抛错、第二发永远发不出去,多请求的断言
只看到 undefined(查了半天才意识到不是实现错)。

升级后

宿主半侧要重启 dsh web 才装载(lib/ 启动时装载,client/ 刷新页面即可)。

v1.14.3

Choose a tag to compare

@SiriusWJ SiriusWJ released this 14 Sep 03:14

依赖(重要)

卡片渲染依赖 @changfenhuang/dsh-genui:
render_ui / validate_dsh_ui 两个全局工具、genui:fence 提示词章节、浏览器端的 dsh-ui 围栏渲染器
都由它提供,dm 预设的过滤器专门保留它们。
没装它:rp_* 工具仍能调用,但 DM 画不出任何卡片 / 地图 / 状态面板。

dsh plugin --profile web add @changfenhuang/dsh-genui
dsh plugin --profile web add github:SiriusWJ/dsh-rp-tools

装完必须重启 dsh web(宿主代码与客户端 bundle 只在启动时装载)。

安装前提

本机 ComfyUI(Desktop 版亦可)+ 生图模型。三个内置风格各需一套模型,装其中一套即可:

风格 模型
二次元(默认) checkpoints/NetaYumev35_pretrained_all_in_one.safetensors + loras/tone001_manga.safetensors
写实 diffusion_models/flux1-krea-dev_fp8_scaled.safetensors + text_encoders/clip_l.safetensors + text_encoders/t5xxl_fp16.safetensors + vae/ae.safetensors
黑白漫画 diffusion_models/krea2_turbo_fp8_scaled.safetensors + text_encoders/qwen3vl_4b_fp8_scaled.safetensors + vae/qwen_image_vae.safetensors

ComfyUI 地址默认 http://127.0.0.1:8188,可在设置页改。

修复 · 导入界面卡库变更后的死路径

  • 目录扫描缓存现在记录所扫描目录的 mtime/ctime,PNG 被重命名、移动或删除后自动重扫。
  • 「刷新」按钮显式发送 refresh=1,强制绕过缓存。
  • 预览或导入撞到刚失效的路径时返回 CARD_LIBRARY_CHANGED,客户端清掉旧选择并自动刷新列表,不再暴露磁盘 ENOENT。

文档

  • README 对照 lib/、client/、preset/ 逐条校正:风格库(3 个内置风格、默认 uncensored_anime)、
    模型前提、11 个工具的真实参数、HTTP 路由(26 → 29 条)、导入入口可见性、DM 预设接线与环境变量,
    并补上上面的 dsh-genui 依赖说明。

说明

本插件给 DeepSeek Harness 提供跑团 / DM 能力:
中立随机裁决(rp_random)、本地 ComfyUI 配图、按会话隔离的战役配置、世界书与状态追踪、
PNG 故事书(SillyTavern 角色卡)导入。全部 rp_* 工具只在 dm 预设作用域注册。

功能全貌、工具与参数清单、数据目录结构见 README;
开发状态与验证记录见 docs/STATUS.md。