Soulter
94591d965b
feat: supports thinking level of google gemini ( #4104 )
...
* feat: supports thinking level of google gemini
- Updated google-genai version to >=1.56.0 in pyproject.toml and requirements.txt.
- Changed model configuration from "gemini-1.5-flash" to "gemini-3-flash-preview" in default.py.
- Enhanced thinking configuration handling in gemini_source.py to support new parameters for Gemini 3 models.
* fix: standardize thinking level configuration in default.py and gemini_source.py
- Updated the thinking level values in default.py to uppercase for consistency.
- Enhanced gemini_source.py to validate the thinking level and default to "HIGH" if an invalid value is provided.
2025-12-18 17:15:01 +08:00
Soulter
8a0f865af1
feat: enhance tool call handling and agent stats tracking and UI integration for tool calls render ( #4101 )
...
* feat: enhance tool call handling and UI integration for tool calls render
- Added support for tool call messages in the agent runner and webchat event handling.
- Implemented JSON message component for structured tool call data.
- Updated chat route to save tool call information in message history.
- Enhanced frontend to display tool call details in a collapsible format, including status and results.
- Introduced elapsed time tracking for ongoing tool calls in the chat interface.
* fix: improve message handling in agent run utility and tool loop runner
- Refactored message sending logic in `astr_agent_run_util.py` to use `msg_chain` directly for better clarity.
- Added a check in `tool_loop_agent_runner.py` to ensure `tool_call_result_blocks` is not empty before yielding the last tool call result, preventing potential errors.
* refactor: enhance message structure and UI for chat components
- Updated message handling in `MessageList.vue` to support structured message parts, including plain text, images, audio, and files.
- Improved the `Chat.vue` component styles for better visual consistency.
- Refactored message parsing logic in `useMessages.ts` to accommodate new message formats and ensure proper rendering of embedded content.
- Removed deprecated tool call handling from the message structure, streamlining the message display process.
* chore: ruff format
* feat: implement agent statistics tracking and display in chat
- Added `AgentStats` and `TokenUsage` data classes to track agent performance metrics.
- Enhanced `ToolLoopAgentRunner` to collect and update agent statistics during execution.
- Integrated agent statistics sending to webchat for real-time updates.
- Updated chat route to save and display agent statistics in message history.
- Improved frontend components to visualize agent statistics, including token usage and duration metrics.
* fix: improve message handling in Telegram event and agent run utility
- Updated message sending logic in `astr_agent_run_util.py` to send the correct message chain for tool calls.
- Enhanced `tg_event.py` to edit messages during streaming breaks, improving message management and user experience.
- Added error handling for message editing failures to ensure robustness.
* chore: ruff format
2025-12-18 17:11:09 +08:00
Soulter
4aced976a8
refactor: update OneBot configuration and add platform logo ( #4106 )
...
- Renamed "QQ 个人号(OneBot v11)" to "OneBot v11" in the configuration.
- Added a new logo for OneBot in the dashboard assets.
- Updated platform icon retrieval logic to include the new OneBot logo.
2025-12-18 15:19:15 +08:00
Soulter
0299aa6e4c
fix: validation error for ToolCall.extra_content in specific upstream model providers ( #4102 )
...
* fix: validation error for ToolCall.extra_content in specific upstream model providers
* fix: handle missing extra_content gracefully in ToolCall serialization
2025-12-18 11:55:49 +08:00
Soulter
fd05b0bf09
docs: update contributing guidelines to include code style and formatting instructions
2025-12-17 13:26:22 +08:00
Copilot
58e32b7b70
fix: inverted logic in segmented reply LLM-only filter ( #4071 )
...
* Initial plan
* Fix: Correct inverted logic in is_seg_reply_required for only_llm_result option
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2025-12-17 11:12:05 +08:00
Oscar Shaw
80b89fd2ea
feat: implements command management and improve webui feature structure ( #3904 )
...
move mcp management to plugin managemanet page
* feat: 新增命令配置数据库模型
* feat: 实现核心命令管理系统
* feat: 将命令管理集成到 Star 框架
* feat: 新增命令管理后台 API
* feat: 新增命令管理界面页面
* feat: 新增命令管理国际化支持
* test: 新增命令管理相关测试
* refactor(command): 移除指令重命名时的别名功能
* fix(command): 修正指令冲突检测逻辑
* fix(command): 排除已禁用指令的冲突检测
- 只有 `effective_command` 存在且 `enabled` 为 `True` 的指令才会被纳入冲突检测范围。
* feat(command): 优化指令冲突显示与提示
- 【功能】新增指令冲突警告提示,当检测到冲突时显示详细信息及解决方案。
- 【优化】调整指令列表排序逻辑,将冲突指令优先显示并分组。
- 【样式】为冲突指令行添加专属高亮样式,提升视觉识别度。
- 【国际化】更新英文和中文多语言文件,增加指令冲突警告相关的翻译文本。
* chore(command-page): 禁用命令表格部分列的排序功能
* style(command-page): 调整命令页面表格样式和图标大小
* refactor(command): 优化指令页面布局并更新冲突警告
- 【布局优化】重新组织指令管理页面布局,将筛选器移至顶部独立行
- 【信息展示】将搜索栏与总指令数、已禁用指令数合并显示,提升页面空间利用率
- 【视觉更新】更新指令冲突警告样式
* style: UI 细节
* refactor(command): 调整指令管理中的成员权限显示与筛选
- 更新指令筛选逻辑,当选择“所有人”权限筛选时,将同时包含 `everyone` 和 `member` 权限的指令。
* feat(command-management): 新增指令层级管理与UI展示
- 【后端】
- `CommandDescriptor` 新增 `parent_group_handler` 和 `sub_commands` 字段,支持指令层级结构定义。
- `list_commands` 函数重构,实现指令的层级收集与构建,将子指令正确挂载到其父指令组下。
- 新增 `_collect_all_descriptors` 和 `_find_parent_group_handler` 辅助函数,用于全面收集指令并定位父指令组。
- `_build_descriptor` 优化指令类型判断逻辑,明确区分普通指令、指令组和子指令。
- `_descriptor_to_dict` 递归处理子指令,确保 API 返回完整的指令层级数据。
- 【前端】
- 指令管理页面 (`CommandPage.vue`) 增加指令类型筛选器,并支持指令组的展开/折叠功能。
- 表格展示优化,为指令组和子指令添加不同的样式和缩进,提升层级结构的视觉可读性。
- 指令详情对话框新增指令类型、所属指令组和子指令列表的展示。
- 更新 `CommandItem` 接口,以适配后端提供的层级数据结构。
- 【i18n】
- 新增指令类型(指令、指令组、子指令)的国际化文本。
- 更新指令管理相关 UI 文本,包括表格头部、详情对话框字段和筛选器选项。
* style(command): 优化指令组子指令数量显示UI
* refactor(command): 修改指令列表排序逻辑
* style(command-page): 优化命令列表UI
* feat(command): 添加系统插件指令过滤与冲突处理
* refactor(command): 更新指令数展示逻辑
* style(command): 更新空状态描述
* feat(extension): 添加插件指令冲突检测与提示
- 在插件安装或启用后,自动检测并提示指令冲突。
- 当检测到指令冲突时,显示警告对话框,告知用户冲突数量及可能的影响。
* refactor(command): 移除指令表格内部加载指示器
* style(extension): 文案修改
* refactor(command): 模块化指令管理面板前端代码
* refactor(commandPanel): 重命名指令模块目录为 commandPanel
* style(commandPanel): 微调指令面板UI
* fix(command): 确保新命令配置的事务提交
* fix(sidebar): 补全新增侧边栏项后的侧边栏位追加逻辑
* refactor(commands): 重构/help指令以动态显示实际命令并补充部分命令描述
* style(builtin_commands): 补充命令描述
* refactor(commandPanel): 移除未使用的 filterState 常量
* perf(dashboard): 删除多余的CommandPage.vue文件(已被模块化引用)
* perf(command): 优化命令冲突计数逻辑
* perf(command): 优化指令管理辅助函数和配置绑定逻辑
* perf(db): 优化重构command相关数据库操作
* refactor(sidebar): 提取侧边栏项目解析逻辑到工具函数复用
* refactor: move mcp and command page to extension page
* refactor: remove unused imports in component panel
* fix: update terminology for handler management in extension localization
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-12-16 20:24:57 +08:00
Soulter
26f863ba81
Revert "fix: omit empty content field for the LLM request after tool calls ar…" ( #4068 )
...
This reverts commit f78a90218e .
2025-12-16 20:22:13 +08:00
sctop
f78a90218e
fix: omit empty content field for the LLM request after tool calls are completed ( #4008 )
...
* fix: omit content field for the LLM request after tool calls are completed and content is empy string or none
* chore: ruff format
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-12-16 20:11:11 +08:00
Soulter
a3ecebd2aa
fix: correct text accumulation logic in webchat ( #4066 )
2025-12-16 19:35:41 +08:00
Soulter
aaee283367
fix: type checking of AstrAgentContext
2025-12-16 10:09:57 +08:00
Soulter
4a5b7d1976
fix: type checking of contextwrapper
2025-12-16 09:59:56 +08:00
Sukafon
08244548ab
fix: incorrect type assignment when the agent send an image ( #4050 )
2025-12-16 08:28:10 +08:00
dependabot[bot]
b486de6a98
chore(deps): bump actions/upload-artifact in the github-actions group ( #4061 )
...
Bumps the github-actions group with 1 update: [actions/upload-artifact](https://github.com/actions/upload-artifact ).
Updates `actions/upload-artifact` from 5 to 6
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-16 08:24:03 +08:00
Soulter
e2f928a7e5
chore: bump version to 4.9.2
v4.9.2
2025-12-15 16:58:32 +08:00
Soulter
b8e4068c75
feat: support key-value storage for plugins ( #4048 )
...
* feat: support key-value storage for plugins
* fix: remove unnecessary initialization method from Main class
2025-12-15 16:50:44 +08:00
Soulter
0916177a57
chore: bump version to 4.9.1
v4.9.1
2025-12-15 16:07:10 +08:00
Soulter
02cd5e396b
feat: add trigger probability setting for TTS and support to render slider in schema ( #4047 )
...
* feat: add trigger probability setting for TTS and support to render slider in schema
* chore: ruff format
2025-12-15 16:04:27 +08:00
Soulter
56673ad78f
fix: prevent duplicate result content type after streaming finishes in RespondStage
2025-12-15 15:33:40 +08:00
Soulter
9a4d05e2b6
fix: remove unnecessary persistent attribute from ReadmeDialog and adjust dialog structure in ExtensionPage
2025-12-15 15:27:42 +08:00
Soulter
c3f45449e8
docs: readme
...
wa ta shi wa ko sei no de su ka ra!
2025-12-15 11:47:21 +08:00
Copilot
65da469deb
feat: add conversation export feature to JSONL for AI training ( #4037 )
...
* Initial plan
* Add conversation export functionality (backend and frontend)
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
* Address code review feedback: move imports, simplify logic, improve i18n
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
* Simplify frontend download logic: remove redundant Blob wrapper and complex filename parsing
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
* fix: update conversation export filename format for consistency
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
2025-12-14 21:44:12 +08:00
Soulter
16df64c405
fix: lark domain and log_level of Lark API client ( #4038 )
...
fixes : #4035
2025-12-14 21:31:17 +08:00
i0cLiceao
6b73b19e54
fix: support using GitHub Raw content as plugin source ( #3975 )
...
* Update plugin.py
* Update plugin.py
* Update plugin.py
* Update plugin.py
2025-12-14 18:23:29 +08:00
Soulter
e7e97730af
chore: bump version to 4.9.0
v4.9.0
2025-12-13 18:49:07 +08:00
Soulter
467ca1eb5c
fix: webui log output incompletely ( #4029 )
...
* fix: webui log output incompletely
* fix: improve SSE log parsing to handle partial data chunks
* fix: enhance log handling by implementing local cache and fetching history
* fix: log time handling to use epoch time
2025-12-13 18:46:16 +08:00
RC-CHN
46528391c2
feat: add pre-chunk import strategy for knowledge base ( #3973 )
...
* feat: 添加文档导入功能及相关测试
* feat: 优化文档上传功能,支持从文件名推断文件类型,并增强文档切片验证
* feat: 添加文档导入功能的无效输入测试,验证 chunks 类型和内容的错误处理
* refactor: 重构文档上传和导入任务的状态管理,添加任务初始化、结果设置和进度更新方法
2025-12-12 23:15:11 +08:00
Soulter
8a0b7717cc
feat: supports webhook mode for Lark platform ( #4016 )
...
* feat: add Lark platform support with unified webhook configuration
* fix: update token verification logic in LarkWebhookServer
* feat: implement event deduplication and cleanup for Lark webhook events
2025-12-12 22:12:13 +08:00
Copilot
3b81fb4985
fix: mobile dialog close button visibility ( #4010 )
...
* Initial plan
* Fix mobile dialog close button visibility by adding max-height and scrollable content
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2025-12-12 16:02:24 +08:00
Soulter
c09d57a820
refactor: improve UI layout and interaction for list item management ( #4002 )
...
* refactor: improve UI layout and interaction for list item management
* feat: enhance list configuration UI with batch import functionality
* feat: add internationalization support for list configuration UI
2025-12-11 18:55:56 +08:00
Soulter
ec408a2aff
fix: lark message timestamp
2025-12-11 18:20:50 +08:00
Soulter
417179a6b9
ci: add smoke test
2025-12-11 10:44:15 +08:00
Soulter
fcd29445c7
refactor: remove unused current provider initialization in StarRequestSubStage
2025-12-11 10:36:33 +08:00
BiDuang
5f535001db
fix: incorrect modalities enum of gemini api provider ( #3993 )
2025-12-10 20:27:51 +08:00
PaloMiku
750d245b16
docs: Update README with new Zread link and badges ( #3992 )
...
ZRead 是由智谱 AI 推出的 DeepWiki 类似平替品。
2025-12-10 20:22:56 +08:00
Dt8333
f624971613
chore: fix bunches of type checking errors ( #3213 )
...
* chore(core.utils): 🚨 修正错误Lint
* chore(core.provider): 🚨 修复基类错误Lint
* chore(core.utils): 补全session_get()的重载
* chore(core.provider): 🚨 修正实现错误Lint
* chore(core.platform): 🚨 修正platform基类和webchat的错误Lint
* chore(core.platform): 修正错误实现Lint
* fix(core.provider): 修复循环调用和错误assert
* chore(core.platform): 修复部分实现Lint
* chore(core.provider): 补充Dify.text_chat_stream的参数类型
* chore(core.pipeline): 🚨 修复错误Lint
* fix(core.slack): 补充遗漏导入
* chore(core.utils): 修复错误的session_get声明
* chore(core.platform): 移除Lark adapter import中的wildcard
* chore(core.db): 修复声明和部分逻辑
* chore(core.db): 添加typings,使faiss参数能被正确识别。
* chore(core): 修复声明
* chore(core): 修改声明
* chore: 补充faiss声明
* chore(dashboard): 修改实现,减少报错
* chore(package): 修改部分声明与实现,减少报错
* chore(core): 添加Handler的overload,以去除部分assert同时通过类型检查
* chore(core.pipeline): 修改Pipeline Scheduler的execute,将判断属性改为判断类型,通过静态类型检查
* chore(core.config): 添加类型标注,通过类型检查
* chore(core.message): 为File._download_file添加检查,通过类型检查
* fix: 将断言改为条件判断以实现优雅关闭的容错性
* refactor: 移除 discord 客户端中的 assert,改用 if None 判断并抛出异常
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: DiscordPlatformAdapter 对 self.client.user 为 None 做日志并返回,移除断言
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 增强 Lark 相关空值/异常检查并完善日志输出
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 将断言替换为条件检查并加入日志与错误处理
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* chore: 移除LLM生成的无用注释
* refactor: 使用 File.get_file 替换下载逻辑并移除 assert,提供默认 filename
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: Slack Socket 未初始化抛出运行时异常,图片 URL 判空改为非空判断
* refactor: 将 WeChatPadProAdapter 的断言改为空值判断并添加日志
* refactor: 使用 isinstance 替代断言实现类型判断,便于静态检查
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 去除cast,直接使用字段与字典访问,修正端口解析
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 使用 match-case 重构 ProviderManager 加载并通过类型检查抛出 TypeError
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: group_name_display 时若 group 对象为空则记录错误并返回
* fix: 将 _get_current_persona_id 的 assert 替换成 if guard 并返回 None
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 优化插件目录存在性检查及图片URL非空验证,更新JSON排序配置
* fix: 将 datetime_str 的 assert 替换为显式检查并抛出异常
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除 cast,改为运行时检查并在找不到调度器时跳过
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除 cast,改用 isinstance 检查 FaissVecDB 并警告
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 删除 typing.cast 导入,并在获取文件绝对路径前校验 file_
* refactor: 移除 typing.cast,简化内容安全检查调用
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 将 PlatformMetadata.id 设为必填并在注册时传入 id,移除 cast
* refactor: 移除 cast,改用 HasInitialize 与 isinstance 进行初始化
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 为 ProviderManager.initialize 增加ID类型判断,避免 None 导致 get 失败
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 为 OTTSProvider 与 AzureNativeProvider 引入 _client 与 client 属性改进上下文管理
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 为 Whisper 自托管源添加模型未初始化校验并直接调用 transcribe
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除未使用的 cast 导入并简化 platform_name 赋值
* refactor: 引入 cast 并对 id 使用 cast(str, ...) 提升类型安全
* fix: 将 _id_to_sid 返回改为 str,空值返回空串;对 id 与 message_id 使用 cast
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 重构 Discord 处理逻辑:强制 类型转换、优先斜杠指令并优化提及判断
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 统一对 id 获取执行 cast,并在微信消息解析失败时抛错
* Revert "fix: 去除cast,直接使用字段与字典访问,修正端口解析"
This reverts commit 1cbfdf9d1b .
* fix: 百炼 Rerank 会话关闭时返回空结果;初始化 request.prompt 避免空值拼接
* fix: 统一处理搜索结果链接为字符串,新增 _get_url 助手并适配 Bing/Sogo
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 调整 call_handler 泛型、Discord 通道注解及 FishAudioTTS API 请求类型
* refactor: 使用 col(...) 替代列引用并对结果进行 CursorResult 强转
* chore: ruff format
---------
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
Co-authored-by: Soulter <905617992@qq.com >
2025-12-09 14:13:47 +08:00
Soulter
aa6d07afcc
refactor: move all internal commands from astrbot plugin to default_command plugin ( #3960 )
...
* refactor: move all internal commands from astrbot plugin to default_command plugin
* ruff check
* feat: add config
* ruff check
2025-12-08 22:17:32 +08:00
Soulter
2c36649874
feat: add Agent Runner test prompt dialog in ProviderPage ( #3968 )
2025-12-08 21:46:47 +08:00
Soulter
c95735dcc0
docs: update readme
2025-12-08 12:05:57 +08:00
Soulter
03bb278f50
chore: ruff check
2025-12-08 11:00:43 +08:00
Soulter
a5e0974da3
chore: ruff format
2025-12-08 00:36:56 +08:00
vmoranv
f0fb447fbc
feat: custom plugin api source manager ( #3956 )
...
* feat: custom plugin api source manager
* fix: rename plugin source file in a safer way
* chore: turned the way of saving plugin source to backend and refacted some components
* style: clean up whitespace and improve logging message formatting
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-12-08 00:32:50 +08:00
Soulter
37566182b0
feat: segment reply supports segmentation words ( #3959 )
...
* feat: segment reply supports segmentation words
* chore: ruff format
* feat: enhance segmented reply processing by refining word extraction logic
* ruff format
2025-12-08 00:27:17 +08:00
Soulter
e460b411da
chore: remove dev version from webui ( #3951 )
...
* chore: remove dev version
* chore: remove development version references from header localization files
2025-12-07 15:23:30 +08:00
Soulter
e14ed804da
chore: bump version to 4.8.0
v4.8.0
2025-12-05 19:09:56 +08:00
Oscar Shaw
8e4e49df20
fix: not invoke on_llm_response hook when LLM request has error ( #3871 )
...
* fix: handle on_agent_done in error responses
- Introduced an LLMResponse for error messages to be processed by agent hooks, ensuring better error reporting and handling.
* fix: improve error logging in on_agent_done hook
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2025-12-05 16:13:46 +08:00
Oscar Shaw
5d856900ef
perf: some UI/UX fixes, change Console to Platform Logs ( #3873 )
...
* refactor: 统一‘平台日志’文案
* perf: 优化自动滚动开关键操作逻辑
* perf: add tooltips to save and code editor buttons
2025-12-05 16:02:20 +08:00
Soulter
380a68b96c
chore: add CONTRIBUTING.md
2025-12-05 15:59:18 +08:00
易推倒白毛
8879bd7e9d
fix: add supports for Whisper with QQ amr audio file
...
* fix: Whisper API对QQ语音amr文件的支持
* Update whisper_api_source.py
* fix: cleanup temporary files in Whisper API
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-12-05 15:41:37 +08:00
RC-CHN
2cce09400f
feat: add Kubernetes manifests for astrbot and napcat deployment with services and persistent storage ( #3901 )
...
* feat: add Kubernetes manifests for astrbot and napcat deployment with services and persistent storage
* chore: remove 11451 port
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-12-04 20:36:35 +08:00