Live plugin Config inspection replaces the Host Builtin provider
运行中插件 Config 检查取代 Host Builtin provider
Creator mode agents write `config:` rows for installed plugins without any runtime source of Config schemas. The CLI `--dump-config-schema` reference is not reachable from the running session, and the `Builtin` Host inspect provider advertised sandbox symbols for a dynamic Host half the model can no longer define.
English
Problem
Creator mode agents write config: rows for installed plugins without any runtime source of Config schemas. The CLI --dump-config-schema reference is not reachable from the running session, and the Builtin Host inspect provider advertised sandbox symbols for a dynamic Host half the model can no longer define.
Decision
@deepseek-ai/dsh-tool-cordis/host registers a Config inspect provider and no Builtin provider. Config.listConfigs reads the live Loader tree: without input it returns every entry id, plugin name, and Config status; with an entry id it projects that entry's native Schemastery Config through the app-boot projector into one self-contained JSON Schema document. Inactive entries report inactive without a schema.
The provider walks ctx.loader.entries() and each fiber's runtime Config instead of running the boot-free collector, because a running profile already holds the module-resolution interception that the collector installs and forbids overlapping. App-boot exports the projector, the native-schema check, and the shared loaderExpression definition for this use; the CLI dump keeps its profile-composition semantics.
Alternatives considered
Re-run generateConfigSchema inside the Host. It would re-import every plugin module under a second interception, which the collector forbids while one is installed, and it describes the profile files rather than the mounted tree.
Teach the shipped skill to run the CLI dump. It requires the profile name in the agent's shell and a dsh executable on its PATH, neither of which the session guarantees, and its output is unbounded.
Consequences
Agents can read a mounted plugin's Config schema before authoring a patch. Runtime-created Agent preset trees stay outside the Loader and are not listed. The Client Builtin provider is unchanged: Client plugin code still runs in the browser module loader it describes.
中文
Problem
创造模式的 agent 为已安装插件编写 config: 行时,没有任何运行时的 Config schema 来源。CLI 的 --dump-config-schema 参考在运行中的会话里不可达,而 Builtin Host 检查 provider 宣告的是模型已无法定义的动态 Host half 的沙箱符号。
Decision
@deepseek-ai/dsh-tool-cordis/host 注册 Config 检查 provider,不再注册 Builtin provider。Config.listConfigs 读取运行中的 Loader 树:无输入时返回每个 entry 的 id、插件名和 Config 状态;给定 entry id 时,通过 app-boot 的投影器把该 entry 的原生 Schemastery Config 投影为一份自包含的 JSON Schema 文档。未激活的 entry 报告 inactive 且不带 schema。
provider 遍历 ctx.loader.entries() 和每个 fiber 的运行时 Config,而不是运行免启动的收集器,因为运行中的 profile 已持有收集器要安装且禁止重叠的模块解析拦截。app-boot 为此导出投影器、原生 schema 判定和共享的 loaderExpression 定义;CLI dump 保留其 profile 组合语义。
Alternatives considered
在 Host 内重跑 generateConfigSchema。 它会在第二层拦截下重新导入每个插件模块,而收集器禁止在已安装拦截时重叠,并且它描述的是 profile 文件而非已挂载的树。
让出货的 skill 去运行 CLI dump。 它需要 agent 的 shell 里有 profile 名和 PATH 上的 dsh 可执行文件,会话都不保证,而且输出无界。
Consequences
agent 可以在编写 patch 前读取已挂载插件的 Config schema。运行时生成的 Agent preset 树仍在 Loader 之外,不会被列出。Client 的 Builtin provider 不变:Client 插件代码仍运行在它所描述的浏览器模块加载器中。