🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Cordis 运行时调试 wang-kaopu/dsh-cordis-devtools

DeepSeek Harness
wang-kaopu67 天前有提交已提供中文文档扫描:含敏感能力

让编码 Agent 查看插件运行时状态并对比改动前后差异

27.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add wang-kaopu/dsh-cordis-devtools
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · dev
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/08·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 67 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/8) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 24 处,展示前 24 条)
  • 写入本地文件
    e2e/controlled-experiment-smoke.mjs:33
    await writeFile(mcpPatch, [
  • 执行外部命令来自配置/变量
    e2e/controlled-experiment-smoke.mjs:45
    server = spawn(pnpm, [
  • 发起网络请求
    e2e/controlled-experiment-smoke.mjs:66
    const missingAuth = await fetch(mcpUrl, { method: 'POST', body: '{}' })
  • 发起网络请求
    e2e/controlled-experiment-smoke.mjs:68
    const badAuth = await fetch(mcpUrl, {
  • 删除本地文件递归
    e2e/controlled-experiment-smoke.mjs:211
    await rm(dshHome, { recursive: true, force: true })
  • 发起网络请求
    e2e/controlled-experiment-smoke.mjs:272
    const response = await fetch(url)
  • 执行外部命令来自配置/变量
    e2e/controlled-experiment-smoke.mjs:309
    const child = spawn(command, args, {
  • 写入本地文件
    e2e/dsh-web-smoke.mjs:63
    await writeFile(mcpPatch, [
  • 执行外部命令来自配置/变量
    e2e/dsh-web-smoke.mjs:72
    server = spawn(pnpm, [
  • 写入本地文件
    e2e/dsh-web-smoke.mjs:224
    await writeFile(verificationTransitionFile, 'transition\n', 'utf8')
  • 读取本地文件
    e2e/dsh-web-smoke.mjs:234
    const inspectVerificationSummary = JSON.parse(await readFile(verificationInspectResultFile, 'utf8'))
  • 删除本地文件递归
    e2e/dsh-web-smoke.mjs:315
    await rm(dshHome, { recursive: true, force: true })
  • 发起网络请求
    e2e/dsh-web-smoke.mjs:479
    const response = await fetch(url)
  • 执行外部命令来自配置/变量
    e2e/dsh-web-smoke.mjs:523
    const child = spawn(command, args, {
  • 读取本地文件
    src/bootstrap/profile-bootstrap.ts:61
    lstat: path => nodeLstat(path),
  • 读取本地文件
    src/bootstrap/profile-bootstrap.ts:62
    readFile: path => nodeReadFile(path, 'utf8'),
  • 写入本地文件
    src/bootstrap/profile-bootstrap.ts:63
    writeFile: (path, contents, options) => nodeWriteFile(path, contents, { encoding: 'utf8', ...options }),
  • 写入本地文件
    src/bootstrap/profile-bootstrap.ts:64
    rename: (oldPath, newPath) => nodeRename(oldPath, newPath),
  • 删除本地文件
    src/bootstrap/profile-bootstrap.ts:65
    unlink: path => nodeUnlink(path),
  • 读取本地文件
    src/bootstrap/token-store.ts:28
    lstat: path => nodeLstat(path),
  • 读取本地文件
    src/bootstrap/token-store.ts:29
    readFile: path => nodeReadFile(path, 'utf8'),
  • 读取本地文件
    src/cli.ts:259
    readFile: path => readFile(path, 'utf8'),
  • 写入本地文件
    src/cli.ts:260
    writeFile: (path, contents) => writeFile(path, contents, 'utf8'),
  • 发起网络请求
    src/host/dsh-experiments.ts:115
    outcome = await approval.request({
扫描于 2026/11/5(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-ui-primitives
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 查看插件运行时状态
  • 对比改动前后差异

为编码智能体提供运行时证据,用来调试和验证 DSH / Cordis 插件。

README

由 DeepSeek 最新模型翻译生成
DSH DevTools for Agents 让你的编码 Agent 看到它正在修改的 Cordis 运行时。 English · 简体中文 编码 Agent 可以阅读你的插件源码,但通常无法看到该源码在 DSH 内部实际产生的 Cordis 运行时状态。 这就留下了一个明显的证据缺口:DSH 真的加载了这次改动吗?某个 Event 是否被注册了不止一次?是否还有旧的 Fiber 仍然存活?修复之后运行时究竟发生了什么变化? DSH DevTools 将这些运行时信息暴露给 Agent。Agent 可以在做出改动之前检查当前状态,在复现过程中等待目标行为出现,并对比重载前后的运行时。 | 调试问题 | 来自 DevTools 的证据 | | 重载后运行时发生了什么变化? | checkpoint + 语义拓扑对比 | | 为什么某个 Event 看起来运行了两次? | 实时监听器注册、多重性以及所属 Fiber | | 旧的插件实例是否仍然存活? | 当前存活的 Fiber 拓扑 | | 复现过程中目标行为是否出现? | 最近的派发记录与过滤后的运行时等待 | | waterfall 链内部发生了什么?
展开完整文档(README 剩余 1 节)
DSH DevTools for Agents

让你的编码 Agent 看到它正在修改的 Cordis 运行时。

English · 简体中文

编码 Agent 可以阅读你的插件源码,但通常无法看到该源码在 DSH 内部实际产生的 Cordis 运行时状态。

这就留下了一个明显的证据缺口:DSH 真的加载了这次改动吗?某个 Event 是否被注册了不止一次?是否还有旧的 Fiber 仍然存活?修复之后运行时究竟发生了什么变化?

DSH DevTools 将这些运行时信息暴露给 Agent。Agent 可以在做出改动之前检查当前状态,在复现过程中等待目标行为出现,并对比重载前后的运行时。

| 调试问题 | 来自 DevTools 的证据 |
| 重载后运行时发生了什么变化? | checkpoint + 语义拓扑对比 |
| 为什么某个 Event 看起来运行了两次? | 实时监听器注册、多重性以及所属 Fiber |
| 旧的插件实例是否仍然存活? | 当前存活的 Fiber 拓扑 |
| 复现过程中目标行为是否出现? | 最近的派发记录与过滤后的运行时等待 |
| waterfall 链内部发生了什么? | 带有监听器 span、时序以及 next() 记录的 profiler 追踪 |

一个典型的 Agent 调试循环:

inspect runtime
↓
capture checkpoint
↓
edit plugin
↓
normal reload + reproduce
↓
wait / inspect current runtime
↓
compare checkpoint

代码改动与重载仍通过正常的开发工作流进行。DSH DevTools 缩小了源码与实时运行时之间的证据缺口,为 Agent 提供了可供参考的具体进程状态。

快速开始

1. 将 DevTools 添加到 DSH Web profile

直接从 GitHub 安装 v0.8.0 版本:

dsh plugin --profile web add github:wang-kaopu/dsh-cordis-devtools#v0.8.0

随后你可以从 DSH Web 侧边栏底部打开 Cordis DevTools,直接检查当前运行时。

若要进行仓库开发,请克隆源码并使用本地包:

pnpm install --frozen-lockfile
pnpm build
dsh plugin --profile web add ./

2. 连接 Codex 或其他 MCP 宿主

配置目标 DSH profile,并注册 profile 本地的 stdio 桥接:

dsh plugin --profile web exec dsh-cordis-debug setup --profile web --agent codex

通过你正常的开发工作流重载 DSH,然后检查连接:

dsh plugin --profile web exec dsh-cordis-debug doctor --profile web

setup 会为所选 profile 创建一个仅限所有者访问的 token 文件,启用本地回环 MCP 端点,并将 DevTools 桥接注册到 Codex。

stdio 桥接在本地读取凭据,并将 MCP 请求转发到正在运行的 DSH 进程。该 token 无需进入提示词、工具参数、日志或诊断结果。
对于其他支持 MCP 的宿主,请使用 setup 打印的 bridge 命令,或参阅 MCP 连接指南。

3. 让 Agent 检查、更改并验证

你可以给 Agent 一个带有明确运行时验证步骤的任务:

检查当前的 Cordis 运行时,并在更改此插件之前捕获一个检查点。在我重新加载 DSH 并复现问题后,比较当前运行时,并仅基于保留的运行时证据得出结论。

一个典型的会话如下所示:

list targets
↓
attach session
↓
snapshot / focused inspection
↓
capture checkpoint
↓
edit code + normal reload + reproduce
↓
wait / inspect current runtime
↓
compare checkpoint
↓
detach session

可选的 runtime-debugging Skill 提供了完整的 Agent 工作流,包括游标处理、过期会话、间隙恢复和租约清理。

接口

Agent 工具

| 用途 | 工具 |
| 会话生命周期 | cordis_list_debug_targets、cordis_attach_debug_session、cordis_debug_snapshot、cordis_wait_for_runtime_change、cordis_detach_debug_session |
| 可发现的协议 | cordis_devtools_get_protocol、cordis_devtools_list_targets、cordis_devtools_attach、cordis_devtools_send、cordis_devtools_read_events、cordis_devtools_wait_for_event、cordis_devtools_detach |
| 聚焦的运行时检查 | cordis_runtime_summary、cordis_inspect_event、cordis_inspect_fiber、cordis_search_dispatches、cordis_profiler_traces |
| 运行时验证 | cordis_capture_checkpoint、cordis_compare_current |
| Waterfall 实验 | cordis_waterfall_experiment_status、cordis_start_waterfall_experiment、cordis_stop_waterfall_experiment |

会话、快照、等待、聚焦诊断和验证均为只读路径。通用协议发送器仅在 bearer 认证和显式实验能力均启用时,才能路由 profiler 变更。

当所需的认证和能力设置启用时,Waterfall 实验工具才会暴露。

人类 DevTools

DSH Web 侧边栏提供四个视图:

- Events — 实时 Event 注册、监听器顺序、所有权以及 Event → Fiber 导航;
- Timeline — 最近的 observer 调度元数据;
- Fibers — 实时 Fiber 拓扑、所有权、Effects 以及最近的调度上下文;
- Profiler — waterfall 追踪和显式 profiling 插桩控制。

人类 UI 和 Agent 接口使用相同的 Host 运行时状态。

JSON CLI

相同的调试界面也可通过 dsh-cordis-debug CLI 使用:

dsh plugin --profile web exec dsh-cordis-debug targets
dsh plugin --profile web exec dsh-cordis-debug snapshot
dsh plugin --profile web exec dsh-cordis-debug checkpoint --output checkpoint.jsonbash
dsh plugin --profile web exec dsh-cordis-debug compare --baseline checkpoint.json

完整的命令集请参阅 CLI 参考。

手动回环 MCP

无法直接启动 stdio MCP 服务器的主机可以连接到 DSH 进程内嵌的回环 MCP 端点: yaml
- id: dsh-cordis-devtools
name: dsh-cordis-devtools
config:
mcp:
enabled: true
port: 43127

端点: text http://127.0.0.1:43127/mcp

只读的本地调试无需令牌即可运行。

外部瀑布实验额外需要身份验证和显式的实验能力。

请参阅 MCP 身份验证。

工作原理

DSH DevTools 在 DSH 进程内收集 Cordis 运行时信息,将这些状态保存在 Host 中,并通过 MCP、CLI、DSH 集成和 Web UI 对外暴露。
text
实时 Cordis 运行时 │ ┌────────────────┴────────────────┐ ▼ ▼ ObserverCollector 瀑布插桩拓扑 + 调度 选择性启用 │ │ ▼ ▼ 快照 WaterfallTraceStore │ │ └──────────────┬──────────────────┘ ▼ DevtoolsService Host 持有的状态 │ ┌─────────────┴─────────────┐ ▼ ▼ AgentDebugService RuntimeDiagnosticsQuery 会话 / 快照 / 聚焦查询 / 等待 / 实验租约 检查点 / 比较 │ │ └─────────────┬─────────────┘ ▼ MCP / CLI / Skill / DSH / Web UI │ ┌───────────┴───────────┐ ▼ ▼ Agent 人类

DevtoolsService 是 Host 侧用于运行时收集、近期历史、运行时通知、验证和性能分析协调的组合点。

AgentDebugService 提供面向 Agent 的调试生命周期,包括目标、会话、快照、游标、等待和实验租约。

RuntimeDiagnosticsQuery 提供聚焦的 Event、Fiber、调度和性能分析器跟踪查询,以及检查点捕获和语义比较。

MCP、CLI、DSH 集成和 Web DevTools 都从这一共享的 Host 运行时状态中读取数据,因此每个接口看到的都是同一个 Cordis 运行时。

Observer 路径默认观察器路径读取当前 Cordis 状态并保留近期运行时历史。

它提供:

- 实时 Event 与监听器注册;
- 监听器顺序、注册元数据以及所属 Fiber;
- 当前实时 Fiber 拓扑;
- 近期派发元数据;
- 运行时快照;
- 聚焦的 Event / Fiber / 派发 / 追踪查询;
- 检查点捕获与前后对比;
- 可供 Agent 等待的运行时变更日志。

观察器收集仅限于调试元数据。它不包含 Event 参数、返回值、提示词、工具结果、文件内容、插件配置、令牌或凭据。

运行时证据

派发、分析器追踪和运行时变更观察都有明确的保留窗口。随着新数据到达,较旧的记录会逐渐被淘汰。

查询结果包含相应的窗口状态:

- timeout:在当前窗口内未观察到匹配的变更;
- gap:当前游标已落后于保留窗口,需要重新获取快照;
- 检查点对比:报告两个运行时状态之间的语义变更。

例如: text listener multiplicity: 2 → 1 Fiber "foo": removed Event "bar": listener group added

这些结果可直接作为进一步 Agent 分析的证据。根本原因、置信度以及修复是否真正正确,由 Agent 结合源码与运行时状态自行判定。

受控瀑布式分析

观察器路径覆盖拓扑、注册和派发层面的问题。逐监听器计时和瀑布式 next() 行为需要在执行链内部进行临时插桩。

对于这些情况,DevTools 可以运行一次有限期的瀑布式实验: text Agent / Human │ ▼ WaterfallExperimentCoordinator │ exact owner + finite lease ▼ WaterfallInstrumentationController │ ▼ WaterfallTraceStore

WaterfallExperimentCoordinator 负责分析协调。

Agent 实验会获得一个具有有限 TTL 的 leaseId。租约会自动过期,显式停止必须与当前活动的 leaseId 匹配。人类 DevTools 可以随时触发紧急停止。

分析器记录分析元数据,例如 Event 标识、监听器归属、计时、结果以及 next() 行为。业务负载不会被保留。

文档

- 架构与不变量
- Agent 运行时诊断指南
- 受控运行时实验
- 运行时验证设计
- 开发工作流

开发 bash
pnpm install --frozen-lockfile
pnpm verify:policy
pnpm typecheck
pnpm test
pnpm build
pnpm verify:client-bundle
pnpm test:e2e:web

优先选择能覆盖当前变更的最小检查集。
仓库约定和持久性设计决策记录在 AGENTS.md 和 .agents/notes 中。

许可证

Apache-2.0
预览分享卡片长什么样 ↓wang-kaopu/dsh-cordis-devtools
分享 · DeepSeek Harness Hub
wang-kaopu/dsh-cordis-devtools

让编码 Agent 查看插件运行时状态并对比改动前后差异

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部