Skip to content
签到签到

9. 运行、测试和调试指南

9.1 环境要求

仓库声明需要:

  • Node.js ^22.19 || >=24
  • Corepack 启用的 pnpm@11.7.0
  • Git 2.26+。
  • 可选 DEEPSEEK_API_KEY

9.2 命令分类

已执行并验证

2026-09-02 在证据提交 4e84901e 上执行:

sh
pnpm exec vitest run <11 个定向测试文>
# 11 test files passed; 660 tests passed

pnpm dsh --help
# 成功输出 launcher 选项、web/plugin 子命令与示例

DSH_HOME=<temp> pnpm dsh --profile web --dump-default-config
# 成功输出 base 与 web Bundle 组合树;临时目录随后删除

此外执行了 Git 提交、状态、文件和符号的只读检查。上面的通过结果只覆盖指定核心包与 CLI 帮助,不代表真实模型、Web UI、全部 E2E 或发布流程已经通过。

仓库声明但未执行

sh
pnpm run clean
pnpm run test # 全仓测试未执行;只执行了三个核心包
pnpm run test:coverage
pnpm run test:e2e
pnpm run test:snapshot
pnpm run typecheck
pnpm run lint
pnpm run build
pnpm run hygiene
pnpm run doc-sync
pnpm dsh --profile headless "task"
pnpm run demo:cordis
pnpm run demo:acp

推荐的最小复验

sh
pnpm exec vitest run packages/core/session/tests/session.spec.ts packages/core/agent-loop/tests/loop.spec.ts packages/core/tools/tests/tools.spec.ts packages/core/tools/tests/ptc.spec.ts

学习者仍应先用 rg --files <package> 确认测试范围,避免把路径拼错后“零测试通过”误记为成功。

9.3 安装步骤

建议流程:

sh
pnpm install
pnpm run typecheck

如果只是读代码,不安装依赖也可以完成大部分静态分析。真实运行、构建和测试需要依赖。

9.4 最小启动步骤

Web:

sh
pnpm run build
pnpm dsh web

Headless:

sh
pnpm run build
pnpm dsh --profile headless "summarize this workspace"

这些启动命令来自根 README.mddocs/development.md,【待确认】本次未进行需要真实 Key 的端到端启动。第一次实践优先使用 mock LLM 或只 dump 配置。

9.5 常用开发命令

  • pnpm run dev:web:重建客户端 bundle,配合 Web HMR。
  • pnpm run mock:llm:启动 mock LLM server。
  • pnpm dsh --profile web --dump-config:查看组合树。

9.6 测试命令

优先从 package 级测试入手,不要一上来跑全量。根 package.jsontestvitest run

9.7 如何运行单个测试

Vitest 通常支持:

sh
pnpm run test -- <test-file-pattern>

当前仓库 Vitest 已验证可直接接受 package 路径。运行单文件时应检查输出中的 Test Files/Tests 数量,确保过滤条件确实选中了目标。

9.8 如何开启调试

Node/tsx 可配合 IDE 断点。核心断点:

9.9 日志位置

源码里常见 ctx.logger.warn,不是统一文件日志。Session 持久化默认 root 来自 dshHomePath('sessions'),见 packages/bundle/base/cordis.patch.yml。浏览器和 telemetry 有独立机制。

9.10 环境变量

常用:

text
DEEPSEEK_API_KEY
DEEPSEEK_BASE_URL
DSH_PERMISSION_MODE
DSH_TELEMETRY_MODE
DSH_TELEMETRY_DISABLED
DSH_TELEMETRY_OTLP_URL
DSH_TOOLS_MODE

9.11 常见启动失败原因

  • 没有安装依赖。
  • 没有先 build,导致缺 Typert artifacts 或 client bundle。
  • Node/pnpm 版本不匹配。
  • bundle/patch 行引用了不存在的插件或 id。
  • 缺少 DEEPSEEK_API_KEY 时,真实模型调用失败。
  • 端口被占用。
  • Windows 与 POSIX shell 平台差异导致 bash/pwsh 行选择不同。

9.12 最小故障排查流程

  1. 看 CLI 第一阶段报错是启动器还是应用参数。
  2. --dump-config 看组合树是否正确。
  3. 检查 profile package.jsoncordis.patch.yml
  4. --patch overlay 做最小复现。
  5. runProfileboot()、Agent 创建处断点。
  6. 如果与模型相关,确认 adapter 注册、provider/model、key、base URL。
  7. 如果与工具相关,确认 ctx.tools 注册、schema、权限和 guard。

9.13 一张可复用的故障分层表

最后成功点下一检查点不应优先检查
CLI help参数所有权与 Profile 路径模型输出质量
dump configCordis entry 激活与 inject浏览器 CSS
Agent 创建inbox、pre-step 与 Session append发布脚本
request/headerAdapter、Key、base URL 与 streamTool body
tool/callschema、restriction、guard 与 schedulerProfile 查找
Session eventpersistence/downlink/projectionLLM 路由

每次排查保存:复现命令、提交、环境版本、最小输入、最后成功点、首个错误和恢复步骤。只有这些 信息齐全,故障记录才可被另一个开发者重放。