跳到正文

启动

空书包,一层一层装满

运行中的 dsh 是一棵插件树。树不是写死的,是启动时按序叠加出来的。

六步出门

  1. 01

    dsh web

    你喊一声管家。

    apps/cli/src/bin.ts 解析参数,loadLayeredEnv。

  2. 02

    选 profile

    拿出叫 web 的盒子。

    loadProfile 读 $DSH_HOME/profiles/<name>/package.json 的 dsh.profile.bundles。

  3. 03

    叠补丁

    按顺序把袋子倒进书包。

    composeEntries:空列表上 applyEntryPatches。

  4. 04

    boot()

    把底板放好,积木开始卡住。

    创建根 Context,挂 Loader + include + group,等待全部 fiber ACTIVE。

  5. 05

    断言

    数一数,少一块就大声说。

    assertEntriesLoaded / assertEntriesActivated。失败 fail-loud,先 restore TTY 再 exit(1)。

  6. 06

    开窗

    web 模式打开信箱和玻璃。

    web-runtime 打印 URL,默认打开浏览器。headless 则创建一个 Agent、提交任务、打印最后一段助手文本。

补丁层 · 后写的赢

--patch 与环境开关

出门前最后再贴一张。

启动器 overlay。DSH_TELEMETRY_DISABLED 等可禁用行。dsh --profile web --dump-config 打印你机器真正启动的树。

$DSH_HOME/cordis.patch.yml

这台机器上对所有盒子生效的便条,优先级更高。

home 层覆盖 profile 层。watchUserPatches 监视两份文件,HMR 事务式重组合。

profiles/<name>/cordis.patch.yml

你自己在这个盒子上贴的便条。

按 id 整行替换 config,或 insert 新行。不做深合并,要保留的字段必须重述。

dsh-web-app 或 dsh-headless

选带窗户的盒子,或做完就回家的盒子。

web-app 插入 webserver、apiproxy、client 插件名册、workspace、storage。headless 插入一次性 runner。

dsh-base

最大那袋:脑子、手、日记、围栏、钥匙。

每个 shipped profile 的第一层。插入 llm、session、agent、tools、sandbox、fs、shell、skills、subagents… 约 70 行。按平台门控 bash / pwsh。

空根 []

空书包。什么积木都还没放。

profile 的 cordis.yml 每次启动都被写成空数组。树 100% 由补丁构成,这样 dump-config 不会和真实启动漂移。

同一进程,不同套装

Profile 决定整座城怎么拼。Agent preset 决定某一个机器人穿哪套衣服——在 isolate realm 里再挂一棵小树。

standard

标准模式

全套编程机器人:改文件、敲命令、上网、技能、计划、帮手。

完整工具与编码人格。官方 Standard mode。

code

Code Mode

标准套装再加实验室:模型用一段 TypeScript 编排多轮工具。

工具经 Code Mode SDK 暴露,可在一个程序里组合多步操作。

minimal

极简模式

只留嘴巴和橡皮,用来给模型打分。

持久 bash + str_replace_editor。官方 Minimal mode。

cordis

创造模式

允许机器人检查现在挂了哪些积木,并给自己再卡一块。

standard + 运行时自检、内存试插件、组合成新 preset。官方 Creator mode。