pnpm install # 或 npm install
npm run build # tsdown → lib/index.js(宿主层)
npm test # 113 个用例
npm run typecheck # tscnpm run build && node scripts/link-profile.mjs web
dsh web或者打包安装(更接近真实用户路径):
npm pack && dsh plugin --profile web add ./dsh-abyss-<版本>.tgz- 浏览器层的插值一律转义。 会话标题、工具名、台词都是模型产物,一个没转义的引号就是注入宿主页面。
- 文字不带动画 class。 动效只落在精灵上;一行转起来的字是不可读的(这条有测试守着)。
- 不猜数据。 拿不到上下文窗口就不画水位;拿不到文本就只改状态,不要编一句台词。
- 瞬时状态放模型里,不要只存在 DOM 上——每次渲染都会重写楼面 markup。
- 测试驱动的是
client/client.js本体,不要为了好测而在测试里重写一份逻辑。 - 新增 UI 行为请同时补:投影层用例(
tests/org.test.ts)、宿主用例(tests/plugin.test.ts)、浏览器用例(tests/client.test.mjs)中相关的那一层。
开源与发版的完整清单在 docs/launch.md。
- 一个 PR 一件事,CHANGELOG 里加一条。
- 涉及界面的改动,附上改动前后的截图。
- 涉及投影语义的改动(比如"什么算失败"),请在 PR 里写清楚依据的是哪个事件字段。