初始提交

初始提交目前已有的文档和基础设置。
此提交还不包含 .gitignore 等文件。
This commit is contained in:
2026-04-22 13:34:05 +08:00
commit 891acdfbfd
28 changed files with 27737 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
# 图像渲染
NJUPT Suan 提供的工具中包含图像渲染的需求。在现在的版本中,图像是通过 `wkhtmltoimage` 渲染的。
## 为什么?
造成芒果帆帆的这一决策的主要原因是,目前 Astrbot 的一个使用较为广泛的插件
[BiliVideo](https://github.com/storyAura/astrbot_plugin_biliVideo)
的图片渲染技术路线是 `wkhtmltopdf`
`wkhtmltopdf``wkhtmltoimage` 疑似是同一种东西,在芒果帆帆尝试安装 `wkhtmltopdf` 的时候两个就一起安装起来了。
## 如何安装?
安装这个东西是一个相当复杂且难绷的过程。根据芒果帆帆拷打 AI 得到的结果,`wkhtmltopdf` 是一个开源项目,但是已经存档,理由是
**「社区认为其功能已经较为完善,因此不再需要进行开发维护。」**
由于该软件包已经停止维护,最新的软件包源中很可能不再包含它,比如 Debian 13。因此芒果帆帆在 Debian 13 上不得不下载 Debian 12 的软件包来安装。
:::warning
命令由 AI 生成,请谨慎使用。
:::
```bash
# 0. 到临时目录里下载适配于 Debian 12 的软件包版本
cd /tmp
wget -q https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
# 1. 安装依赖(如果还没安装的话)
sudo apt-get install -y ca-certificates fontconfig libfreetype6 libjpeg62-turbo libpng16-16 libssl3 libstdc++6 libx11-6 libxcb1 libxext6 libxrender1 xfonts-75dpi xfonts-base zlib1g
# 2. 安装下载的 deb 包
sudo apt install /tmp/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
# 或者使用 dpkg
# sudo dpkg -i /tmp/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
```
## 这是好东西吗?
这显然并不是。
NJUPT Suan 现在使用 `wkhtmltoimage` 来将 HTML 渲染为 PNG 图像,为此,需要先在代码中拼接 HTML 文本,并写入临时文件,然后调用命令。
由于 `wkhtmltoimage` 已经不再维护,加上其历史包袱(基于早期的 webkit 引擎),已经不支持许多现代的 CSS 特性。
这会导致基于现代 CSS 设计的页面的渲染效果意外地差(或者说是样式无效),因此在 vibe coding 时,芒果帆帆不得不告诉 AI 避免使用新的 CSS 特性、
简化颜色(避免使用渐变)以及使用系统自带字体。
芒果帆帆现在对于 BiliVideo 竟然会使用这套技术路线感到奇怪。按理说Astrbot 内拥有将 Markdown 文本渲染为图片的方法,
BiliVideo 也并没有独特的需要额外实现渲染的需求(其渲染功能用于生成视频的总结图片),但 NJUPT Suan 是真的需要做课程表的表格。
如果 NJUPT Suan 还有未来的话,会尝试更换渲染方案。

View File

@@ -0,0 +1,32 @@
# NJUPT Suan 插件介绍
**NJUPT Suan** - **芒果酸**
## 这是什么
这是一个 Astrbot 插件。
[Astrbot](https://astrbot.app/) 是一个跨平台 AI 助手,让 AI 直接工作在聊天软件中。你也可以把它当成一个聊天机器人,或者一个不能聊天只负责执行任务的工具人。
NJUPT Suan 当中的 `Suan` 是芒果酸酸的酸,本插件为 Astrbot 中运行的 LLM 提供了与 NJUPT 有关的工具。
## 功能介绍
### 生成课程表
NJUPT-MCP 包含了[能够返回课程表数据的工具](/njupt-mcp/llm-tools.md)。NJUPT Suan 可以根据 NJUPT-MCP 的返回数据渲染课程表图片,
目前版本的渲染效果如下。
![单日课表](/image/astrbot-plugin-schedule-1.png)
![单周课表](/image/astrbot-plugin-schedule-2.png)
上方预览效果是在插件设置中启用了忽略空行空列之后的效果。如果显示完全的话,那么完全没有课的行(时间段)和列(天)都会显示完整。
图片的标题由 LLM 决定,因此你可以通过提示词来让 LLM 生成更适合的标题。
此功能被包装为 LLM 工具,供 LLM 主动调用,需要在 Astrbot 中使用支持工具调用的模型。
## 技术路线
Astrbot 是使用 Python 构建的,其插件也使用 Python因此 NJUPT Suan 也使用 Python 构建。