课程总纲 / 阶段 0 · 地基
L02

仓库地图:这个仓库长什么样

拿到仓库不迷路——每个目录干什么、文档去哪查、亲手把项目跑起来。

预计阅读 25 分钟难度 ★☆☆☆☆动手:跑起 Web UI

一、顶层目录导览Top Level

目录是什么通俗理解
packages/全部插件包(几十个),按组分类主车间——产品本体
docs/架构文档、教程、参考手册产品百科全书(课程结论出处)
vendor/内嵌的 Cordis 等框架源码买来拆下放家里的发动机(可自行维修)
examples/可运行的组合样例样板间——看别人怎么组装
python/Python SDK 与捆绑运行时给 Python 程序员开的侧门
native/原生扩展(Landlock 沙箱的 C++ 部分)贴近操作系统的特种零件
scripts/仓库质检脚本(CI 门禁)工厂质检流水线
.agents/智能体工作流 + Agent Notes工程施工日志:决策为什么这么做
website/文档网站源码百科全书的在线版
apps/启动器(CLI 与 Web 入口)车钥匙和点火按钮
vendor(内嵌依赖):本项目把 Cordis 源码直接复制进仓库一起维护(锁定版本、可读可改),这叫 vendoring——所以你能读到插件框架的全部源码。

二、packages/ 分组地图Package Groups

几十个包不用背,认识这几组就够(每组目录下有 README):

角色代表成员与通俗理解
core/产品脊柱session(会话日志)、tools(工具注册表)、agent + agent-loop(智能体与驱动循环)、system-prompt——房子的承重墙
llm/模型能力llm(适配器接口)+ llm-deepseek / llm-pi-ai(具体实现)——换模型就换这里
shell/ fs/ web/ terminal/ lsp/执行能力跑命令、读写文件、搜网页、持久终端、语言服务器——智能体的手脚
subagent/ workflow/ jobs/编排能力子智能体、工作流、后台任务——智能体的分身术
session/持久化JSONL / SQLite 后端——对话的账本
interaction/人机协作审批、权限、命令、ask-user——智能体的请示机制
bundle/发行组合dsh-base(所有 profile 的第一层)、web-app、headless——整车配置单
boot/启动胶水把插件树组装起来的引导程序
sdk/ acp/对外接口JSON-RPC SDK、ACP 自动化协议——给外部程序开的驾驶接口
skill/ preset/ guard/ plan/ todo/行为增强技能系统、会话级组合、循环卫生、计划模式、任务清单
extensions/自我修改运行时检查/挂载/卸载自己的插件(L19 演示大招)

三、docs/ 文档体系:不同问题查不同层Docs Map

你想干什么去哪查
理解整体架构(改代码前必读)docs/architecture.md
学插件框架基础概念docs/cordis-primer.md + docs/cordis-tutorial/(7 章教程)
动手做某件具体事(加工具/加包…)docs/cookbook/(菜谱式步骤)
用户视角用产品docs/user/(指南 + 开发入门)
查某个子系统的类型与 APIdocs/subsystems/(一子系统一页)
查所有工具 / 配置项清单docs/tool-catalog.md / docs/config-catalog.md(源码生成)
查术语定义docs/glossary.md
了解某个决策的来龙去脉.agents/notes/(Agent Notes)
事故复盘docs/postmortem/
中英文:多数文档有 xxx.md(英文)和 xxx.zh.md(中文)两版,内容对应,直接读 .zh.md 即可。

四、把它跑起来Run It

# 在仓库根目录依次执行
pnpm install     # ① 买齐所有食材(首次较慢)
pnpm run build   # ② 把所有 TS 编译成可运行的 lib/ 产物
pnpm dsh web     # ③ 用产物启动 Web UI

成功后终端打印地址,浏览器打开 http://127.0.0.1:3080此时是"还没配钥匙的车"——界面有了,模型还不能用,L08 讲怎么配。

启动时后台发生了什么(一句话版)

profileweb 配置单
(该挂哪些插件)
bundle 层层叠加dsh-base 打底
web-app 加界面
Loader 组装插件树按依赖顺序挂载
服务就绪ctx.tools / ctx.llm…
全部可用

L10 完整拆解这个组装过程,现在记住:运行中的 dsh = 一棵按配置组装出来的插件树

vendor / 内嵌依赖
把依赖源码复制进仓库一起维护。
cookbook
菜谱式操作手册,按步骤做完就有结果。
Agent Notes
决策笔记:为什么这么设计、放弃了什么。
profile
命名的插件组合清单(web / headless 是官方模板)。
✏️ 动手练习
  1. 按三步把项目跑起来,确认浏览器能看到 Web UI。
  2. 浏览 packages/core/tools/README.md 一遍(混个脸熟)。
  3. 打开 docs/architecture.zh.md,只看"Where new behavior goes"表,数数有多少种扩展方式(约 20 行)。
预期结果:Web UI 可访问;记住"功能都在 packages/、答案都在 docs/"。
📝 自测(点击展开答案)
1. 想了解"为什么这样设计",读哪类文档?
.agents/notes/ 的 Agent Notes(决策动机与取舍);架构本身看 docs/architecture.md。
2. Cordis 源码在哪个目录?为什么不在 node_modules 里?
vendor/cordis/。vendoring:源码锁定版本复制进仓库,可读可改;升级按 vendor/README.md 流程同步。
3. agent-loop 在哪个包?特殊之处?
packages/core/agent-loop/。连驱动循环本身都是插件、可被替换——"一切皆插件"最有力的证据。
4. 想给模型加新工具,第一步查什么?
docs/cookbook/adding-a-tool.md 和 docs/user/develop/basic/tool.md;L13 完整走一遍。
权威出处:README.zh.md · docs/architecture.zh.md · packages/README.md · vendor/README.md