目录:ACP 协议API 网关与控制器附件启动与插件管理客户端运行时客户端 UI 包上下文压缩上下文注入核心运行时凭据与授权交付物文档处理实验特性宿主扩展反馈通道文件系统目标与计划工具守卫Hooks 扩展宿主服务交互命令作业调度LLM 适配LSP 集成MCP 协议规划模式Agent 预设代码执行运行时运行时诊断沙箱定时调度SDK 与协议会话核心会话检索设置Shell 执行技能溢出存储SSH 远程执行存储子代理子进程终端待办类型契约框架 vendorWeb 访问Webhook工作流工作区
依赖链 · 上游(该插件依赖的前驱):
依赖链 · 下游(依赖该插件的节点):
dsh-api-remotesdsh-api-session-controllerdsh-client-file-uploaddsh-client-ui-chatdsh-client-ui-commandsdsh-client-ui-conversationdsh-client-ui-goaldsh-command-compactdsh-command-feedbackdsh-command-goaldsh-compaction-basicdsh-permission-presetsdsh-plan-modedsh-session-log-export
同一拓扑层(Layer 3,层次遍历层序):
dsh-api-gatewaydsh-commandsdsh-config-editordsh-deepseek-account-platformdsh-experimental-webworker-runtimedsh-hook-protocoldsh-host-frontend-staticdsh-host-open-in-appdsh-llm-pi-aidsh-personadsh-session-log-deepseekdsh-session-persistence-jsonldsh-session-projectiondsh-session-query-sqlitedsh-session-telemetry-oteldsh-skill-badgedsh-skill-filesystemdsh-skill-officedsh-user-approvaldsh-web-fetch-httpdsh-web-search-exadsh-web-search-perplexitydsh-webhook-githubdsh-workspace
插件信息
| 包名 | @deepseek-ai/dsh-commands |
|---|---|
| 分组 | G21 · 交互命令 |
| 拓扑层 | Layer 3(层次遍历:被依赖方先于依赖方) |
| 源码路径 | packages/interaction/commands |
① 实现逻辑
实现 ctx.commands 人类命令注册表:全局与 agent 作用域分层(NamedEntries/ScopedLayers),register() 校验并冻结定义(src/index.ts:94-111、179-292)。execute() 解析斜杠命令行,先写 command/run 再执行处理函数并写 command/done,附件准入与取消也在此强制(src/index.ts:360-431)。list/execute 以 TypertRemote 暴露给 UI(src/index.ts:314、360),invariant.ts 校验生命周期事件按 commandId 成对(src/invariant.ts:20-67)。
内部结构动态 DAG(深色主题:橙色=上游依赖 · 绿色=下游依赖 · 棕色=外部seam · 蓝=本插件)
本插件
上游依赖
下游依赖
外部 seam
② 注册/提供(provides)
- ctx.commands (命令注册与执行服务 + Remote list/execute;命令生命周期事件配对不变量,src/index.ts:263-490)
③ 依赖(depends_on · 上游前驱)
dsh-invariantsE1+E2
注册命令生命周期配对不变量
package.json:59 peerDep + src/invariant.ts:9 import; src/invariant.ts:67 ctx.invariants.register
dsh-scopeE1+E2
全局与 agent 作用域的命令分层
package.json:61 peerDep + src/index.ts:12-13 import NamedEntries/ScopedLayers; src/index.ts:264 ScopedLayers
dsh-sessionE1+E2
把命令运行生命周期写入会话日志
package.json:62 peerDep + src/index.ts:14-15、src/invariant.ts:8 import; src/index.ts:373 session.append
④ 被依赖(dependents · 下游消费者)
dsh-api-remotes
装配 commands 命名空间与事件签名
src/client/index.ts:5 import remote + src/client/index.ts:71 import types
dsh-client-file-upload
让命令 prompt 能解析上传 receipt 为文件引用
src/index.ts:8 + src/index.ts:58 inject 'commands' + src/index.ts:69 ctx.commands.registerFileReceiptResolver
dsh-client-ui-chat
命令节点数据
src/client/conversation-nodes/command.ts:7 import @deepseek-ai/dsh-commands/types
dsh-client-ui-commands
命令目录与结果类型
src/client/directory.ts:8-12 + src/client/service.ts:20 CommandResult
dsh-client-ui-goal
goal 命令输入节点类型
src/client/goal-command-input.ts:2-3 import @deepseek-ai/dsh-commands
dsh-command-compact
承载 `/compact` 命令的注册面与命令调用/结果类型,命令必须注册进 commands 注册表才能被人类命令适配器看见
src/index.ts:7 import CommandDefinitionId + src/index.ts:9 import type CommandInvocation/CommandResult + src/index.ts:12 inject 'commands' + src/index.ts:101 ctx.commands.register
dsh-command-feedback
注册 /feedback 命令定义并与命令适配器对接
src/index.ts:41 inject ['commands'] + src/index.ts:12 import
dsh-command-goal
把 /goal 命令注册进命令注册表并复用其调用/结果类型
src/index.ts:7-8 import (CommandDefinitionId, CommandInvocation) + src/index.ts:14 inject ['commands','goals'] + src/index.ts:191 ctx.commands.register
dsh-compaction-basic
手动命令发起的压缩需把发起命令身份写进压缩生命周期事件用于呈现关联
src/index.ts:16 import type CommandId + src/region.ts:18 import type CommandId + src/region.ts:392 sourceCommandId
dsh-permission-presets
以 /permission 命令暴露唯一写路径
package.json:57 peerDep + src/index.ts:19、:33 import; src/index.ts:255 ctx.inject(['commands'])、:256 commands.register
dsh-plan-mode
注册 /plan 命令并关联命令生命周期事件
src/index.ts:35 type import CommandDefinitionId + src/types.ts:11 CommandId + src/index.ts:230 ctx.inject(['commands'])
dsh-session-log-export
注册 Web /export 命令作为导出入口
src/index.ts:4,8 import; src/index.ts:41 inject ['commands']; src/index.ts:79 ctx.commands.register