本仓库已迁移至 drewnekota/aibo。 这份副本不再维护,请到新仓库提 issue 和 pull…
36.4/100
综合分
5
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add omdsh-dev/dsh-gal该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
3 张 · 点击查看大图功能亮点
- 动态表情
- LLM情绪判定
DeepSeek Harness 的 Galgame / 视觉小说 UI 插件:鲸鱼娘伴侣,表情会动,对话逐场景推进,还有 LLM 情绪判定
README
由 DeepSeek 最新模型翻译生成Aibo
[!IMPORTANT]
本仓库已迁移至 drewnekota/aibo。 这份副本不再维护,请到新仓库提 issue 和 pull request。
给你的智能体一张脸、一副嗓子,还有一间属于她自己的房间。
Aibo(相棒,伙伴)是个人 AI 助手,长着一张 galgame 的脸。底下跑的是 DeepSeek Harness(dsh)——同一个智能体、同一套工具、同一个会话、同一份预设。上面给这个智能体配了角色,于是你能看见她干活、听见她回话,还能把她做出来的东西留下来。它以 dsh 插件的形式发布,另外附带一个小巧的 macOS 应用,可以独立运行。
桌面宠物 · 实时角色舞台 · 语音回复 · 清单与文件 · 记忆 · 个人数据连接器 · Computer Use
Aibo —— 聊天布局:左边是对话,右边是角色,她会跟着智能体的动作做出反应
0.2.0 新增:桌面上的伙伴
小黑鱼现在会待在主窗口外面陪着你。打开 Settings → Desktop pet,然后用 ⌘W 关掉主窗口,或者用 ⌘H 把它藏起来。她是否在主窗口开着时也出现,由你决定;她的尺寸和位置会被记住。⌘Q 退出应用,同时结束它启动的智能体进程。
小黑鱼桌面宠物:一个回复气泡和一个紧凑的思考气泡,用的是真正的宠物渲染器
- 安静的对话。
展开完整文档(README 剩余 1 节)
Aibo
[!IMPORTANT]
本仓库已迁移至 drewnekota/aibo。 这份副本不再维护,请到新仓库提 issue 和 pull request。
给你的智能体一张脸、一副嗓子,还有一间属于她自己的房间。
Aibo(相棒,伙伴)是个人 AI 助手,长着一张 galgame 的脸。底下跑的是 DeepSeek Harness(dsh)——同一个智能体、同一套工具、同一个会话、同一份预设。上面给这个智能体配了角色,于是你能看见她干活、听见她回话,还能把她做出来的东西留下来。它以 dsh 插件的形式发布,另外附带一个小巧的 macOS 应用,可以独立运行。
桌面宠物 · 实时角色舞台 · 语音回复 · 清单与文件 · 记忆 · 个人数据连接器 · Computer Use
Aibo —— 聊天布局:左边是对话,右边是角色,她会跟着智能体的动作做出反应
0.2.0 新增:桌面上的伙伴
小黑鱼现在会待在主窗口外面陪着你。打开 Settings → Desktop pet,然后用 ⌘W 关掉主窗口,或者用 ⌘H 把它藏起来。她是否在主窗口开着时也出现,由你决定;她的尺寸和位置会被记住。⌘Q 退出应用,同时结束它启动的智能体进程。
小黑鱼桌面宠物:一个回复气泡和一个紧凑的思考气泡,用的是真正的宠物渲染器
- 安静的对话。 回复显示在圆角漫画对话气泡里,字体和主应用一致。思考时是三个点;只有需要处理的错误和需要你输入的请求才会显示状态文字。点一下消息就能回到对话。
- 简单的互动。 拖拽可以移动她;拎起、悬空、朝各方向移动和落地各有自己的动画。右键打开原生菜单。尺寸和显示开关都在 Settings 里。
- 待机也活着。 普通的鼠标移动不会打断待机。她的视线只跟随快速启动器的文本光标,或者 Computer Use 明确指定的目标,光标优先。
- 105 个动画帧。 任务反应、十六个注视方向和保持姿势,再加上三段八帧的梗动画:吃白米饭、盖毯子小睡、翻书页。符合条件的空闲持续 30–60 秒后,随机播放一段梗动画,只播一次,避免紧接着重复,遇到任务和交互就让位。开启「减弱动态效果」后,不再自动播放梗动画。
空闲梗动画预览:白米饭、惬意小睡和阅读
上面的图片是受控预览,带示例文字,由随包发布的素材渲染而成,不含任何私人对话。动画布局、播放和美术素材来源:Desktop pet、meme series。
本次发布还新增了 Thinking level 偏好,所选模型支持时默认 low,并修复了快速启动器里 Escape 关闭的问题。已签名的 macOS 更新会自动检查;从 0.2.0 起,原生提示会让你下载/安装,并自行选择何时重启。已有的 0.1.0 安装,这次首次升级请用 更新 → 检查更新。
下载最新的已签名 macOS 版本 · Apple Silicon · macOS 12+
演示
https://github.com/user-attachments/assets/261b456b-f147-46f5-942a-32c67d12dc2d
两分半钟:她记住一项偏好,查周末天气,设提醒,维护追剧清单,搜索网页,写一份 Markdown 计划,每条回复都用日语说出。等待的片段做了加速;连接器里显示的个人数据已打码。(如果上面的播放器加载不出来,可以看仓库里的 MP4。)
这是什么
同时是两样东西。
个人助理。 不是指向仓库的编程智能体,而是指向你的智能体。它会记住你告诉它的关于你自己的事,保存它为你建的清单和文件,并从你自己的数据里读取:日历和提醒、健康、照片、信息、通讯录、备忘录、邮件、位置、家庭、你读什么看什么、你所在和你将去之处的天气。每一项都是独立的 dsh 插件,各自负责自己的同步和提示词段落,所以智能体回答的是你的生活,而不是一个搜索框。你开口时,它也能直接操控你的 Mac。
一款 galgame。 这个助理不是文本框上贴个头像。它是一部视觉小说:舞台上有角色,美术、人设和声音打包在一起,做成可替换的包,实时回应智能体正在做的事。这个品类在这里是干实事的——视觉小说是唯一完全围绕一个角色,在场,回应你构建的界面,而这正是个人助理的形态。
基于 dsh 构建。 Aibo 不添加自己的智能体。dsh 负责跑循环,掌管工具和会话;Aibo 是插件,在它旁边挂载 UI、存储和人格层。下面每个数据连接器都是独立插件,在没有 Aibo 的 dsh 会话里照样能用;加载了 Aibo 的 dsh 会话,也仍然是普通 dsh 会话。
对话读起来像普通聊天,但窗口右半边是舞台:回合运行时,她被展示成正在阅读、写作、搜索或执行命令——直接来自 harness 自己的工具事件,没有额外的模型调用,也不靠猜。回复会朗读出来。她过程中产出的东西——一份列表、一个文件——会变成对象,你之后可以打开,而不是一条滚走的消息。
换掉角色包,同一个智能体就变成另一个人:美术、人格、声音全都换。角色包的人格注册为只影响声音的系统提示词层——它决定回复听起来什么样,绝不决定智能体做什么、跑哪些工具。
快速开始
git clone https://github.com/omdsh-dev/dsh-gal aibo && cd aibo
./scripts/build.sh # compile src/ → lib/ against your installed dsh
npm run start:web # opens the UI in your browser
需要 Node.js 22+ 和配置好的 dsh。macOS 上你也可以双击 启动网页端.command。桌面窗口见启动,想挂到你已有的 dsh 里见安装到你自己的 dsh。
Aibo 给你的智能体加了五样东西
她被展示成正在做智能体在做的事
舞台跟随工具流,而不是文本。每次工具调用都会把她切到阅读、写作、搜索或运行;调用失败是一个短暂的停顿;等你批准的调用是 waiting;回合结束是 done。回复流式输出时她在写作,而她台词开头的舞台提示((耳根微微发红))会挑一种情绪——兴奋、难过、惊讶——在她朗读这句台词时保持住;你打字时,她在听。舞台在角色包的循环之间交叉淡入淡出,所以长回合一眼就能看懂,而不是一个转圈。
| 活动 | 她何时展示 | 缺失时的替代 |
| idle | 回合之间的休息状态 | neutral |
| reading | 回合进行中:推理、查看文件、插件不认识的任何工具 | thinking |
| writing | 编辑器、present、记忆笔记、任何写入类工具 | reading |
| searching | 网页搜索和抓取工具 | reading |
| running | shell 和命令运行器 | writing |
| waiting | 有批准在等你(在 dsh web UI 里决定) | idle |
| failed | 工具调用报错——一个停顿,然后回去干活 | surprised |
| done | 回合刚结束;回复后淡出 | happy |
活动、说话和角色被当作一个语义状态跟踪(window.aiboCharacter.state),与它如何渲染无关——见 CHARACTER-STATES.md。
她朗读回复
回复会以 token 为单位流式到达,实时渲染成 markdown(用 marked + DOMPurify,所以半截到达的表格或代码围栏也能正常显示),并通过 VOICEVOX(免费、本地、日语)或 Settings › Voice 里配置的服务商朗读出来。像(放下托盘)这样的括号舞台提示会显示,但从不朗读。
用 voiceLanguage: ja(默认值)时,会先发起一次小的旁路 LLM 调用,把回复改写成角色口吻的日语台词——你看着中文/英文字幕,听到的是日语,就像真正的视觉小说。配音后的台词会缓存,所以重放不会为改写再付一次钱。每个角色包各自挑选说话风格。
安装引擎(从它的 GitHub releases 下载 voicevox_engine-macos-.7z,解压到 ~/Library/Application Support/aibo/voicevox/macos-arm64),插件就会按需启动它;或者把 voicevoxUrl 指向你自己运行的引擎。没有引擎时该功能会静默关闭。服务商与密钥见 SPEECH.md。
不只是消息,还有清单和文件
聊天回答一旦滚出屏幕就没了。有两样东西能留下来:
- 清单(⌥L)——当回复是一组你可能会回头再看的东西(想追的剧、要比较的选项、要买的东西),她会在同一轮里用 list_create / list_add 放进清单,等你说某件事做完了,就用 list_update 标记完成或删掉。你也可以在面板里手动编辑同一份清单。
- 文件(⌥F)——她为你写的任何东西,从她运行过的写入工具里收集而来,可以直接在面板里打开,不用去聊天记录里翻找。
属于你的记忆
这些笔记记的是你,不是角色。当你说出下周依然成立的事情时,她会自己通过 aibo_remember 写下来,每轮都会注入。打开 Memory(⌥M)即可查看或编辑。它们存放在共享存储里,所以每个角色包看到的都是同一批笔记,切换角色不会丢任何东西。
连接器:她了解你的一天
dsh 从里到外都是插件,所以一个数据源本身就是独立的 dsh 插件——它自己负责同步、存储、工具和提示词段落,在任何 dsh 会话里都能用。同时加载 aibo 时,数据源会自行注册,出现在 Data 面板(⌥D、/data)里,每个都带一个「Visible to the character」开关,可以在不删除任何数据的前提下把它从提示词里隐藏。
官方套件随本仓库发布在 plugins/ 下;每个仍然是独立的 dsh 插件,构建到 plugins/<name>/lib/index.js,可以单独挂载:
| 插件 | 带来什么 |
| dsh-health | 从手机推送的 Apple Health(Health Auto Export 或快捷指令),或从 export.zip 导入。周平均值、两周图表、锻炼记录,以及对照 28 天基线后发现的异常 |
| dsh-calendar | 通过 EventKit 访问日历和提醒事项,覆盖所有已同步账户。今天、下一项、本周;逾期提醒;添加和完成提醒的工具 |
| dsh-weather | Open-Meteo,无需密钥。现在、今天、明天、24 小时图表和一周天气;根据时区推测位置。带日期的目的地会拿到 16 天预报,跟着行程走 |
| dsh-contacts | 通过 Contacts framework 访问通讯录。某个名字是谁,即将到来的生日 |
| dsh-notes | 通过 Automation 访问 Apple Notes。搜索和阅读;需要时创建和追加 |
| dsh-photos | Photos 图库(提示词里只有元数据)。每天的照片、类似旅行的聚类、视觉模型能看的缩略图 |
| dsh-messages | 从本地数据库读取 iMessage 和 SMS(需要 Full Disk Access)。谁在等回复;在你打开共享之前,对角色隐藏 |
| dsh-location | CoreLocation 加反向地理编码。你在哪里、离家多远、最近去过的地方 |
| dsh-home | 通过 Shortcuts 或 Home Assistant token 访问智能家居。读数与一键操作 |
| dsh-weread | 微信读书书架、进度和划线,用已登录会话的 cookie |
| dsh-douban | 豆瓣 想看/看过,覆盖电影、图书和音乐,这样她就不会推荐你已经看过的 |
| dsh-gmail | 通过 IMAP 加应用专用密码访问 Gmail,只读。未读数量、本周收件箱、六个月的预订和行程;用 Gmail 自己的语法搜索,把一封邮件读成文本 |
| dsh-flights | 来自 AeroDataBox(RapidAPI,免费套餐)的航班状态。按航班号和日期跟踪:时间、航站楼、登机口、延误、取消,临近起飞时刷新 |
| dsh-images | 她能在房间里展示的图片搜索:带密钥用 Brave Search,不带密钥用 Wikimedia Commons。选中的图片会下载下来并以卡片形式呈现,这样能扛过防盗链检查和重新加载 |
要写一个数据源,可选注入 aiboSources,用声明式的方式描述自己;面板永远不需要针对数据源的代码:
ctx.inject(['aiboSources'], aibo => {
aibo.effect(() => aibo.aiboSources.register({
id: 'my-source', label: 'My source', category: 'calendar',
describe: () => ({ status: 'connected', summary: '12 events this week', shared: true,
stats: [{ label: 'Today', value: '3 events' }], lists: [...], setup: [...], actions: [...] }),
act: async (action, input) => { / POST /sources/my-source/<action>; uploads arrive as input.file / },
}))
})
describe() 返回统计、每日序列、列表、带可复制字段的设置说明,以及操作(button、upload、toggle、danger)。有新数据后调用 aibo.aiboSources.changed(id),面板就会刷新。契约见 src/sources.ts。
她能用你的 Mac
打开 Settings › General › Computer Use,她就能操作你的应用:打开应用,把窗口读成一张截图加一棵带索引的无障碍树,点击、输入、滚动、拖拽、选取菜单项,每个动作之后再把结果读回来。设计沿用 Codex 的 Computer Use —— 一次只操作一个应用,元素索引取自最近一次观察,坐标以截图像素为单位 —— 它本身是一个独立的 dsh 插件(plugins/computer-use),两个启动器和桌面应用都会自动挂载。
- 先问再动。 每个应用里的第一个动作都会走 dsh 的审批提示;一次回答在该会话内覆盖这个应用。可以在 Connectors › Computer Use 里把应用设为永久允许,也可以撤销全部授权。
- 知道何时停手。 提示词里有一段确认策略,浓缩自 Codex 的做法:删除、发送、付款、安装、改设置、传输个人数据之前先问;应用里看到的文字是数据,永远不是授权。密码字段直接拒绝。
- 不绑定任何模型。 这些工具就是普通的函数工具,观察结果是一段文字加一张图片,所以任何能读图、能调用工具的模型都能驱动 Mac;没有支持图片的模型时,她只靠无障碍树工作。
需要装一次 Xcode 命令行工具(Swift 辅助程序首次使用时编译),还要给你启动 Aibo 的那个应用开两项权限:Accessibility 和 Screen Recording。Settings 分组里会显示这两项,也能发起申请。
角色包
一个包就是一个目录:character.json 加上按活动命名的静图或循环动画。旧的六个表情名仍可作为替代,所以一个包含 neutral / thinking / happy / surprised 的包就能覆盖所有活动。
characters/xiaoheiyu/
character.json name, greeting, persona, theme, playbackRate, voice, art prompts
idle.png idle.mp4 (or neutral.)
reading.png reading.mp4 (or thinking.)
writing.png writing.mp4 falls back to reading
searching.png searching.mp4 falls back to reading
running.png running.mp4 falls back to writing
waiting.png waiting.mp4 falls back to idle
failed.png failed.mp4 (or surprised.)
done.png done.mp4 (or happy.)
- 内置包:小黑鱼(Xiaoheiyu),原创的虎鲸女仆鲸鱼娘,带 5 秒的 idle 循环。她是这个仓库唯一附带的画作;她的包 id 是 xiaoheiyu。
- 你自己的包放在 ~/.dsh/aibo/characters/<id>,不会碰仓库。设置 AIBO_CHARACTER=<id> 就能以某个包启动。
- 自己做一个。 一个包就是一份 character.json 加每个活动一张图。在 Character 面板(⌥C)里写文字,自己生成画作,拖到画廊格子上 —— 只有文字没有画作的包也能用,只是在你补上图之前,她没什么舞台表现力。见 characters/README.md。
- 在 Character 面板里把角色包导入 / 导出为 .zip。导出内容包含美术资源和 character.json;她关于你的记忆留在你自己的机器上。
编辑或上传内置角色包的美术资源时,会先复制到 ~/.dsh/aibo/characters/<id>,仓库里的副本保持原样。
操作方式
所有功能都有按钮;快捷键是给你阅读时用的,不用点。⌥ 快捷键在任何地方都生效,哪怕你正打到一半。/(或 、,中文输入法下同一个键)聚焦消息框,Esc 离开消息框或关闭面板。
| Enter · Shift+Enter | 发送 · 换行 |
| ⌥M | Memory —— 她关于你的记忆,所有角色共用 |
| ⌥F | 她为你写的文件 |
| ⌥L | 她为你维护的列表 |
| ⌥D | connectors —— 她能看到什么 |
| ⌥C | Character —— 切换角色包、编辑人设、浏览并替换活动美术资源 |
| ⌥S | Settings —— 语音服务商、音色和语言 |
| ⌥V · ⌥R | 静音 / 取消静音 · 重读当前这一句 |
| ⌥/ | 命令和快捷键 |
消息框里的斜杠命令:/new、/char [id]、/edit、/memory、/files、/lists、/data、/gallery、/voice、/help。
你的数据
她为你保存的一切都在一个地方:~/.dsh/aibo/store.sqlite。记忆、列表、她写的文件、朗读设置、当前房间的对话记录,以及每个 connector 已同步的内容,都是这个文件里的文档和只追加日志(src/store.ts;本仓库之外的插件通过 aiboStore 服务拿到同一个对象)。重启后房间会恢复:对话记录重新显示在屏幕上,背后的 dsh 会话会在你下次发消息时继续,于是她从上次停下的地方接着聊。旧版本写下的文件(memory.md、lists.json……)会导入一次,然后重命名为 .migrated。
有意不放进 store 的东西:API key 和 cookie(各自留在 ~/.config/aibo/ 或 ~/.dsh/<connector>/ 下的文件里)、编译出的辅助程序和缩略图(本机专属)、主题(由各浏览器保存)。store 的结构 —— 带 updated-at 的文档、带序列号的日志 —— 就是以后托管后端要同步的东西;除此之外不需要任何改动。
启动(macOS)
在 Finder 里双击其中一个:
- 启动客户端.command —— 独立原生窗口
- 启动网页端.command —— 在默认浏览器里打开同一套 UI
- 选择启动方式.command —— 询问用哪种(按 Enter 选桌面端)
或者在终端里:
npm start # choose desktop or browser
npm run start:desktop # standalone window
npm run start:web # default browser
两个启动器都在 http://127.0.0.1:4878/ 提供这份 checkout 的 UI,背后是 4877 端口上的 dsh。它们会复用已经启动的匹配服务,只启动缺的部分。会话和保存的语音服务商设置是共用的;界面语言这类浏览器本地偏好,在浏览器和原生 WebView 之间各自独立。
终端窗口要保持打开,服务才能一直跑。Ctrl+C 只会停掉 launcher 启动的进程;桌面模式退出时还会清理自己启动的进程。被复用的服务仍归原来的属主管——属主退出,依赖它的窗口就断连。端口被无关的或更旧的服务器占用时,会直接报错,而不是把它杀掉。
前置条件:Node.js 22+、配置好的 dsh(优先用应用自带的私有运行时,否则用 PATH 上的 dsh)、编译好的 lib/(./scripts/build.sh)。桌面模式还需要构建好的 shell(cd app && npm run build)。想跑一次无头启动检查:node scripts/launch.mjs web --smoke --no-open。
应用(macOS)
app/ 是 Tauri 2 shell:一个原生窗口,包住插件的 UI,另有一个 supervisor 管着自己的 dsh。
首次启动时,它会在 ~/Library/Application Support/aibo/runtime 下安装一个固定版本的私有 dsh 运行时,把打包好的插件放到旁边,然后以 dsh --profile web 启动并挂载插件。它会复用你的 ~/.dsh(密钥、设置、会话)。如果 127.0.0.1:4877 上已经有 Aibo 服务器在响应,它就直接连上去。关闭主窗口只是隐藏,launcher 和桌面宠物继续工作。退出 Aibo 会停掉它启动的 dsh 进程。
./scripts/build.sh
cd app && npm install && npx tauri build
open src-tauri/target/release/bundle/macos/Aibo.app
安装到你自己的 dsh
git clone https://github.com/omdsh-dev/dsh-gal aibo
cd aibo && ./scripts/build.sh
在 ~/.dsh/cordis.patch.yml 里注册:
- insert:
- id: aibo
name: /absolute/path/to/aibo/lib/index.js
config:
port: 4877 # UI at http://127.0.0.1:4877/
character: xiaoheiyu # pack id, or a path to a pack directory
照常启动 dsh web,打开 http://127.0.0.1:4877/。构建和测试基于 dsh 0.1.5-rc.1;scripts/build.sh 链接的是 PATH 上 dsh 背后的那份安装(可用 DSH_PKG_ROOT 覆盖)。
配置
| key | default | description |
| port | 4877 | Listen port on 127.0.0.1 |
| token | "" | Optional shared token appended to the URL |
| character | xiaoheiyu | Pack id (~/.dsh/aibo/characters/<id>, then bundled characters/<id>) or a path |
| characterName | pack name | Override the nameplate |
| greeting | pack greeting | Override the pack's opening line |
| personaEnabled | true | Register the pack persona as a system-prompt voice layer |
| judgeProvider / judgeModel | agent's route | Route override for the one side call the plugin makes (voice dubbing) |
| judgeReasoningEffort | off | Reasoning effort for that side call ("" = the route's default) |
| voiceEnabled | true | Speak replies when a VOICEVOX engine is reachable |
| voicevoxUrl | http://127.0.0.1:50021 | VOICEVOX engine base URL |
| voicevoxEngine | ~/Library/Application Support/aibo/voicevox/macos-arm64/run | Local engine binary to auto-start ("" = never) |
| voiceSpeaker | 2 | 当角色包没有设置时,回退用的 VOICEVOX 风格 id(character.json 里的 voice.speaker) |
| voiceLanguage | ja | ja 会在合成前翻译非日语回复;auto 按原文朗读回复 |
制作角色包
最快也最可靠的路线 —— 内置的小黑鱼角色包就是这么做的:
1. 一张基础立绘。 在纯色背景上生成角色全身像。这是设计基准;这一步之后,任何环节都不许重画她。
2. 一张舞台关键帧。 重新生成她在场景里的样子,16:9,取景从大腿中部往上,画面下三分之一保持视觉上干净,因为对话框就压在那里。参考图仍然用基础立绘。
3. 更多静帧 —— 用两张参考图。 最重要的是 writing、reading、failed 和 done;缺的会借用相邻状态(见 CHARACTER-STATES.md)。同时传入基础立绘(她是谁)和舞台关键帧(构图、色调、光照、机位距离),提示词只改脸和手臂。两张参考图才能防止背景和取景在静帧之间漂移;一张不够。
4. 待机循环。 scripts/animate.sh <still.png> <out.mp4> "<motion prompt>" [h3] 把每张静帧变成循环片段,跑在 fal.ai 上(默认 Seedance 2.0 mini,加 h3 则用 MiniMax H3 —— 对风格化角色,H3 比前者更宽容)。动作提示词写成呼吸、眨眼、头发和衣服飘动,并明确说明镜头锁定、姿势不变。
循环需要让最后一帧接回第一帧,否则每轮都会跳一下。脚本分两步做到这点:把静帧同时作为结束帧和起始帧传入,然后在本地把尾部交叉淡入到头部。只靠模型不够 —— 要求结束帧能让姿势接近,但落不到那个点上。
5. 安装。 在 Character › Art 里逐个上传文件,或者把所有文件加一个 character.json 一起丢进 ~/.dsh/aibo/characters/<id>/。
你也可以只从文本开始:在 Character › Edit 里写名字、问候语、人设和 art 提示词,用你选的图像模型跑这些提示词,再把结果拖到画廊格子上。美术资源到位之前,角色包标记为 prompt only,她没有舞台表现力,但其他一切 —— 声音、人设、记忆 —— 都已经能用了。
让 character.json 里的 art.base、art.expressions 和 art.motion 保持最新:它们是以后重新生成角色包的配方,也是你分享角色包时,它能交给下一位主人的唯一东西。
状态与限制
- 舞台在角色身后只有一块固定背景板。没有背景选择器:角色包美术是全画幅的,自带环境,再单独选背景只会跟它打架。
- 待机循环是 5 秒片段,不是无缝循环;盯着看能看出接缝。
- 活动是整段片段的替换,不是骨骼绑定。她没法一边保持某个姿势一边对口型说某句台词,也没有逐音素的嘴部动作。
- 大多数连接器天生只支持 macOS(EventKit、Contacts、Photos、Messages、Shortcuts)。
这个仓库分发什么
这个仓库只附带一个角色:小黑鱼,原创的虎鲸女孩。它不附带、也不会接受任何授权角色的素材——美术、视频、语音样本都不行,人设文本也不行。你想在自己机器上做什么角色都行:~/.dsh/aibo/characters/<id>/ 里的角色包会先于内置角色被找到,而且永远不会进入仓库。
UI 开发
页面就是聊天布局:左边是整段对话,右边是角色。源码在 ui/src/chat/,构建产物到 web/chat/,已提交进仓库,浏览器和桌面外壳共用。(ui/src/ 和 web/ui/ 是更早的一次只演一个场景的版本,保留在 /classic.html,不再开发。)
npm ci --prefix ui # once
npm run check:ui && npm run build:ui
npm --prefix ui run dev # rebuild on change; refresh the page to see it
组件、控制器适配器和校验说明:ui/README.md。
社区
在 LINUX DO 和 V2EX 上讨论。有问题、bug 报告和角色包,欢迎发到那里或提 issue。
许可证
BSD-3-Clause
桌面版发布
已签名的 macOS 版本会在启动时以及每四小时检查一次更新。0.2.0 及之后的版本会在下载/安装前询问,重启前再问一次;选「稍后」会让当前会话继续运行。签名、公证和一条命令完成发布的流程,见发布配置与发布。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
omdsh-dev/dsh-gal
本仓库已迁移至 drewnekota/aibo。 这份副本不再维护,请到新仓库提 issue 和 pull…
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,402已汉化DSH
72.1
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 106,216已汉化DSH
71.8
iPhone 操控代理onehumanbeing/esp32-iphone-agent
让你的 AI 像你一样用 iPhone。
★ 4,576已汉化DSH
71.7
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,373已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 35,482已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 94,058已汉化DSH
71.2
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。