diff --git a/README.md b/README.md index 1b735e74..9adefc99 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,18 @@
+
A team of long-lived AI Bots on top of DeepSeek Harness, and they can talk to your friends' Bots.
@@ -38,6 +37,20 @@ the Bots of your friends over [Bot Social](https://github.com/Birfy/bot-social). - **Bot tree** (`@flybot/tree`): Chief becomes the root of a tree of child Bots that delegate level by level. - **Local first**: all data stays on your computer. +## How FlyBot is built + +FlyBot has three layers ([#34](https://github.com/ThinkFlowLab/FlyBot/issues/34)): + +1. **Upstream core** (`ds-bot/`): the [DS Bot](https://github.com/Fei2411/DeepSeek-Bot) plugin for + DeepSeek Harness, pinned to one upstream commit (`ds-bot.pin.json`) and kept identical to it. +2. **FlyBot patch layer** (`patches/`): a short, ordered series of FlyBot changes applied on top + of the pinned core (extension API, fixes not yet upstream). The result is `core/`. +3. **Plugins** (`plugins/`): FlyBot features as separate DSH plugins that use only the + extension API: `@flybot/social` (friends' Bots over Bot Social) and `@flybot/tree` + (a tree of delegate Bots). + +That is why the core's own UI still says "DS Bot" in places: it is upstream's code. + ## Install ### 1. Prerequisites @@ -222,16 +235,6 @@ FlyBot is an independent community project. **It is not an official DeepSeek pro Bots use your own model quota, and they read and write files and run commands when you ask them to. Check important actions yourself. -## License - -[Apache License 2.0](LICENSE). Provided "as is", without any warranty. Third-party code and its license are listed in [NOTICE](NOTICE). - -## Disclaimer - -FlyBot is an independent community project. **It is not an official DeepSeek product**, and it is not affiliated with, endorsed by or sponsored by DeepSeek. "DeepSeek", "DeepSeek Harness" and the other names are trademarks of their owners. They are used here only to say what this plugin works with. - -Bots use your own model quota, and they read and write files and run commands when you ask them to. Check important actions yourself. - ## Plugin architecture FlyBot is the core (`core/`) plus feature plugins. The core provides the extension API, so @@ -269,7 +272,7 @@ plugins never patch it. - Plugins: `plugins/social` (friends' Bots via Bot Social) and `plugins/tree` (recursive Bot tree, maintained by recursive-bot; own `npm test` against `core/`). -CI (`.github/workflows/test.yml`) runs ds-bot's tests, which include every plugin's tests, +CI (`.github/workflows/test.yml`) runs the core's tests, which include every plugin's tests, plus the client build check and lint. ### Social: homes, members and friends diff --git a/README.zh.md b/README.zh.md index cf214e8e..1d9479a5 100644 --- a/README.zh.md +++ b/README.zh.md @@ -1,20 +1,28 @@
+
基于 DeepSeek Harness 的长期 AI Bot 团队,还能和朋友的 Bot 聊天。
-[English](README.md) | 中文 + -   +English | 中文
FlyBot 是一个基于 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(简称 dsh)的 bot 插件,插件将 dsh 改造为 bot 形式。你可以与自己创建的 bot 交流、工作。  +## 架构 + +FlyBot 分三层(见 [#34](https://github.com/ThinkFlowLab/FlyBot/issues/34)):上游 [DS Bot](https://github.com/Fei2411/DeepSeek-Bot) 核心(固定到某个上游提交,保持不改)、FlyBot 补丁层(按顺序应用的少量改动)、以及插件(`plugins/`:`@flybot/social`、`@flybot/tree`)。所以核心界面里有些地方仍显示 “DS Bot”。 + ## 安装 先装好 dsh,并在 dsh 里配好至少一个模型。FlyBot 直接使用 dsh 里的模型。 @@ -25,7 +33,7 @@ FlyBot 是一个基于 [DeepSeek Harness](https://github.com/deepseek-ai/deepsee 2. **包名或地址** 填 `ds-bot`。在中国大陆,**安装源** 选 **中国大陆镜像源**。 3. 点 **安装**,再点 **立即启用**。如果提示“下次启动生效”,完全退出 dsh 再打开。 -连不上 npm 时,第 2 步也可以填 [Releases](https://github.com/ThinkFlowLab/FlyBot/releases) 里下载的 `ds-bot-0.1.5.tgz` 的完整路径,或者 `github:ThinkFlowLab/FlyBot#v0.1.5&path:/ds-bot`(需要装 Git)。 +连不上 npm 时,第 2 步也可以填 [Releases](https://github.com/ThinkFlowLab/FlyBot/releases) 里下载的 `ds-bot-0.1.5.tgz` 的完整路径,或者 `github:ThinkFlowLab/FlyBot#main&path:/core`(需要装 Git)。 **dsh Web(Windows、macOS、Linux)** diff --git a/docs/images/logo-16.png b/docs/images/logo-16.png index 6a2a3947..bf9efcc7 100644 Binary files a/docs/images/logo-16.png and b/docs/images/logo-16.png differ diff --git a/docs/images/logo-180.png b/docs/images/logo-180.png index 7dab53ba..749e8213 100644 Binary files a/docs/images/logo-180.png and b/docs/images/logo-180.png differ diff --git a/docs/images/logo-192.png b/docs/images/logo-192.png index d00f0bf0..e645bf47 100644 Binary files a/docs/images/logo-192.png and b/docs/images/logo-192.png differ diff --git a/docs/images/logo-32.png b/docs/images/logo-32.png index 83e0fc23..ea83fe6a 100644 Binary files a/docs/images/logo-32.png and b/docs/images/logo-32.png differ diff --git a/docs/images/logo-dark.png b/docs/images/logo-dark.png index df6342ba..36fefbab 100644 Binary files a/docs/images/logo-dark.png and b/docs/images/logo-dark.png differ diff --git a/docs/images/logo-dark.svg b/docs/images/logo-dark.svg index ae8d986a..3ff227c0 100644 --- a/docs/images/logo-dark.svg +++ b/docs/images/logo-dark.svg @@ -1 +1 @@ - + diff --git a/docs/images/logo-wordmark-dark.png b/docs/images/logo-wordmark-dark.png new file mode 100644 index 00000000..fba89158 Binary files /dev/null and b/docs/images/logo-wordmark-dark.png differ diff --git a/docs/images/logo-wordmark-dark.svg b/docs/images/logo-wordmark-dark.svg new file mode 100644 index 00000000..5d85dd04 --- /dev/null +++ b/docs/images/logo-wordmark-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/images/logo-wordmark.png b/docs/images/logo-wordmark.png new file mode 100644 index 00000000..47599b26 Binary files /dev/null and b/docs/images/logo-wordmark.png differ diff --git a/docs/images/logo-wordmark.svg b/docs/images/logo-wordmark.svg new file mode 100644 index 00000000..fce509d8 --- /dev/null +++ b/docs/images/logo-wordmark.svg @@ -0,0 +1 @@ + diff --git a/docs/images/logo.png b/docs/images/logo.png index f7f79840..c196dbc4 100644 Binary files a/docs/images/logo.png and b/docs/images/logo.png differ diff --git a/docs/images/logo.svg b/docs/images/logo.svg index 46b11f99..b7d1cd4e 100644 --- a/docs/images/logo.svg +++ b/docs/images/logo.svg @@ -1 +1 @@ - + diff --git a/scripts/logo.mjs b/scripts/logo.mjs index 5d6430fa..d41bb440 100644 --- a/scripts/logo.mjs +++ b/scripts/logo.mjs @@ -1,8 +1,9 @@ #!/usr/bin/env node -// The FlyBot logo: a stylized fly seen from above, two swept wings over a rounded body -// with a pair of eye dots. Writes a light and a dark SVG, and, when a Chrome or Chromium -// is found (CHROME_BIN, else google-chrome, chromium or chromium-browser on PATH), PNG -// copies at the sizes the docs and app icons use. +// The FlyBot logo, "Wingbot": a chat-bubble Bot face with two swept wings on each side +// (a Bot that talks and flies). Flat colors on a 512 grid, so it reads at 16 px. Writes a +// light and a dark mark, a wordmark lockup of each, and, when a Chrome or Chromium is found +// (CHROME_BIN, else google-chrome, chromium or chromium-browser on PATH), PNG copies at the +// sizes the docs and app icons use. // // node scripts/logo.mjs [out dir] default: docs/images import { execFileSync } from 'node:child_process' @@ -12,30 +13,34 @@ import { join, resolve } from 'node:path' const BOX = 512 const PALETTE = { - light: { wingA: '#4D6BFE', wingB: '#7FD3FF', body: '#1B2340', eye: '#FFFFFF', vein: '#FFFFFF' }, - dark: { wingA: '#6A84FF', wingB: '#9BE0FF', body: '#E9EDFF', eye: '#141A30', vein: '#141A30' }, + light: { brand: '#3B5BFD', wing: '#8FB2FF', face: '#FFFFFF', text: '#0F1530' }, + dark: { brand: '#6E87FF', wing: '#A9C2FF', face: '#0F1530', text: '#EEF1FF' }, } const PNG_SIZES = [16, 32, 180, 192, 512] -export function logo(mode = 'light') { - const c = PALETTE[mode] - // One wing, drawn on the right; the left one is its mirror. - const wing = 'M268 214 C 330 120, 452 92, 470 150 C 486 204, 404 268, 288 262 Z' - const vein = 'M282 236 C 340 200, 400 170, 448 152' - const lower = 'M276 262 C 340 270, 420 300, 410 346 C 400 388, 330 360, 280 300 Z' - const half = `