可组合性课堂
两门互相衔接的通俗课,外加一份论文中文译文阅读页:
| 页签 | 路由 | 讲什么 |
|---|---|---|
| Cordis 演算 | #/lesson/<id> |
把论文《A Programming Paradigm for Spatiotemporal Composability》的演算讲成八课,最后一课对回 Cordis 4.0 源码 |
| DeepSeek Harness | #/dsh/lesson/<id> |
同一套演算落在真实产品上:dsh 的三层组合、一次对话的流水线、官方 78 行基础插件全景 |
| 论文译文 | #/paper |
中文译本,公式用 KaTeX 渲染,带目录与滚动高亮 |
每节课都配可以动手点的演示和一道随堂题,两门课的术语一一对应、双向链接。
Cordis 演算(8 课 + 附录)
| # | 主题 | 讲什么 |
|---|---|---|
| 1 | 世界状态 Γ | 把副作用写进函数签名 |
| 2 | 可撤销 effect | 一个动作配一把撤销钥匙 |
| 3 | 撤销顺序 | 为什么要倒着撤,什么时候可以乱撤 |
| 4 | coeffect | 「我需要什么」以及变化的三种分类 |
| 5 | 生命周期 | fiber 的四个状态和七条规则 |
| 6 | 卸载定序 | 卸载为什么要分两步 |
| 7 | 合流性 | 为什么可以放心乱序热插拔 |
| 8 | 落到代码 | 对照 packages/core/src/{fiber,reflect,context,utils}.ts |
DeepSeek Harness(导览 + 3 课)
| # | 主题 | 讲什么 |
|---|---|---|
| 00 | 为什么是它 | 与 Claude Code / Codex / Pi Agent 逐维度对比;与演算课的概念对照表 |
| 01 | 组合出一棵树 | profile → bundle → patch 三层叠加;换两行 provider 搬走整个执行世界 |
| 02 | 一次对话 | turn / step 流水线单步走,六个瀑布事件,「模型能看到的必须是记录过的」 |
| 03 | 官方全景 | 78 行基础组合按能力域可搜可筛、18 类面向模型的工具、「我要加 X 该动哪里」查表 |
课程里的每个数字都能在 deepseek-harness 仓库里核对:78 行来自 packages/bundle/base/cordis.patch.yml,工具名来自各 tool-* 包的注册点,流水线与扩展点来自 docs/architecture.md。npm run smoke 里有一条断言专门盯着这个 78,行数一变测试就红。
本地开发
npm install
npm run dev # http://localhost:5173
npm run build # 类型检查 + 产物打包到 dist/
npm run preview # 预览 dist/
npm run smoke # 在 Node 里把两门课的每一课和译文页各渲染一遍
npm run smoke 用 SSR 把整棵组件树真正执行一次,能抓到只在运行时才暴露的错误(比如公式渲染失败、组件取值为空)。它同时校验译文页的公式块数量与目录锚点数量,CI 里跑在 build 之前。
部署
推到 main 后由 .github/workflows/deploy.yml 自动构建并发布到 GitHub Pages。仓库需要先在 Settings → Pages → Source 选择 GitHub Actions。
Vite 的 base 设为 ./,所以站点放在 <user>.github.io 根目录或 <user>.github.io/<repo>/ 子路径都能正常加载;路由用 hash,不需要额外的 404 回退配置。
代码结构
| 文件 | 作用 |
|---|---|
src/ui.tsx |
把 Canvas SDK 用到的组件(Stack / Row / Grid / Card / Table / Callout / Pill / Toggle …)按同样 API 实现一遍,附带明暗两套配色 |
src/Course.tsx |
Cordis 演算课正文,是 Cursor Canvas 版的直接拷贝 |
src/DshCourse.tsx |
DeepSeek Harness 课正文,只有网页版 |
src/lesson-kit.tsx |
两门课共用的教学组件与课程外壳(Course.tsx 为便于与 Canvas 版整份同步,保留自己的一份拷贝) |
src/route.ts |
把「当前第几课」提升为 URL,两门课各用一个前缀,链接可分享、前进后退可用 |
src/PaperPage.tsx |
译文渲染:markdown-it + KaTeX,自建目录与滚动高亮 |
useCanvasState 在网页版改为 localStorage 持久化,演示里点出来的状态刷新后仍在。Canvas 版更新时 Course.tsx 仍可整份覆盖,只需保留顶部两行 import 和 useLessonState 一处调用。
许可与版权
站点代码按 MIT 授权。
例外:src/content/cordis-paper.zh.md 和 public/cordis-paper.zh.pdf 是 cordiverse/paper 的非官方中文译本,著作权归原论文作者(Yifan Shi、Wei Zhang、Tianyi Cui)所有,不在 MIT 授权范围内。原仓库未附授权声明,译文由 LLM 翻译整理、仅供学习参考,引用请以英文原文为准;若作者不希望它被转载,请提 issue,会立即撤下。
课程内容是对该论文与 deepseek-harness 的非官方通俗讲解,代码引用自 cordis 4.0.0-rc.8 与 deepseek-harness master(2026-08)。
No comments yet. Be the first to write one.