DAG总览 / 组目录 / G09 核心运行时

dsh-agent · @deepseek-ai/dsh-agent

Layer 4G09
目录:ACP 协议API 网关与控制器附件启动与插件管理客户端运行时客户端 UI 包上下文压缩上下文注入核心运行时凭据与授权交付物文档处理实验特性宿主扩展反馈通道文件系统目标与计划工具守卫Hooks 扩展宿主服务交互命令作业调度LLM 适配LSP 集成MCP 协议规划模式Agent 预设代码执行运行时运行时诊断沙箱定时调度SDK 与协议会话核心会话检索设置Shell 执行技能溢出存储SSH 远程执行存储子代理子进程终端待办类型契约框架 vendorWeb 访问Webhook工作流工作区
依赖链 · 上游(该插件依赖的前驱):
依赖链 · 下游(依赖该插件的节点):
同一拓扑层(Layer 4,层次遍历层序):
↑ Layer 3(24 插件)Layer 4↓ Layer 5(55 插件)

插件信息

包名@deepseek-ai/dsh-agent
分组G09 · 核心运行时
拓扑层Layer 4(层次遍历:被依赖方先于依赖方)
源码路径packages/core/agent

① 实现逻辑

Agent 接口与注册表实现:`AgentRegistry`(服务名 `agents`)用 `Map<SessionId, AgentEntry>` 维护存活 agent,并以 `AsyncLocalStorage` 承载进程内 initiator scope,提供 `create/resume`(委派给已注册的 `AgentFactory`)、`register/enter/announce/get/list/roots` 等生命周期方法 (src/index.ts:245-283,391-416,437-559)。构造时经 `ctx.inject(['typert'])` 注册 agent 的 typert lookup/host context,并安装 workspace 归档准入监听 (src/index.ts:257-270,282)。dispatch.ts 提供 `agentCarrier/agentEvents/emitAgentEvent/assembleContextFor`,把 agent 主体与其 scope carrier 融合,保证派发作用域键与 payload.agent 不漂移 (src/dispatch.ts:94-176)。model-selection.ts 把可变模型选择耦合到 `system-prompt/assemble` 与 `agent/request` 瀑布并在路由变化时追加持久化通知 (src/model-selection.ts:81-131);consumed-work.ts 单遍折叠会话日志判定已消费工作 (src/consumed-work.ts:69-108);invariant.ts 校验 `agent/status` 无空转 (src/invariant.ts:15-24)。

内部结构动态 DAG(深色主题:橙色=上游依赖 · 绿色=下游依赖 · 棕色=外部seam · 蓝=本插件)
本插件 上游依赖 下游依赖 外部 seam

② 注册/提供(provides)

③ 依赖(depends_on · 上游前驱)

dsh-invariantsE1+E2
作为 invariant companion 注册 agent 生命周期不变量
src/invariant.ts:4 import + src/invariant.ts:12 inject(['invariants']) + src/invariant.ts:32 register
dsh-llmE1
复用 LlmCallConfig/ReasoningEffortId 及 createUserMessage/boundContextSummary 生成模型切换通知
src/model-selection.ts:14 import + package.json:42 peerDep
dsh-scopeE1+E2
用 scopeTarget/Scoped 构建 agent 作用域载体
src/index.ts:12 import scopeTarget + src/dispatch.ts:10
dsh-sessionE1
复用 SessionId/SessionEvent/SessionLogOffset 会话身份与日志词汇,并依赖 agent.session 语义
src/index.ts:14 import type + src/types.ts:10
dsh-session-projectionE1
向会话投影表声明 turnBoundary/inbox 投影条目
src/projection.ts:2 + src/types.ts:58 声明合并
dsh-system-promptE1
assembleContextFor 返回 AssembleContext,并向该类型声明合并 agent 字段
src/dispatch.ts:12 import type AssembleContext + src/runtime-types.ts:17
dsh-workspaceE1+E2
回答 workspace/session-activity 的 turn 家族,并在 workspace/session-stop 时取消运行中的 agent
src/archive-admission.ts:12 import type + src/archive-admission.ts:27,34 事件订阅

④ 被依赖(dependents · 下游消费者)

dsh-acp
组合并驱动被代理 Agent,安装模型选择引用
src/session.ts:13 import + src/session.ts:128 ctx.agents.create
dsh-agent-default-model
复用 Agent 侧的 ModelSelection 选择类型
package.json:34 peerDep + src/index.ts:12 import type ModelSelection
dsh-agent-instructions
在 agent 步前把工作区指令上下文拼入请求消息序列,并读取 agent.session 的可见表面状态
src/index.ts:14 import type Agent/PreStepDecision + src/index.ts:315 ctx.on('agent/pre-step') + src/state.ts:7 import type Agent
dsh-agent-loop
实现 AgentFactory 并经 ctx.agents 工厂/注册表发布与登记 agent
src/agent.ts:18 import + src/index.ts:24 + src/index.ts:331 inject(['agents'])
dsh-agent-preset-registry
绑定并读取活动 Agent 的预设版次
src/index.ts:8 type import Agent + src/index.ts:325 agent.ctx、src/index.ts:326 agent.session
dsh-api-account-controller
枚举运行中的 Agent 以判断账号任务
src/index.ts:5 import type {} + src/index.ts:82 ctx.agents.list()
dsh-api-remotes
waterfall 请求携带的 Agent 类型
src/index.ts:5 import type Agent
dsh-api-session-controller
Agent 创建/续跑与模型选择安装
src/agent.ts:5 import + src/agent.ts:437 ctx.agents.resume
dsh-api-terminal-controller
Remote 方法以 Agent 作为 Session 所有者参数
src/index.ts:4 import type Agent
dsh-client-file-upload
以接收 Agent 及其 session 作为上传暂存的作用域与生命周期主体
src/index.ts:5 + src/index.ts:58 static inject 'agents' + src/index.ts:199 ctx.agents.get
dsh-client-ui-chat
agent 相关类型
src/client/chat/ChatView.tsx:8 import @deepseek-ai/dsh-agent/types
dsh-client-ui-conversation
agent/initiator 类型
src/client/contract/input.ts:10 + src/client/input/hub.ts:16
dsh-client-ui-trajectory
引入 agent 类型用于消息定义
src/client/trajectory-message-definitions.ts:6 import type
dsh-client-ui-workspace
引入 agent 活动类型用于归档确认
src/client/session-actions/ArchiveSession.tsx:12 import type
dsh-commands
命令以 agent 及其 session 为作用域与日志目标
package.json:56 peerDep + src/index.ts:8 type import Agent
dsh-compaction-basic
在 agent 的步边界与请求错误扩展点上挂自动压缩与溢出恢复,并借 agent.runMaintenance 预约空闲会话的手动压缩
src/index.ts:15 import type Agent/PreStepDecision + src/index.ts:158 ctx.on('agent/pre-step') + src/index.ts:178 ctx.on('agent/status') + src/index.ts:190 ctx.on('agent/request-error') + src/index.ts:390 agent.runMaintenance
dsh-compaction-image-offload
在 agent 请求错误扩展点上拦截图像卸载失败并返回 retry 动作,发起一次表面修复后的重试
src/index.ts:13 import type RequestErrorAction + src/index.ts:19 inject 'agents' + src/index.ts:27 ctx.on('agent/request-error')
dsh-cordis-host-runner
Inspect 查询与运行请求以 Agent 为其作用域主体
src/index.ts:10 import + src/inspect-registry.ts:5 import
dsh-experimental-auto-review
读取会话 surface、header 与 cwd 构造审查快照
src/index.ts:12 import type { Agent } + src/index.ts:361 agent
dsh-experimental-browser-use-chrome-devtools-mcp
按 live Agent 建立 Session 作用域
src/index.ts:11 inject ['browserUse','agents','tools','systemPrompt']
dsh-experimental-browser-use-playwright-mcp
按 live Agent 建立 Session 作用域
src/index.ts:12 inject ['browserUse','agents','tools','systemPrompt']
dsh-experimental-browser-use-stagehand-native
按 owner Agent 隔离浏览器运行时并注入 initiator
src/index.ts:16 import type {} from '@deepseek-ai/dsh-agent' + src/index.ts:25 inject + src/index.ts:185 requireInitiator
dsh-experimental-tool-agent-team
枚举/跟踪 Agent 并在其 scope 内注册工具
src/index.ts:5 import type { Agent } + src/index.ts:14 inject 'agents' + src/index.ts:412 ctx.agents.list
dsh-file-reference-local
按 agent 维护搜索索引与提示词 fiber 生命周期,并用 agent 的会话 cwd 作为搜索根
src/index.ts:9 import type Agent + src/index.ts:45 static inject ['agents'] + src/index.ts:91 ctx.agents.list + src/index.ts:92-93 ctx.on('agent/created'/'agent/disposed')
dsh-goal
以 agent 为键持有运行时激活状态、校验 live 身份并订阅 agent/created
src/index.ts:12-13 import (agentEvents, Agent) + src/index.ts:241 inject ['agents','sessionProjections'] + src/index.ts:470 ctx.agents.get
dsh-goal-round-driver
经 agent 生命周期/收件箱投递续轮消息并参与 pre-step 决策
src/index.ts:9 import (Agent, PreStepDecision) + src/index.ts:98 ctx.agents.get + src/index.ts:192 agent.followup
dsh-hooks-claude-code
在 agent 生命周期与步进点注入上下文并映射 hook 决策
src/index.ts:14 import (Agent, PreStepDecision, TurnBoundaryProjection) + src/index.ts:209 ctx.on('agent/created') + src/index.ts:214 agent.inject
dsh-hooks-codex
在 agent 生命周期与步进点注入上下文并映射 hook 决策
src/index.ts:17 import (Agent, PreStepDecision) + src/index.ts:191 ctx.on('agent/created') + src/index.ts:205 ctx.on('agent/pre-step')
dsh-jobs-local
把作业 owner 会话解析为活 Agent 实例并挂接其 scope 清理,实现按 owner 归属与生命周期取消
src/index.ts:15 import type Agent + src/index.ts:359 ctx.get('agents')
dsh-llm-retry
在 agent 请求错误恢复点上裁决是否重试,并把重试写入 agent.session
src/index.ts:12 import type Agent/RequestErrorAction + src/index.ts:22 inject agents
dsh-plan-mode
阅读并驱动 Agent 的会话与预备步决策
src/index.ts:29 type import Agent/PreStepDecision + src/index.ts:202 agent.session
dsh-plugin-package-inventory-deepseek
按请求会话定位 agent,以追加其 standing preset 的活跃条目
src/index.ts:16 import type {} + src/index.ts:29 inject agents + src/index.ts:165 ctx.agents.get
dsh-repeat-tool-reminder
以 agent 为键维护重复链并在用户插话时重置
src/index.ts:11 import (Agent, PreStepDecision) + src/index.ts:236-237 ctx.on('agent/pre-step') + chains.delete(agent)
dsh-sandbox-policy
合并 agent 请求上下文事件类型以取到会话
src/index.ts:27 type import
dsh-schedule
把工具注册绑定到根 agent 的作用域与会话
src/tools.ts:7 import + src/index.ts:170 ctx.agents.roots
dsh-sdk-jsonrpc-server
经 agent 工厂创建/管理 SDK 会话 agent
src/server.ts:11 import + src/index.ts:22 static inject (agents)
dsh-session-checkpoint-policy
在每步请求前持久化前一步结果
src/index.ts:11 import + src/index.ts:79 agent/pre-step
dsh-session-reference
在 agent 步前把会话引用上下文拼入直接用户消息之后
src/index.ts:10 import type Agent/PreStepDecision + src/index.ts:135 ctx.on('agent/pre-step')
dsh-session-title
合并 agent 相关事件/上下文类型
src/index.ts:21 type import
dsh-subagent
创建与检索子 Agent、读取其会话与状态
src/index.ts:40 (import type Agent) + src/child-agent.ts:12 (import type Agent,AgentOptions,CreateAgentOptions) + src/index.ts:217 (ctx.inject(['agents'])) + src/continuation.ts:210 (ctx.agents.get)
dsh-subagent-dsh-sdk
解析并合并子代理 route 选项
src/index.ts:18 (import type AgentOptions)
dsh-subagent-fork-in-process
从父 Agent 会话日志切取 seed
src/index.ts:13 (import type Agent)
dsh-terminal
以精确 Agent 作为会话 owner,并绑定其生命周期做 cleanup
package.json:30 peerDep + src/index.ts:8 import Agent + src/index.ts:319 ctx.get('agents')
dsh-terminal-bash
以会话 owner Agent 及其 session 做沙箱模式护栏
package.json:30 peerDep + src/index.ts:8 import Agent + src/index.ts:37 ensureSandboxModeFence(owner)
dsh-time-context
在 agent 步前注入时间上下文读数,并读取 turn/step 位置
src/index.ts:11 import type Agent/PreStepDecision + src/index.ts:185 ctx.on('agent/pre-step', {prepend:true})
dsh-tmux-context
在 agent 步前注入 tmux 位置上下文,并读取 turn/step 位置
src/index.ts:24 import type PreStepDecision + src/index.ts:246 ctx.on('agent/pre-step', {prepend:true})
dsh-tool-ask-user
工具执行携带的 agent 身份
package.json:30 peerDep(execute 的 exec.agent 来自工具执行上下文,src/index.ts:88)
dsh-tool-bash
读取调用者 Agent 会话以解析 workdir 与作业归属
src/index.ts:21 import type { Agent }; package.json:30 peerDep
dsh-tool-bash-persistent
以 Agent 为 owner 隔离持久 shell 并读取其会话 cwd
src/index.ts:9 import type { Agent }; package.json:29 peerDep
dsh-tool-cordis
查询需以 Agent 为其作用域主体
src/index.ts:3 import
dsh-tool-goal
校验调用 agent 的 live 身份与 root 归属以判定人类权威
src/authority.ts:4 import Agent + src/authority.ts:53 ctx.agents.get + src/authority.ts:81 ctx.agents.roots
dsh-tool-jobs
把完成通知投递到 owner Agent(inject/followup)并据其 input 重置唤醒预算
src/index.ts:20 import type Agent + src/index.ts:212 ctx.on('agent/inbox/claimed')
dsh-tool-present
取得调用 Agent 及其 Session
src/index.ts:6 import type {} from '@deepseek-ai/dsh-agent' + src/index.ts:77 exec.agent
dsh-tool-pwsh
读取调用者 Agent 会话以解析 workdir 与作业归属
src/index.ts:30 import type { Agent }; package.json:31 peerDep
dsh-tool-pwsh-persistent
以 Agent 为 owner 隔离持久 shell 并读取其会话 cwd
src/index.ts:11 import type { Agent }; package.json:29 peerDep
dsh-tool-ralph
声明式 peer 依赖(通过 exec.agent 取得调用方 Agent)
package.json:30 peerDep
dsh-tool-session-query
读取调用者 Agent 会话的 header 与边界投影类型
src/workspace-access.ts:14 import type { TurnBoundaryProjection }
dsh-tool-skill
订阅 agent/pre-step 注入技能正文与技能目录,并读取 agent.session 的 cwd 与事件序列
package.json:30 peerDep + src/index.ts:10 import type + src/index.ts:177,213 agent/pre-step
dsh-tool-subagent
读取调用 Agent 与 reconciling 组合作用域
src/index.ts:15 (import type Agent, AgentOptions) + src/index.ts:658 (ctx.get('agents'))
dsh-tool-subagent-control
读取活跃 Agent 状态用于发现结果
src/list-agents.ts:12 (import type Agent) + src/list-agents.ts:20 (inject ['tools','subagents','agents']) + src/list-agents.ts:163 (ctx.agents)
dsh-tool-terminal
以执行 Agent 作为终端 owner
package.json:33 peerDep + src/index.ts:9 import Agent + src/index.ts:185 requireAgent(exec.agent)
dsh-tool-todo
todo 列表挂在调用 Agent 的 session 上
package.json:44 peerDep + src/index.ts:199 exec.agent.session.append
dsh-tool-workflow
取得调用方 Agent 以归属后台作业与工作流运行记录
package.json:41 peerDep + src/index.ts:19 import type { Agent } + src/index.ts:407 exec.agent + src/index.ts:442 parent.session
dsh-tools
复用 Agent 类型以在调度中引用所属 agent
src/index.ts:13 import type Agent + package.json:41 peerDep
dsh-user-approval
以 agent/session 为审批作用域与日志目标
package.json:40 peerDep + src/index.ts:10、src/types.ts:10 type import Agent
dsh-user-questions
限定只有运行时根的存活 agent 可发起人类交互
package.json:35 peerDep + src/index.ts:11、src/types.ts:4 type import Agent; src/index.ts:95 ctx.get('agents') 校验存活 root
dsh-web-search-deepseek
通过 ctx.get('agents') 找到当前发起方 Agent,以记录辅助搜索请求
package.json:32 peerDep + src/index.ts:11 import type {} from dsh-agent (声明合并) + src/index.ts:118 ctx.get('agents')?.currentInitiator()
dsh-workflow-ptc
承载子代理的父 Agent 身份与归属
package.json:31 peerDep + src/host.ts:3 import type { Agent }
dsh-workspace-changes
在 turn 停止时收口快照
src/index.ts:14 import type {} from '@deepseek-ai/dsh-agent' + src/index.ts:153 agent/turn-stopping