{"id":45154651,"url":"https://github.com/astrbotdevs/astrbot-desktop","last_synced_at":"2026-03-07T05:15:44.395Z","repository":{"id":339355026,"uuid":"1161409654","full_name":"AstrBotDevs/AstrBot-desktop","owner":"AstrBotDevs","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-19T14:01:46.000Z","size":243,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-19T14:22:04.863Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AstrBotDevs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-19T04:25:10.000Z","updated_at":"2026-02-19T14:02:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AstrBotDevs/AstrBot-desktop","commit_stats":null,"previous_names":["astrbotdevs/astrbot-desktop"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/AstrBotDevs/AstrBot-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstrBotDevs%2FAstrBot-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstrBotDevs%2FAstrBot-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstrBotDevs%2FAstrBot-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstrBotDevs%2FAstrBot-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AstrBotDevs","download_url":"https://codeload.github.com/AstrBotDevs/AstrBot-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AstrBotDevs%2FAstrBot-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29640861,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T03:21:14.183Z","status":"ssl_error","status_checked_at":"2026-02-20T03:18:24.455Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-20T04:02:11.339Z","updated_at":"2026-02-22T12:29:50.407Z","avatar_url":"https://github.com/AstrBotDevs.png","language":"Rust","readme":"![AstrBot-Logo-Simplified](https://github.com/user-attachments/assets/ffd99b6b-3272-4682-beaa-6fe74250f7d9)\n\n\u003cdiv align=\"center\"\u003e\n\n# AstrBot Desktop\n\nAstrBot 桌面应用（Tauri）。\n\n\u003cp\u003e\n  \u003ca href=\"https://github.com/AstrBotDevs/AstrBot\"\u003e上游项目仓库\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n  \u003ca href=\"https://astrbot.app/\"\u003e官方文档\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\n\u003cimg src=\"https://img.shields.io/badge/Tauri-2.10.0-24C8D8?logo=tauri\u0026logoColor=white\" alt=\"Tauri 2.10.0\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Rust-1.86%2B-000000?logo=rust\" alt=\"Rust 1.86+\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Runtime-CPython%203.12-blue\" alt=\"CPython 3.12\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Upstream-AstrBotDevs%2FAstrBot-181717?logo=github\" alt=\"AstrBotDevs/AstrBot\"\u003e\n\n\u003c/div\u003e\n\n## 一键安装（推荐）\n\n如果你只想使用软件，不需要本地构建，请直接从 [`Releases`](https://github.com/AstrBotDevs/AstrBot-desktop/releases/latest) 下载对应系统的安装包。\n\n版本说明：\n\n- [正式版](https://github.com/AstrBotDevs/AstrBot-desktop/releases/latest)：适合大多数用户日常使用。\n- [Nightly 版](https://github.com/AstrBotDevs/AstrBot-desktop/releases/tag/nightly)：基于上游最新提交自动构建，适合提前体验新改动。\n- 下载时请按操作系统与 CPU 架构选择对应安装包。\n\n## 开源协议\n\n本项目采用 `AGPL-3.0` 开源协议，协议全文见：[`LICENSE`](./LICENSE)。\n\n## 手动构建\n\n推荐直接使用 Makefile：\n\n```bash\nmake deps\nmake prepare\nmake dev\nmake build\n```\n\n可用命令总览：\n\n```bash\nmake help\n```\n\n构建产物默认在 `src-tauri/target/release/bundle/`。\n\n## 常用维护命令\n\n```bash\nmake lint\nmake test\nmake doctor\nmake clean\nmake prune\n```\n\n`make test` 会执行：\n\n- Rust 全量单元测试（`cargo test --locked`）\n- 资源准备脚本行为测试（`pnpm run test:prepare-resources`，若本地无 `pnpm` 会跳过并提示）\n\n## 版本维护（重要）\n\n- `make update`：从上游同步版本（推荐日常使用）。\n- `make sync-version`：从当前解析到的 AstrBot 源同步版本（会受本地环境变量影响）。\n- `make build`：默认使用当前 `package.json` 的版本，可用 `ASTRBOT_DESKTOP_VERSION=...` 覆盖（支持 `v` 前缀，写入时会自动去掉）。\n\n桌面端版本会同步到：\n- `package.json`\n- `src-tauri/Cargo.toml`\n- `src-tauri/tauri.conf.json`\n\n### 常用环境变量\n\n- `ASTRBOT_SOURCE_GIT_URL` / `ASTRBOT_SOURCE_GIT_REF`：指定上游仓库与分支/标签（默认 `https://github.com/AstrBotDevs/AstrBot.git` + `master`）。\n- `ASTRBOT_SOURCE_DIR`：指定本地 AstrBot 源码目录（用于 `sync-version`/资源准备，`build` 也会读取）。\n- `ASTRBOT_BUILD_SOURCE_DIR`：仅用于本次 `make build` 的源码目录，优先级高于 `ASTRBOT_SOURCE_DIR`。\n- `ASTRBOT_DESKTOP_VERSION`：覆盖写入桌面版本号（支持 `v` 前缀，内部会归一化为无 `v`）。\n\n示例：\n\n```bash\nmake update\nmake update ASTRBOT_SOURCE_GIT_REF=v4.17.5\nmake build ASTRBOT_DESKTOP_VERSION=v4.17.5\nmake build ASTRBOT_BUILD_SOURCE_DIR=/path/to/AstrBot\n```\n\n清理构建相关环境变量：\n\n```bash\nmake clean-env\nsource .astrbot-reset-env.sh\n```\n\n\n## CI 版本同步策略\n\n- 定时构建（`schedule`）检测到上游新 tag 时，会先自动同步版本文件并提交，再继续构建。\n- 手动触发（`workflow_dispatch`）默认只构建，不自动回写版本文件。\n\n## 构建流程说明\n\n`src-tauri/tauri.conf.json` 配置了 `beforeBuildCommand=pnpm run prepare:resources`。构建时会自动完成：\n1. 拉取/更新 AstrBot 源码\n2. 构建并同步 `resources/webui`\n3. 准备 `resources/backend`（含运行时与启动脚本）\n4. 执行 Tauri 打包\n\n## 常见问题\n\n### macOS 提示“应用已损坏”或无法打开\n\n如果你是从网络下载的安装包，macOS 可能给 `AstrBot.app` 打上 quarantine 标记。可执行：\n\n```bash\nxattr -dr com.apple.quarantine /Applications/AstrBot.app\n```\n\n然后重新启动应用。如果应用不在 `/Applications`，请替换为实际路径。\n\n### 缺少 Node.js / npx / uvx\n\n部分 MCP 工具依赖 `node`/`npx` 或 `uvx`。可按下面方式安装并校验。\n\n1. 安装 Node.js（`npx` 随 npm 一起提供）\n\n- macOS（Homebrew）：\n\n```bash\nbrew install node\n```\n\n- Windows：\n  使用 Node.js 官方安装器安装 LTS 版本：\u003chttps://nodejs.org/\u003e\n- Linux（Debian/Ubuntu）：\n\n```bash\nsudo apt-get update\nsudo apt-get install -y nodejs npm\n```\n\n2. 安装 uv（提供 `uvx`）\n\n- macOS（Homebrew）：\n\n```bash\nbrew install uv\n```\n\n- 其他系统请参考官方安装文档：\u003chttps://docs.astral.sh/uv/getting-started/installation/\u003e\n\n3. 校验命令可用\n\n```bash\nnode -v\n# Debian/Ubuntu 某些环境中可执行文件名可能是 nodejs\nnodejs -v\nnpm -v\nnpx -v\nuvx --version\n```\n\n说明：有时会把 `npx` 误写为 `nvx`，正确命令是 `npx`。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrbotdevs%2Fastrbot-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastrbotdevs%2Fastrbot-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrbotdevs%2Fastrbot-desktop/lists"}