🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

桌面像素精灵 BenjaminSHI4008/deepseek-pet-Seeki

DeepSeek Harnessv0.2.0
BenjaminSHI400871 天前有提交已提供中文文档扫描:含敏感能力

双击唤出智能体,桌面常驻陪你干活

33.8/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:npm 同名包「deepseek-pet」归属 ambar/deepseek-pet,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add BenjaminSHI4008/deepseek-pet-Seeki
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · desktop
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 71 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

npm 同名包「deepseek-pet」归属 ambar/deepseek-pet,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包deepseek-pet @ 0.2.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/24 14:52:47

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 30 处,展示前 30 条)
  • 读取本地文件
    main.cjs:18
    petConfig = JSON.parse(fs.readFileSync(path.join(__dirname, 'pet.config.json'), 'utf8'))
  • 读取本地文件
    main.cjs:37
    chatConfig = JSON.parse(fs.readFileSync(chatConfigPath, 'utf8'))
  • 写入本地文件
    main.cjs:42
    fs.mkdirSync(path.dirname(chatConfigPath), { recursive: true })
  • 写入本地文件
    main.cjs:43
    fs.writeFileSync(chatConfigPath, JSON.stringify(chatConfig, null, 2))
  • 写入本地文件
    main.cjs:56
    fs.mkdirSync(dir, { recursive: true })
  • 读取本地文件
    main.cjs:212
    const cfg = JSON.parse(fs.readFileSync(path.join(__dirname, 'pet.config.json'), 'utf8'))
  • 写入本地文件
    main.cjs:214
    fs.writeFileSync(path.join(__dirname, 'pet.config.json'), JSON.stringify(cfg, null, 2) + '\n')
  • 读取本地文件
    harness-plugin/dist/index.js:410
    return JSON.parse(await readFile(configFile, "utf8"));
  • 写入本地文件
    harness-plugin/dist/index.js:416
    await writeFile(configFile, JSON.stringify(cfg, null, 2) + "\n");
  • 执行外部命令来自配置/变量
    harness-plugin/dist/index.js:423
    const child = spawn(process.execPath, [electronCli, "."], {
  • 读取本地文件
    harness-plugin/dist/index.js:455
    const text = await readFile(configFile, "utf8");
  • 写入本地文件
    harness-plugin/dist/index.js:509
    await mkdir(frameDir, { recursive: true });
  • 读取本地文件
    harness-plugin/dist/index.js:510
    for (const f of await readdir(frameDir).catch(() => [])) {
  • 删除本地文件
    harness-plugin/dist/index.js:511
    if (f.endsWith(".png")) await unlink(path.join(frameDir, f));
  • 写入本地文件
    harness-plugin/dist/index.js:514
    await writeFile(path.join(frameDir, `frame_${String(i).padStart(3, "0")}.png`), bufs[i]);
  • 读取本地文件
    harness-plugin/dist/index.js:548
    const buf = await readFile(path.join(petDir, "Deepseek", "animations", folder, "south", file));
  • 删除本地文件递归
    harness-plugin/dist/index.js:638
    await rm(path.join(petDir, "Deepseek", "animations", folder), { recursive: true, force: true });
  • 读取本地文件
    harness-plugin/dist/index.js:659
    const html = await readFile(settingsHtmlPath, "utf8");
  • 读取本地文件
    harness-plugin/src/index.ts:494
    return JSON.parse(await readFile(configFile, 'utf8'))
  • 写入本地文件
    harness-plugin/src/index.ts:500
    await writeFile(configFile, JSON.stringify(cfg, null, 2) + '\n')
  • 执行外部命令来自配置/变量
    harness-plugin/src/index.ts:510
    const child = spawn(process.execPath, [electronCli, '.'], {
  • 读取本地文件
    harness-plugin/src/index.ts:538
    const text = await readFile(configFile, 'utf8')
  • 写入本地文件
    harness-plugin/src/index.ts:595
    await mkdir(frameDir, { recursive: true })
  • 读取本地文件
    harness-plugin/src/index.ts:596
    for (const f of await readdir(frameDir).catch(() => [])) {
  • 删除本地文件
    harness-plugin/src/index.ts:597
    if (f.endsWith('.png')) await unlink(path.join(frameDir, f))
  • 写入本地文件
    harness-plugin/src/index.ts:600
    await writeFile(path.join(frameDir, `frame_${String(i).padStart(3, '0')}.png`), bufs[i])
  • 读取本地文件
    harness-plugin/src/index.ts:634
    const buf = await readFile(path.join(petDir, 'Deepseek', 'animations', folder, 'south', file))
  • 删除本地文件递归
    harness-plugin/src/index.ts:724
    await rm(path.join(petDir, 'Deepseek', 'animations', folder), { recursive: true, force: true })
  • 读取本地文件
    harness-plugin/src/index.ts:743
    const html = await readFile(settingsHtmlPath, 'utf8')
  • 发起网络请求
    renderer.js:18
    const config = await (await fetch('./pet.config.json')).json()
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

4 张 · 点击查看大图

功能亮点

  • 透明置顶桌面精灵
  • 2D像素风状态机
  • 双击唤出智能体

DeepSeek Harness 桌宠插件:透明置顶的桌面精灵(2D 像素风状态机)

README

由 DeepSeek 最新模型翻译生成
Seeki 一个由 DeepSeek 驱动的迷你桌面伙伴,住在你的屏幕上,帮你把事情搞定。 English · 简体中文 Seeki 是一只漂浮在桌面上的像素宠物,双击一下就能唤出 DeepSeek Harness 智能体。它是桌面宠物 × DeepSeek × 智能体的结合体——按工作区组织的持久对话、按任务切换模型,还有一个在智能体工作时真正会做出反应的角色。 License: MIT PRs welcome Seeki 是一个独立的社区项目。它并非 DeepSeek 的官方产品。 为什么选择 Seeki? 你早就可以在浏览器标签页里和 DeepSeek 对话了。Seeki 增加了聊天界面无法提供的一层: | 与其…… | Seeki 给你…… | | 一个还得费劲去找的标签页 | 一个住在你桌面上的角色,抬眼就能看到 | | 每次会话都要粘贴上下文 | 持久对话,按工作区组织 | | 一个默认模型 | 按任务切换模型——为下一条消息选择不同的模型 | | 一个静态的网页应用 | 一个拥有待机 / 开心 / 行走 / 睡觉状态的像素伙伴 | | 阅读日志 | 角色上方一眼可见的状态气泡(received → working → done) | 以上每一项都对应 Seeki 今天真正能做到的事情——没有营销废话。
展开完整文档(README 剩余 1 节)
Seeki

一个由 DeepSeek 驱动的迷你桌面伙伴,住在你的屏幕上,帮你把事情搞定。

English · 简体中文

Seeki 是一只漂浮在桌面上的像素宠物,双击一下就能唤出 DeepSeek Harness 智能体。它是桌面宠物 × DeepSeek × 智能体的结合体——按工作区组织的持久对话、按任务切换模型,还有一个在智能体工作时真正会做出反应的角色。

License: MIT
PRs welcome

Seeki 是一个独立的社区项目。它并非 DeepSeek 的官方产品。

为什么选择 Seeki?

你早就可以在浏览器标签页里和 DeepSeek 对话了。Seeki 增加了聊天界面无法提供的一层:

| 与其…… | Seeki 给你…… |
| 一个还得费劲去找的标签页 | 一个住在你桌面上的角色,抬眼就能看到 |
| 每次会话都要粘贴上下文 | 持久对话,按工作区组织 |
| 一个默认模型 | 按任务切换模型——为下一条消息选择不同的模型 |
| 一个静态的网页应用 | 一个拥有待机 / 开心 / 行走 / 睡觉状态的像素伙伴 |
| 阅读日志 | 角色上方一眼可见的状态气泡(received → working → done) |

以上每一项都对应 Seeki 今天真正能做到的事情——没有营销废话。

功能特性

🐾 住在你的桌面上

Seeki 是一个透明、无边框、始终置顶的窗口——一个 2D 像素角色,待在你的屏幕上,而不是藏在某个标签页里。

💬 持久对话

双击 Seeki 即可聊天。对话是持久且多轮的,按工作区组织,并配有对话切换器,可随时跳回之前的任意对话。

🧠 宠物背后是一个 DeepSeek Harness 智能体

Seeki 是 DeepSeek Harness 智能体的桌面门面。头顶气泡会反映智能体的实时状态:

| 状态 | 气泡 |
| received | 收到啦 · received |
| running | Deep diving... |
| completed | Completed |
| terminated | Stopped |
| offline | Offline |

🔀 按任务切换模型

直接在聊天窗口中切换你已配置的 DeepSeek 模型。切换仅对下一条消息生效,绝不会打断正在进行的回合;新对话会继承当前模型。

🎮 一个角色,而非静态图标

待机呼吸、开心、行走(拖拽)和睡觉动画——外加拖拽方向切换(左 / 右 / 上 / 下,带镜像)以及点击 / 空闲超时交互。

⚙️ 配置驱动,无需改代码状态气泡、动画、帧率和触发器都存放在 pet.config.json 中,可通过内置的 /pet/settings 页面进行编辑——包括上传、替换和删除动画帧。

截图

💬 对话

一段真实的对话

🗂️ 工作区与模型切换

工作区选择器和模型下拉菜单

🎮 角色状态

空闲、行走、睡觉

快速开始

前置条件

- Node.js ≥ 22 和 pnpm
- 克隆 deepseek-harness 并运行一次 pnpm install——Seeki 作为插件在其中运行
- 为 harness 配置一个 DeepSeek API key(参见模型配置)

1. 克隆两个仓库
git clone https://github.com/deepseek-ai/deepseek-harness.git
git clone https://github.com/BenjaminSHI4008/deepseek-pet.git
cd deepseek-harness && pnpm install

2. 安装 Seeki(插件 + 桌面图标)
cd ../deepseek-pet
bash scripts/install.sh

Windows (PowerShell)
powershell -ExecutionPolicy Bypass -File scripts\install.ps1

3. 运行——双击 Seeki.app(macOS)/ Seeki.lnk(Windows)。该图标会在后台启动 DeepSeek Harness 并唤醒 Seeki。

安装程序会自动检测你的 deepseek-harness 检出目录(同级目录、~/deepseek-harness 或 ~/Projects/deepseek-harness),如果找不到会询问你。

安装

有两种运行方式,外加一种独立的离线模式。

A. 一键桌面图标(推荐)

scripts/install.sh(macOS)/ scripts/install.ps1(Windows)会安装插件并创建一个伪可执行文件桌面图标——它只包含一条启动命令,不捆绑运行时。

- 启动:双击 → 在后台启动 harness → 唤醒 Seeki。
- 退出:右键点击桌宠 → 「退出桌宠」。退出 Seeki 不会停止 harness(它会在后台继续运行;下次双击只会重新唤醒桌宠)。

B. 手动使用 DeepSeek Harness 运行

cd
bash scripts/install-harness-plugin.sh # 将插件安装到 web profile

cd
pnpm dsh web # Seeki 随 harness 自动启动

C. 独立桌宠(离线,无 agent)

cd
npm install
npm start

这只会运行桌宠。在没有连接 harness 的情况下,气泡会显示 Offline。

Electron 会在 npm install 时下载其二进制文件。在中国大陆网络较慢时,请先运行
export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"。

模型配置 Seeki 不会硬编码模型。聊天窗口的模型列表来自你的 DeepSeek Harness 所配置的提供方(llm.models),因此它始终反映你的 harness 实际所公布的内容(例如 deepseek-official 路由上的 DeepSeek-V4-Pro 和 DeepSeek-V4-Flash)。

- API 密钥 — 为 harness 配置,而不是为 Seeki 配置:在环境变量中、harness 根目录的 .env 文件中,或通过 harness 的凭据存储(~/.dsh/.credentials.yaml)设置 DEEPSEEK_API_KEY。
- 默认模型 — harness 自身的默认值。Seeki 不会强加一个。
- 切换模型 — 使用聊天标题栏中的模型下拉菜单。它仅影响下一条消息;新对话会继承当前选择;不可用的模型显示为禁用状态。

完整的 pet.config.json 参考:docs/config.md。

工作原理

flowchart TB
U[你] -->|双击 · 输入| P[Seeki 桌面 UIElectron · 透明窗口 · 像素精灵]
P -->|WebSocket /api/pet.ws| S[dsh-pet-status 插件位于 DeepSeek Harness 内]
S -->|session.prompt · session.models| A[DeepSeek Harness Agent工作区 · 会话 · 工具]
A -->|提供方路由| M[DeepSeek 模型提供方]
M --> A
A --> S -->|状态 · 助手文本| P

1. Electron 宠物渲染角色和聊天窗口。
2. 一个小的 Cordis 插件(dsh-pet-status)在 DeepSeek Harness 内运行,将 agent 活动折叠为状态,并通过本地 WebSocket 流式传输助手文本。
3. harness agent 处理会话、工作区和工具;Seeki 是它的桌面门面。

架构与扩展指南:docs/development.md。

项目结构

harness-plugin/ dsh-pet-status 插件 — 状态广播、宠物管理器、聊天桥接 Deepseek/ 像素精灵资源(动画、8 方向静帧、原始素材) assets/ 捆绑字体(以及生成的启动器图标) docs/ 配置参考 + 开发者指南 scripts/ 安装器 + 精灵规范化 pet.config.json 所有宠物行为 — 状态、动作、角色状态 main.cjs Electron 主进程(窗口、拖拽、WebSocket 客户端) renderer.js 像素精灵状态机(配置驱动) chat.html 聊天窗口 UI(工作区、对话、模型切换)

开发

npm install
npm start # 在迭代 UI 时独立运行宠物(离线)

宠物行为完全由配置驱动 — 编辑 pet.config.json(或使用 /pet/settings)即可更改气泡、动画和触发器,而无需改动渲染代码。有关如何添加动作、鼠标状态或拖拽方向,请参阅 docs/development.md。

路线图

- [x] 桌面宠物(透明置顶窗口、像素状态机)
- [x] Agent 状态反映(received / running / completed / terminated / offline)
- [x] 聊天:工作区、对话历史、模型切换、取消
- [x] 可视化设置页面(状态 / 动作 / 帧上传与删除)
- [x] 一键桌面启动器(Seeki.app / Seeki.lnk)
- [ ] 点击穿透(透明区域不捕获鼠标)
- [ ] 位置记忆、边缘吸附、8 方向行走
- [ ] 独立打包(捆绑 harness 运行时)

贡献

欢迎提交 issue、功能请求和 pull request。

许可证

MIT © 2026 BenjaminSHI4008

Deepseek/ 下的角色精灵素材由 PixelLab 生成;再分发条款遵循 PixelLab 的许可证。
预览分享卡片长什么样 ↓BenjaminSHI4008/deepseek-pet-Seeki
分享 · DeepSeek Harness Hub
BenjaminSHI4008/deepseek-pet-Seeki

双击唤出智能体,桌面常驻陪你干活

回到顶部