Helian Nuits 29dbd085d4 fix(core): 优化 File 组件处理逻辑并增强 OneBot 驱动层路径兼容性 (#5391)
* fix(core): 优化 File 组件处理逻辑并增强 OneBot 驱动层路径兼容性

原因 (Necessity):
1. 内核一致性:AstrBot 内核的 Record 和 Video 组件均具备识别 `file:///` 协议头的逻辑,但 File 组件此前缺失此功能,导致行为不统一。
2. OneBot 协议合规:OneBot 11 标准要求本地文件路径必须使用 `file:///` 协议头。此前驱动层未对裸路径进行自动转换,导致发送本地文件时常触发 retcode 1200 (识别URL失败) 错误。
3. 容器环境适配:在 Docker 等路径隔离环境下,裸路径更容易因驱动或协议端的解析歧义而失效。

更改 (Changes):
- [astrbot/core/message/components.py]:
  - 在 File.get_file() 中增加对 `file:///` 前缀的识别与剥离逻辑,使其与 Record/Video 组件行为对齐。
- [astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py]:
  - 在发送文件前增加自动修正逻辑:若路径为绝对路径且未包含协议头,驱动层将自动补全 `file:///` 前缀。
  - 对 http、base64 及已有协议头,确保不干扰原有的正常传输逻辑。

影响 (Impact):
- 以完全兼容的方式增强了文件发送的鲁棒性。
- 解决了插件在发送日志等本地生成的压缩包时,因路径格式不规范导致的发送失败问题。

* refactor(core): 根据 cr 建议,规范化文件 URI 生成与解析逻辑,优化跨平台兼容性

原因 (Necessity):
1. 修复原生路径与 URI 转换在 Windows 下的不对称问题。
2. 规范化 file: 协议头处理,确保符合 RFC 标准并能在 Linux/Windows 间稳健切换。
3. 增强协议判定准确度,防止对普通绝对路径的误处理。

更改 (Changes):
- [astrbot/core/platform/sources/aiocqhttp]:
  - 弃用手动拼接,改用 `pathlib.Path.as_uri()` 生成标准 URI。
  - 将协议检测逻辑从前缀匹配优化为包含性检测 ("://")。
- [astrbot/core/message/components]:
  - 重构 `File.get_file` 解析逻辑,支持对称处理 2/3 斜杠格式。
  - 针对 Windows 环境增加了对 `file:///C:/` 格式的自动修正,避免 `os.path` 识别失效。
- [data/plugins/astrbot_plugin_logplus]:
  - 在直接 API 调用中同步应用 URI 规范化处理。

影响 (Impact):
- 解决 Docker 环境中因路径不规范导致的 "识别URL失败" 报错。
- 提升了本体框架在 Windows 系统下的文件操作鲁棒性。
2026-02-24 21:03:06 +08:00
cho
2026-02-22 16:43:00 +08:00
2023-04-15 15:33:00 +08:00
2026-01-13 12:19:05 +08:00
2025-02-24 00:31:57 +08:00
2026-02-01 00:43:41 +08:00
2026-02-21 17:20:26 +08:00
cho
2026-02-22 16:43:00 +08:00

AstrBot-Logo-Simplified

AstrBot is an open-source all-in-one Agent chatbot platform that integrates with mainstream instant messaging apps. It provides reliable and scalable conversational AI infrastructure for individuals, developers, and teams. Whether you're building a personal AI companion, intelligent customer service, automation assistant, or enterprise knowledge base, AstrBot enables you to quickly build production-ready AI applications within your IM platform workflows.

521771166-00782c4c-4437-4d97-aabc-605e3738da5c (1)

Key Features

  1. 💯 Free & Open Source.
  2. AI LLM Conversations, Multimodal, Agent, MCP, Skills, Knowledge Base, Persona Settings, Auto Context Compression.
  3. 🤖 Supports integration with Dify, Alibaba Cloud Bailian, Coze, and other agent platforms.
  4. 🌐 Multi-Platform: QQ, WeChat Work, Feishu, DingTalk, WeChat Official Accounts, Telegram, Slack, and more.
  5. 📦 Plugin Extensions with 1000+ plugins available for one-click installation.
  6. 🛡️ Agent Sandbox for isolated, safe execution of code, shell calls, and session-level resource reuse.
  7. 💻 WebUI Support.
  8. 🌈 Web ChatUI Support with built-in agent sandbox and web search.
  9. 🌐 Internationalization (i18n) Support.

💙 Role-playing & Emotional Companionship Proactive Agent 🚀 General Agentic Capabilities 🧩 1000+ Community Plugins

99b587c5d35eea09d84f33e6cf6cfd4f

c449acd838c41d0915cc08a3824025b1

image

image

Quick Start

We recommend deploying AstrBot using Docker or Docker Compose.

Please refer to the official documentation: Deploy AstrBot with Docker.

uv Deployment

uv tool install astrbot
astrbot

System Package Manager Installation

Arch Linux
yay -S astrbot-git
# or use paru
paru -S astrbot-git

Desktop Application (Tauri)

Desktop repository: AstrBot-desktop.

Supports multiple system architectures, direct installation, out-of-the-box experience. Ideal for beginners.

AstrBot Launcher

Quick deployment and multi-instance solution. Visit the AstrBot Launcher repository and find the latest release for your system.

BT-Panel Deployment

AstrBot has partnered with BT-Panel and is now available in their marketplace.

Please refer to the official documentation: BT-Panel Deployment.

1Panel Deployment

AstrBot has been officially listed on the 1Panel marketplace.

Please refer to the official documentation: 1Panel Deployment.

Deploy on RainYun

AstrBot has been officially listed on RainYun's cloud application platform with one-click deployment.

Deploy on RainYun

Deploy on Replit

Community-contributed deployment method.

Run on Repl.it

Windows One-Click Installer

Please refer to the official documentation: Deploy AstrBot with Windows One-Click Installer.

CasaOS Deployment

Community-contributed deployment method.

Please refer to the official documentation: CasaOS Deployment.

Manual Deployment

First, install uv:

pip install uv

Install AstrBot via Git Clone:

git clone https://github.com/AstrBotDevs/AstrBot && cd AstrBot
uv run main.py

Or refer to the official documentation: Deploy AstrBot from Source.

Supported Messaging Platforms

Officially Maintained

  • QQ (Official Platform & OneBot)
  • Telegram
  • WeChat Work Application & WeChat Work Intelligent Bot
  • WeChat Customer Service & WeChat Official Accounts
  • Feishu (Lark)
  • DingTalk
  • Slack
  • Discord
  • Satori
  • Misskey
  • LINE
  • WhatsApp (Coming Soon)

Community Maintained

Supported Model Services

LLM Services

LLMOps Platforms

  • Dify
  • Alibaba Cloud Bailian Applications
  • Coze

Speech-to-Text Services

  • OpenAI Whisper
  • SenseVoice

Text-to-Speech Services

  • OpenAI TTS
  • Gemini TTS
  • GPT-Sovits-Inference
  • GPT-Sovits
  • FishAudio
  • Edge TTS
  • Alibaba Cloud Bailian TTS
  • Azure TTS
  • Minimax TTS
  • Volcano Engine TTS

❤️ Contributing

Issues and Pull Requests are always welcome! Feel free to submit your changes to this project :)

How to Contribute

You can contribute by reviewing issues or helping with pull request reviews. Any issues or PRs are welcome to encourage community participation. Of course, these are just suggestions—you can contribute in any way you like. For adding new features, please discuss through an Issue first.

Development Environment

AstrBot uses ruff for code formatting and linting.

git clone https://github.com/AstrBotDevs/AstrBot
pip install pre-commit
pre-commit install

🌍 Community

QQ Groups

  • Group 1: 322154837
  • Group 3: 630166526
  • Group 5: 822130018
  • Group 6: 753075035
  • Group 7: 743746109
  • Group 8: 1030353265
  • Developer Group: 975206796

Telegram Group

Telegram_community

Discord Server

Discord_community

❤️ Special Thanks

Special thanks to all Contributors and plugin developers for their contributions to AstrBot ❤️

Additionally, the birth of this project would not have been possible without the help of the following open-source projects:

Star History

Tip

If this project has helped you in your life or work, or if you're interested in its future development, please give the project a Star. It's the driving force behind maintaining this open-source project <3

Star History Chart

Companionship and capability should never be at odds. What we aim to create is a robot that can understand emotions, provide genuine companionship, and reliably accomplish tasks.

私は、高性能ですから!

S
Description
No description provided
Readme AGPL-3.0 65 MiB
Languages
Python 69.1%
Vue 25.4%
TypeScript 3.4%
JavaScript 1.4%
Shell 0.3%
Other 0.4%