- JavaScript 59.6%
- TypeScript 40.4%
|
|
||
|---|---|---|
| .agents/skills | ||
| .codex | ||
| .github/workflows | ||
| .vscode | ||
| docs | ||
| scripts | ||
| shared | ||
| src | ||
| tests | ||
| workflows | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| AGENTS.md | ||
| eslint.config.mjs | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| skills-lock.json | ||
| tsconfig.json | ||
| webpack.config.mjs | ||
Astra
Astra 是运行在 SillyTavern / TavernHelper 宿主中的可视化工作流编排器,用显式节点、关系和运行档案组织 AI 与确定性记忆处理。
主要能力
- 事件触发、来源读取、AI 操作、确定性处理、记忆召回、条目解释、写回与停止节点;
- Module 分组、运行开关、并发控制、API 调用预算、失败回退与动态任务派发;
- 具名端口、Schema 校验、多输入策略、Prompt 编排、Skill、共享条目库与 API Profile;
- 完整运行、单节点检查、Module 重跑、失败恢复、主动停止与持久化诊断档案;
- 工作流导入导出、全局或角色绑定,以及服务端持久化。
关系是节点间传递与执行顺序的唯一事实来源。保存工作流时会统一检查结构、引用、端口、Schema、Module 顺序和拓扑;无效配置不会通过兼容分支或占位数据进入运行时。
使用正式版本
把下面这一行保存到酒馆助手脚本中。地址固定到具体的产物提交,SHA 就是当前版本号;每次执行 pnpm release 后,本区块都会自动更新。
await import('https://cdn.jsdelivr.net/gh/Serialeo/Astra@32e67765eb85e775f83d565a26e90418e1d64746/astra.js');
产物提交
32e6776· 源码提交cd47aed· 构建于 2026-08-11T14:02:21Z
正式验收必须使用固定提交地址,不使用 @release 分支地址。分支解析可能被 jsDelivr 缓存,无法证明刚发布的版本已经生效;完整原因见 发布分支说明。
本地开发
以下命令都从 Astra 仓库根目录执行,并假设 Astra 与 SillyTavern 位于同一父目录。
1. 启动本地 SillyTavern
在第一个终端运行:
npm --prefix ../SillyTavern start -- --browserLaunchEnabled false
SillyTavern 启动后应能通过 http://127.0.0.1:8000 访问。如果两个仓库不是相邻目录,把 ../SillyTavern 换成实际路径。
2. 启动 Astra 自动编译与热更新
在第二个终端运行:
pnpm install && pnpm watch
pnpm watch 会持续执行开发构建,并只在本机回环地址 127.0.0.1:4173 提供本地产物。需要改端口时使用:
pnpm watch -- --port 4174
3. 设置酒馆助手开发脚本
在酒馆助手中新建并启用一个全局脚本,例如命名为“Astra 本地开发”,内容只保留:
await import('http://127.0.0.1:4173/astra.js?t=' + Date.now());
如果修改了开发服务端口,这一行的端口必须同步修改。脚本只需设置一次;之后每次 Webpack 成功编译,酒馆页面都会收到更新事件,并用新的构建标识重新载入 bundle,不需要刷新整个 SillyTavern 页面。
编译失败时不会发送更新事件。终端会保留完整错误,酒馆继续运行上一次成功构建,直到下一次编译成功。
4. 检查开发服务
curl --fail --silent http://127.0.0.1:4173/status
正常结果必须满足:
ready为true;revision有值;- 酒馆页面打开且开发脚本启用后,
connectedPages至少为1。
浏览器 MCP 验收
完成一次功能或修复后,用浏览器 MCP 打开 http://127.0.0.1:8000,至少检查:
- 浏览器控制台没有本次修改引入的加载、运行时或交互错误;
- Astra 启动器存在,面板能够打开、关闭并进入本次修改涉及的页面;
- 实际执行本次修改涉及的业务路径,并核对界面结果或持久化结果;
- 保存一次源码,确认
/status的revision变化,酒馆没有整页刷新,并成功载入新构建。
浏览器验收使用真实 SillyTavern 宿主,不用 Node 宿主桩替代,也不在仓库中写入伪造的“通过”标记。更完整的操作说明见 本地开发与发布前验收。
发布
先完成浏览器 MCP 验收,再检查准备提交的文件:
git status --short
git diff --check
确认工作区内容全部属于本次发布后,执行完整发布命令;只修改提交说明:
pnpm exec tsc --noEmit && \
pnpm lint && \
pnpm test && \
pnpm build && \
git add -A && \
git diff --cached --check && \
git commit -m "feat: 描述本次修改" && \
pnpm release && \
git push origin HEAD:main
发布链的职责如下:
- 本地类型检查、静态检查、自动化测试和生产构建全部通过;
- 创建源码提交;
pnpm release再次执行必要编译,将astra.js、version.json和发布说明写入孤儿release分支;pnpm release强制更新github/release,刷新 jsDelivr 并从固定提交地址核对线上版本;- 发布脚本自动更新并提交 README 中的正式载入地址;
- 最后把源码提交和载入地址提交一起推送到
origin/main。
任何一步失败都会停止后续命令。如果 pnpm release 已成功、只有最后的 git push origin HEAD:main 失败,修复远端问题后只需重新执行该 push,不要重复发布 release。
主要源码
src/memory/core/workflow/:工作流规范化、编译、端口、任务派发与拓扑契约;src/memory/runtime/workflow/:调度、运行归档、取消、重跑与状态仓储;src/console/orchestrator/:画布、节点与关系详情、任务目录、端口和运行面板;src/console/workflow/store.ts:工作流目录、绑定、保存与并发编辑协调;src/memory/ui/api.ts:控制台与宿主运行时之间的结构化 API 边界;src/memory/runtime/bootstrap.js:运行时唯一激活、所有权切换、失败回滚与销毁边界;src/console/runtime-ready.ts:控制台功能模块统一的运行时就绪信号。
运行时约束
src/memory/index.js只导出能力,不在 import 时初始化或启动重试定时器;- 控制台入口是唯一激活方;新 bundle 完整注册并发布后,才销毁旧 owner;
- 每个宿主监听和全局 API 注册都提供幂等清理,失败时按相反顺序回滚;
- 功能模块只订阅统一的运行时就绪信号,不建立并行初始化路径;
- 锚点初始化失败只影响真正依赖锚点的写入,不阻断 AI、预览或其他无关操作;
- 视口小于
320×280时面板保持折叠,但启动器始终可见。