
一句话定位
Desktop-Agents 是常驻 Windows 桌面的多角色陪伴原型。角色能在桌面活动、避开工作区,并通过私聊、群聊和经用户审核的记忆形成连续互动。
面向谁,解决什么
目标用户希望喜欢的角色一直可见,但不愿被悬浮窗挡住工作或游戏。项目把桌面存在感与对话连续性放在一条体验里:先让角色能自然地留在桌面,再由用户主动聊天,最后由用户决定哪些信息可以成为长期记忆。
| 用户任务 | 当前对应能力 | 边界 |
|---|---|---|
| 同时放置多个角色 | 1–6 个角色、透明帧动画、拖动和尺寸设置 | 多屏与不同 DPI 尚待实机验收 |
| 专注时减少干扰 | 工作避让、游戏退场、手动覆盖 | 进程识别可能误判 |
| 延续交流 | 私聊、用户群聊、自动群聊 | 无 Key 时是本地规则话术,不是离线大模型 |
| 管理个人信息 | 记忆候选审核、纠错、撤权和删除 | 云端模式下当前消息及近期聊天仍会发送至所配置服务 |
产品取舍
- 窗口移动、避让和相遇由本地规则负责,避免网络延迟影响桌面操作。
- 长期记忆先成为候选,经用户确认并允许云端使用后才可进入相关云端请求;私聊按角色隔离,群聊使用独立范围。
- 新形象采用透明 PNG 帧动画与资源清单;旧 Spine 路径保留兼容,不作为新增素材主线。
当前完成度
桌面、聊天、记忆审核与资源加载有自动测试,六套默认动画和隔离的 --demo 数据可用于展示。当前适合作为可试用原型;真实云端回复、多显示器、长期挂机、资源占用和安装包仍缺发布级验收。这里的默认本地检索是关键词加词片段哈希向量,不应描述成通用语义理解。
演示路径:配置角色到审核记忆
以下画面从 Windows 隔离 --demo 模式的真实 PyQt 窗口导出。对话和记忆是项目预置的虚构演示数据,回复使用本地模板,不调用云端模型。
01 管理桌面角色
操作:从托盘打开 Agent 管理,选择出战角色。核查:角色列表显示名称、性格、形象和人格,支持创建、编辑、导入人格和更换形象;勾选状态决定哪些角色出现在桌面。

02 进入单聊
操作:双击桌面角色打开私聊,输入近况。核查:角色回复与用户消息分开呈现;本次回复是本地模板,不代表云端模型效果。

03 查看群聊
操作:从托盘打开群聊记录。核查:多角色消息与用户输入在同一群聊范围,记录与单聊分开保存。

04 检索聊天记录
操作:打开当前角色的聊天记录。核查:窗口显示最近消息,并提供搜索完整记录、返回最近消息和导出 JSON。图中展示入口及预置记录,未以截图声称已完成导出文件核验。

05 审核记忆再决定使用范围
操作:打开“记忆与表达偏好”。核查:可区分待确认候选和已确认记忆,并单独控制是否允许云端使用;群聊记忆另有独立范围。

动态能力与边界
桌面角色拖动、自动漫游、靠近对白、专注工作避让、游戏隐藏与恢复,均需要录屏才能展示连续状态变化;本页静态截图不将其计作已验证的演示。--demo 使用隔离数据库,不写入正式聊天库,也不能说明真实云端回复质量。桌宠依赖 Windows 桌面环境,多显示器、DPI 和长时间运行仍需现场验收。
产品定位
Desktop-Agents 是常驻 Windows 桌面的轻量陪伴应用。角色首先要像桌宠一样自然地存在于桌面:可见、可拖动、会活动,但不能妨碍用户正在做的事。聊天、人格和记忆用于增加连续感,不承担通用办公助手或自动执行电脑操作的职责。
目标与边界
| 目标 | 当前验收方式 |
|---|---|
| 多角色同屏陪伴 | 1–6 个角色可出战、隐藏、更换形象;透明窗口只显示宠物本身 |
| 不打断工作与游戏 | 工作模式平滑避开工作区和鼠标;游戏模式退场并在退出后恢复 |
| 可持续聊天 | 私聊、用户群聊、自动群聊各有明确入口和独立记录 |
| 记忆可控 | 用户可查看、修正、确认、撤销云端权限及删除长期记忆和阶段摘要 |
当前不提供本地大模型推理、电脑工具执行或多设备同步。云端互动是可选的;没有 API Key 时继续使用本地规则话术。
核心体验
- 首次启动加载项目内的默认阵容,用户可以在 Agent 管理中调整出战角色。
- 角色通过透明帧序列表现待机、情绪和拖动;统一提供 25%、50%、75%、100% 四档尺寸,其中 100% 为原始大肥鱼尺寸的 70%。
- 用户可拖动、点击或向指定角色发起私聊。至少两只角色出战时,系统按间隔进行自动群聊;用户也能加入群聊。
- 本地规则控制漫游、相遇、避让与退场。云端生成宠物相遇对白需要用户在托盘单独开启,只发送两只宠物的身份和性格,不附带聊天记录。
- 用户消息进入分层记忆流程:近期对话供当前回复使用;明确说出的目标、决定和下一步进入当前工作状态;名字与喜好产生待确认长期记忆;每六条用户消息产生待审核阶段摘录。
记忆与隐私规则
单聊范围以 Agent ID 隔离,群聊使用独立共享范围。待确认或仅本地的长期记忆与阶段摘要不进入检索上下文;确认并允许云端使用后,才按相关性和长度预算补入云端请求。工作状态会在清空对应聊天时清除;长期记忆和摘要需分别管理。当前消息及最近聊天在云端模式下仍会按 API 配置发送。
默认使用中英文关键词与本地字符/词片段哈希向量混合排序;设置 DESKTOP_AGENTS_EMBEDDINGS=none 可只用关键词。这个轻量向量提供器不具备通用语义理解能力。阶段摘要是用户消息的摘录草稿,不是模型生成的总结。
当前进度与未完成项
截至 2026 年 10 月,桌面、聊天和审核式记忆主链路已有自动测试。默认六个角色均有项目内帧动画;聊天记录支持按私聊或群聊范围搜索完整历史并导出 JSON。真实云端 API、不同显示器与 DPI、长期挂机和安装包尚未完成发布级验收。
下一阶段优先验证真实对话与记忆闭环、检索质量及 Windows 分发流程。旧 Spine 和 LoRA 工具仍在仓库中,但不作为当前桌宠主线。
比较范围
这份分析以三类已存在的产品形态作为设计参照:传统桌面宠物、网页或手机 AI 角色聊天,以及附着在开发工具中的宠物插件。这里比较的是使用场景和设计取舍,不是对某个具体产品版本做功能实测。
| 形态 | 主要价值 | 对 Desktop-Agents 的启发 | 当前取舍 |
|---|---|---|---|
| 传统桌面宠物 | 常驻桌面、动作和即时反馈 | 宠物必须先做到透明、轻量、可拖动、不挡操作 | 以本地状态机负责移动与避让,不让模型直接控制窗口坐标 |
| AI 角色聊天 | 人格一致性、可延续的对话 | 需要私聊、群聊和可管理的记忆 | 云端生成语言;本地保存范围、审核状态和授权信息 |
| 工具内宠物插件 | 与工作状态产生关联 | 宠物应理解“现在不该打扰” | 通过前台进程和窗口位置判断工作或游戏,支持手动覆盖 |
差异化假设
项目试图把“桌面上真的有一个角色”和“它记得我们聊过什么”连起来。只有聊天框,桌面形态没有意义;只有动画,关系又很难持续。因此交互链路是:可见的宠物行为 → 用户主动对话 → 经用户审核的记忆 → 后续相关回复。
多宠物相遇也有两个边界。移动和碰撞由本地规则处理,避免网络延迟或模型输出影响窗口操作;可选云端生成短对白,但不把相遇对白写入用户的正式聊天或记忆。
当前不足
和成熟桌宠相比,长时间运行、多显示器和资源占用仍缺真实测量;六个默认角色现在都有项目内动画,但还需在实机观察整体画面一致性。和成熟 AI 伴侣相比,默认的本地词片段向量与关键词混合召回仍不具备通用语义理解,阶段摘要仍是摘录,本地规则回复也难以保持深层人格一致性。前台进程名单只能粗略识别工作和游戏,存在误判可能。
因此当前更适合作为可试用原型,而不是宣称已经在陪伴质量、智能程度或系统稳定性上超越上述形态。后续应先用真实使用记录验证这些假设,再补功能。
模块边界
应用采用 Python 与 PyQt6 的桌面模块化单体。Qt 层处理透明窗口、托盘、气泡、拖拽和聊天界面;core 与应用服务负责角色阵容、对话、动作、记忆和资产发现,不依赖 Qt。SQLite 保存聊天、配置与学习记录。默认透明 PNG 帧播放器不依赖 WebEngine,旧 Spine/Rive 适配保留给已有资源或可选运行时。
资源与移动
新增形象使用 pet-manifest.json 声明动画片段和相对帧路径,加载前校验文件是否完整且留在资源目录内。移动状态机区分待机、漫游、工作避让、游戏退场和用户拖动。手动拖动会中断自动位置动画,并在放下后短暂保护新位置;否则漫游和避让同时改坐标时会出现闪屏或落点偏移。前台进程识别只是工作/游戏模式的启发式输入,不能保证识别每个应用。
对话与记忆数据流
单聊按 Agent ID 存储,群聊使用独立共享范围。原始聊天、近期上下文、工作状态、待确认长期记忆与阶段摘录分别管理;确认且允许云端使用的记录才进入相关云端回复。撤权、修正和删除会处理对应向量索引,但删除记忆不会删除原始聊天,也不会撤回历史 API 请求。
默认 LocalTextEmbedding 把字符和词片段映射为本地哈希向量,与关键词共同排序,可通过 DESKTOP_AGENTS_EMBEDDINGS=none 关闭。索引带提供器版本,重启或切换版本后按需补建;失败时回退关键词。该方案不下载语言模型,不能理解任意语义。没有 API Key 时使用本地模板回复,云端交互使用 OpenAI 兼容接口。
验证与限制
仓库为核心业务、资源清单、窗口交互和记忆范围提供自动测试;六套默认动画已有播放器与资源校验。真实云端 Key、长期挂机、多显示器和 DPI、安装包仍需实机验收。阶段摘录不是模型生成的总结,本地模板也无法证明深层人格一致性。
路线是怎样调整的
项目早期同时保留静态头像、Spine/Rive 适配和桌面 Agent 能力。实际推进后,新增形象路线收敛到项目内的透明 PNG 帧动画:它更容易统一资源格式、验证每个状态,也不要求默认安装 WebEngine 或动画运行时。旧代码仍用于兼容已有配置,不再主导新形象开发。
| 阶段 | 已完成的变化 | 暴露的问题 |
|---|---|---|
| 桌面体验 | 透明悬浮、拖动、气泡、宠物与气泡四档尺寸和六套动画资源 | 拖动曾出现闪屏和落点偏移;第六套形象已完成资源与播放测试,实机观感还需观察 |
| 行为系统 | 漫游、相遇互动、工作避让、游戏退场 | 自动识别依赖进程名单,真实桌面边界需要更长时间验证 |
| 聊天与人格 | 私聊、群聊、自动群聊、按范围搜索与导出记录、人格包和表达偏好 | 本地模板的角色表现有限;真实云端服务尚未完整验收 |
| 记忆系统 | 从长期记忆候选扩展到工作状态、阶段摘录和可选向量索引 | 默认没有 Embedding 提供器,摘要也还不是语义总结 |
两个关键修正
第一,移动必须服从人的操作。 自动漫游与工作避让都可能同时改变窗口位置,早期拖动因此会闪屏或回到非预期落点。之后让拖动中断自动位置动画,并在手动放下后保留一段保护时间。自动测试覆盖了落点、工作模式和漫游冲突;多屏实机体验仍需继续检查。
第二,记忆需要可追溯的授权。 初版把偏好提取视为“记住了什么”,但聊天内容直接变成长期 Prompt 会让用户失去控制。当前流程把原始记录、工作状态、待确认候选、已授权检索分开;用户可以改写、撤权、删除。代价是记忆形成更慢,默认召回仍依赖关键词,但产品边界更清楚。
目前能证明什么
完整自动测试集覆盖资源、拖动与互动、聊天、人格、记忆迁移及范围隔离。这能说明主要代码路径可以在测试环境运行,不能证明真实 API、长期挂机、不同分辨率和普通用户安装体验已经可靠。当前没有足够的真实用户使用数据来判断“陪伴感”是否成立。
下一轮应围绕两项可观察结果推进:录制包含桌面、拖动、对话和记忆审核的真实演示;在实机环境记录云端失败回退、资源占用和长时间运行问题。之后再决定是否扩大智能功能。