dsh-cc/dsh-cc--packages-bundle-cc-shell ↗★ 1
@dsh-cc/bundle-shell
CC shell host-plane infra: tools registry swap (deferred-name support) + settings migrations; the glue plugin code lives here but is mounted by the CC preset (packages/preset/cc) 面向 CC 预设的底层基础设施,普通用户通常无需单独安装。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:dsh-cc/dsh-cc#d8e9320888ec661348af2de5b209464726472aeb&path:packages/bundle/cc-shelldsh-cc-bundle-shell
English | 中文
The CC shell host-plane infra bundle. This package carries the pieces that are genuinely host-level — the tools-registry swap with deferred-name support, and the settings-migrations mechanism — plus the cc-shell-glue plugin code (the glue code still lives here, but its mount action is performed by the CC preset, not this bundle's patch). All agent-facing composition — tool-search, skill loader, memory, coordinator, worktree/sleep/notebook/structured-output tools, the 19 slash commands, the hook bridge, output-style rendering — moved to the @dsh-cc/preset-cc composition package, so it can be isolated per preset instead of leaking into every mode.
What it does
- Tools registry swap. Disables the in-box
toolsrow and remounts@dsh-cc/tools.reserve()/isAdmitted()join the restrictable-name universe, so permission gates can name deferred tools before they load; the shipped behavior otherwise matches upstream. The base row'sDSH_TOOLS_MODEtoggle is carried forward ($DSH_HOME / process.cwd() semantics unchanged). - Settings migrations. Mounts
@dsh-cc/settings-migrationsto apply version-gatedsettings.jsonmigrations at startup (equivalent to CC'srunMigrations). Empty registry — mechanism only — for now. - Glue plugin code (mounted by the CC preset).
cc-shell-gluemounts what a cordis patch row cannot express statically: on-disk Claude Code plugins,.mcp.jsonserver wiring, and a built-in pluginmcpseam (cc-mcp-seam, so pluginmcpServersmount via mcp-client). Default plugin discovery is the dual-home merged view:enabledPlugins(claude-user → dsh-user → project → local cascade) ∩ the mergedinstalled_plugins.jsonof both homes (exactname@marketplacekeys,installPathas the plugin root). The write root is the dsh home ($DSH_HOME/~/.dsh); the Claude home ($CLAUDE_CONFIG_DIR/~/.claude) stays read-visible for compatibility, with dsh entries winning per key. ExplicitpluginDirsstill flattens those dirs;[]/nulldisables. Discovery is best-effort — missing paths and unreadable JSON mount nothing. It also exposes theccPluginsservice for live enumeration/rescan of mounted plugins (/reload-pluginsre-reads the cascade) and theccPluginManagerservice bound to both homes (so/pluginmutations land in~/.dsh). The glue threads the spawn-timeresolveModelintoAgentProvideras a lazy trampoline over theccModelRoutesservice:(model) => ctx.get('ccModelRoutes')?.resolve(model)— queried on every spawn, degrading to inherit the parent route when the service is unmounted.
What moved out of the glue
Two pieces that used to live in cc-shell-glue moved to their owning packages:
model-aliasessettings-namespace registration → the@dsh-cc/model-aliasesccModelRoutesservice (packages/compat/cc-model-aliases). The glue no longer registers the namespace (a duplicate registration would throw); it only consumes the service lazily.Config.modelAliaseswas removed from the glue config.- Base CC-agent discovery (
~/.claude/agents+/.claude/agents→ subagent providers) → the@dsh-cc/subagent-taskTask tool, which discovers per the session cwd (not the host process cwd).Config.registerBaseAgentswas removed.
Known limits / notes
- This bundle no longer globally mounts any agent-facing surface. Only the host-plane infra rows (tools registry swap + settings-migrations) are mounted by this bundle's
cordis.patch.yml; the glue plugin and all agent surfaces are mounted by@dsh-cc/preset-ccso they stay scoped to that preset. - Because the tool-web executor row is unshipped by the CLI dependency tree through rc.6, fetch-based web tooling is mounted by the preset, not here; see the preset's "Known limits" for the current fetch status.
- Project/local
enabledPluginsare boot-cwd-biased (the glue is a host-plane singleton, same as.mcp.json)./reload-pluginsis the live escape hatch. Plugin state is dual-home:$CLAUDE_CONFIG_DIRstays read-visible for discovery, while plugin-management writes go to$DSH_HOME(~/.dsh) — settingCLAUDE_CONFIG_DIRno longer relocates plugin writes;.mcp.jsonstill hardcodes~/.claude.