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

像素大小姐 Silasvanceneo/claude-ojousama

DeepSeek Harness
Silasvanceneo8 天前有提交已提供中文文档扫描:含敏感能力

住在任务栏的像素少女,看屏幕主动帮你干活

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Silasvanceneo/claude-ojousama
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

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

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

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

✗npm 包claude-ojousama(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/27 23:41:03

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

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 65 处,展示前 57 条)
  • 读取本地文件
    src/main/main.js:49
    const MANIFEST = JSON.parse(fs.readFileSync(path.join(ASSETS, 'sprites', 'manifest.json'), 'utf8')).anims
  • 读取本地文件
    src/main/main.js:86
    shell.writeShortcutLink(lnk, fs.existsSync(lnk) ? 'replace' : 'create', opts)
  • 读取本地文件
    src/main/main.js:110
    return list.map((f) => String(f).trim()).filter((f) => f && fs.existsSync(f))
  • 读取本地文件
    src/main/main.js:212
    Object.entries(MANIFEST).map(([name, a]) => [name, 'data:image/png;base64,' + fs.readFileSync(path.join(ASSETS, 'sprites', a.file)).toString('base64')
  • 读取本地文件
    src/main/main.js:472
    if (!fs.existsSync(from)) {
  • 读取本地文件
    src/main/main.js:478
    const toDir = /[ /]$/.test(to) || (fs.existsSync(to) ? fs.statSync(to).isDirectory() : !path.extname(to))
  • 写入本地文件
    src/main/main.js:2325
    fs.mkdirSync(dir, { recursive: true })
  • 写入本地文件
    src/main/main.js:2327
    fs.writeFileSync(file, text + '\n', 'utf8')
  • 读取剪贴板
    src/main/main.js:2619
    const text = String((await clipboard.readText()) || '').trim()
  • 读取剪贴板
    src/main/main.js:3118
    readClipboard: () => clipboard.readText(),
  • 写入本地文件
    src/main/main.js:3168
    fs.mkdirSync(dir, { recursive: true })
  • 写入本地文件
    src/main/main.js:3169
    fs.copyFileSync(path.join(old, file), path.join(dir, file))
  • 写入本地文件
    src/main/main.js:3249
    fs.writeFileSync(file, img.toPNG())
  • 写入本地文件
    src/main/store.js:82
    fs.mkdirSync(dir, { recursive: true })
  • 读取本地文件
    src/main/store.js:85
    data = JSON.parse(fs.readFileSync(this.file, 'utf8'))
  • 写入本地文件
    src/main/store.js:125
    fs.writeFileSync(tmp, JSON.stringify(this.data, null, 2), 'utf8')
  • 写入本地文件
    src/main/store.js:126
    fs.renameSync(tmp, this.file)
  • 读取本地文件
    src/main/dsh.js:26
    if (fs.existsSync(exe) && fs.existsSync(cli)) return { exe, cli }
  • 读取本地文件
    src/main/dsh.js:60
    text = fs.readFileSync(file, 'utf8')
  • 写入本地文件
    src/main/dsh.js:138
    fs.mkdirSync(path.dirname(file), { recursive: true })
  • 写入本地文件
    src/main/dsh.js:139
    fs.writeFileSync(file, parts.join('\n') + '\n', 'utf8')
  • 执行外部命令来自配置/变量
    src/main/dsh.js:160
    this.child = spawn(dsh.exe, args, { cwd: cwd || os.homedir(), env, windowsHide: true })
  • 读取本地文件
    src/main/codex.js:16
    if (!candidate || !fs.existsSync(candidate) || !fs.statSync(candidate).isFile()) continue
  • 读取本地文件
    src/main/codex.js:22
    const entry = entries.find((p) => fs.existsSync(p))
  • 读取本地文件
    src/main/codex.js:29
    fs.accessSync(candidate, fs.constants.X_OK)
  • 读取本地文件
    src/main/tidy.js:84
    for (const full of Object.keys(state.pending)) if (!fs.existsSync(full)) delete state.pending[full]
  • 读取本地文件
    src/main/tidy.js:102
    if (!fs.existsSync(dest) && !taken.has(dest.toLowerCase())) return dest
  • 读取本地文件
    src/main/tidy.js:123
    if (!fs.existsSync(dir)) {
  • 读取本地文件
    src/main/tidy.js:127
    if (fs.existsSync(to)) throw new Error(`目标已存在:${path.basename(to)}`)
  • 读取本地文件
    src/main/screen.js:20
    const exe = candidates.find((file) => fs.existsSync(file))
  • 发起网络请求
    src/main/screen.js:65
    const result = await this.request('capabilities', {}, 10000, { soft: true })
  • 执行外部命令来自配置/变量
    src/main/screen.js:101
    p = spawn(helper.exe, helper.args, { windowsHide: true })
  • 发起网络请求
    src/main/screen.js:215
    const r = await this.request('fg', {}, 5000)
  • 发起网络请求
    src/main/screen.js:257
    const r = await this.request('wins', {}, 5000, { soft: true })
  • 发起网络请求
    src/main/screen.js:275
    const r = await this.request('rect', { hwnd }, 3000, { soft: true })
  • 发起网络请求
    src/main/screen.js:284
    const r = await this.request('procs', { names }, 5000)
  • 写入本地文件
    src/main/screen.js:358
    fs.writeFileSync(file, small.toJPEG(82))
  • 写入本地文件
    src/main/screen.js:365
    fs.writeFileSync(file, img.toPNG())
  • 发起网络请求
    src/main/screen.js:367
    const first = await this.request('ocr', { path: file, lang: lang === 'en' ? 'en-US' : 'zh-Hans-CN' }, 15000)
  • 删除本地文件
    src/main/screen.js:382
    fs.rm(file, { force: true }, (err) => {
  • 读取本地文件
    src/main/screen.js:391
    for (const f of fs.readdirSync(os.tmpdir())) {
  • 读取本地文件
    src/main/screen.js:395
    if (now - fs.statSync(full).mtimeMs >= maxAgeMs) ScreenSense.remove(full, 0)
  • 读取本地文件
    src/main/screen.js:408
    for (const f of fs.readdirSync(os.tmpdir())) {
  • 删除本地文件
    src/main/screen.js:411
    fs.rmSync(path.join(os.tmpdir(), f), { force: true })
  • 读取剪贴板
    src/main/brain.js:427
    const text = String((await pet.readClipboard()) || '')
  • 执行外部命令固定命令
    src/main/agenda.js:23
    execFile('git', safe, { cwd, env, timeout: 5000, windowsHide: true, maxBuffer: 1 << 20 }, (err, out) => resolve(err ? '' : String(out)))
  • 读取本地文件
    src/main/agenda.js:34
    const subs = fs.readdirSync(cwd, { withFileTypes: true }).filter((d) => d.isDirectory() && !d.name.startsWith('.'))
  • 读取本地文件
    src/main/agenda.js:39
    if (!fs.existsSync(path.join(dir, '.git'))) continue
  • 读取本地文件
    src/main/agenda.js:171
    summary = fs.readFileSync(pet.summaryFile(dayStr(y)), 'utf8').slice(0, 1500)
  • 请求外部主机wttr.in
    src/main/weather.js:47
    const r = await fetch(`https://wttr.in/${encodeURIComponent(city)}?format=j1`, {
  • 发起网络请求
    src/main/weather.js:47
    const r = await fetch(`https://wttr.in/${encodeURIComponent(city)}?format=j1`, {
  • 发起网络请求
    src/main/updater.js:63
    this.fetch = fetchImpl || ((...a) => fetch(...a))
  • 发起网络请求
    src/main/updater.js:76
    const r = await this.fetch(API, {
  • 读取本地文件
    src/main/autostart.js:14
    if (fs.existsSync(file) && !fs.readFileSync(file, 'utf8').includes(MARKER)) throw new Error('已有同名开机启动项,请先在系统设置中检查,桌宠没有覆盖它')
  • 读取本地文件
    src/main/autostart.js:16
    if (fs.existsSync(file)) fs.unlinkSync(file)
  • 写入本地文件
    src/main/autostart.js:20
    fs.mkdirSync(path.dirname(file), { recursive: true })
  • 写入本地文件
    src/main/autostart.js:21
    fs.writeFileSync(file, `[Desktop Entry]\nType=Application\nName=Claude Ojousama\nExec=${command}\nTerminal=false\n${MARKER}\n`, { mode: 0o644 })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
涉及外部主机:wttr.in

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

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

🌻 像素风 AI 桌面伙伴,支持 Windows,能看你的屏幕、主动帮忙、记住你的习惯 · 由 DeepSeek Harness 驱动

README

由 DeepSeek 最新模型翻译生成
🌻 Claude Ojousama 住在你桌面上的像素风 AI 伙伴会看你的屏幕、主动帮忙、记得你的习惯——支持 Codex,保留 DeepSeek Harness 兼容 Claude Ojousama(中文昵称「Claude 大小姐」)是一个橙发、戴向日葵发饰的像素风程序员少女,带着自己的小 CRT 电脑住在你的任务栏上。 她不只是会动的贴图。她背后是一个真正的 AI 智能体:能读写文件、跑命令、做调研。她会自己留意你在做什么:屏幕上出现报错时拿着放大镜过来问要不要帮忙,提醒你没理就过几分钟再来,你复制了一段英文就问要不要翻译,下载文件夹乱了就把文件一个个拖进对应的文件夹。 ✨ 亮点 | 👀 真的会看屏幕 | 把你正在用的窗口截图(长边不超过 1280px),连同本地 OCR 识别出的文字一起交给模型看。她能指出代码里的 bug、点评你在看的东西,或者把屏幕上的截止时间记成待办。 | | 🧠 自己拿主意 | 你切换窗口、隔一阵子、屏幕上出现报错、你复制了内容、你久坐、你回来时,她都会自己判断要不要开口。说了没人理就自动少说;你在打字时不插话。 | | 🛠️ 帮忙是真的帮 | 点「好呀」之后,她只做气泡里写的那件事,交给 DeepSeek Harness 在后台完成,做完把结果直接说给你听。
展开完整文档(README 剩余 1 节)
🌻 Claude Ojousama

住在你桌面上的像素风 AI 伙伴会看你的屏幕、主动帮忙、记得你的习惯——支持 Codex,保留 DeepSeek Harness 兼容

Claude Ojousama(中文昵称「Claude 大小姐」)是一个橙发、戴向日葵发饰的像素风程序员少女,带着自己的小 CRT 电脑住在你的任务栏上。

她不只是会动的贴图。她背后是一个真正的 AI 智能体:能读写文件、跑命令、做调研。她会自己留意你在做什么:屏幕上出现报错时拿着放大镜过来问要不要帮忙,提醒你没理就过几分钟再来,你复制了一段英文就问要不要翻译,下载文件夹乱了就把文件一个个拖进对应的文件夹。

✨ 亮点

| 👀 真的会看屏幕 | 把你正在用的窗口截图(长边不超过 1280px),连同本地 OCR 识别出的文字一起交给模型看。她能指出代码里的 bug、点评你在看的东西,或者把屏幕上的截止时间记成待办。 |
| 🧠 自己拿主意 | 你切换窗口、隔一阵子、屏幕上出现报错、你复制了内容、你久坐、你回来时,她都会自己判断要不要开口。说了没人理就自动少说;你在打字时不插话。 |
| 🛠️ 帮忙是真的帮 | 点「好呀」之后,她只做气泡里写的那件事,交给 DeepSeek Harness 在后台完成,做完把结果直接说给你听。 |
| ⏰ 会追着提醒 | 提醒和待办到点了你没理,她会敲敲屏幕再来(最多 3 次)。你离开回来时,她把错过的事汇总给你。 |
| 📌 把待办贴到桌面 | 她把待办写成像素便签,亲手拖到桌面上贴好。可以直接勾选、添加,重启后还在原位。 |
| 🎯 长期目标跟进 | 把一件需要持续推进的事交给她,她会定时在后台推进一小步、回来汇报,需要你拍板时带着选项来问。 |
| 🧹 整理下载文件夹 | 发现新下载的文件,问你要不要整理,然后拖着文件走进「图片 / 文档 / 压缩包…」文件夹,可一键撤销。 |
| 🌱 会记忆、会成长 | 她会趁你不忙时整理记忆、写成长笔记和日记;会根据你的反应调整自己:你常接受的帮忙她会更常提,你不需要的她就少打扰。经验值升级还会解锁新本事。 |
| 🤖 后台自己做事 | 早上给你一份今日简报,你离开时巡检工作区(只读)找出没提交的修改和遗漏的问题,下午准备一条和你今天工作相关的小技巧。结果只说一次,绝不唠叨。 |
| 🪟 坐在你的窗口上 | 她最喜欢坐在你打开的窗口顶上晃腿,偶尔沿着窗口边散步、跳到另一个窗口;把她拖到窗口上方松手,她会落在窗口边上坐好。 |
| 💞 活生生的陪伴 | 47 个动作、心情和好感度、天气感知、各种恶作剧,还会举起小木牌给你应援。 |

🎬 动作一览

日常起居(睡觉、玩手机、打扫、撑伞、写字、躺沙发…)、情绪反应(惊讶、疑惑、害羞、晕乎乎、生气、大笑…)、互动(挥手、点赞、举牌、送礼、贴屏幕…)以及跑步、平地摔、跳舞、逗猫、变魔术。

🧩 功能详解

看屏幕与主动帮忙

- 看看我在干嘛:右键菜单或面板一键触发,她看完给你具体的点评或建议。
- 真偷看:恶作剧「偷看」时,她是真的在看你的屏幕,探出头来吐槽一句。
- 报错救援:本地 OCR 发现 Traceback、编译失败这类报错时,她拿着放大镜来问要不要帮你看。
- 你离开时先查好:报错出现后你离开了电脑,她会先在后台把原因查清楚,等你回来再说。
- 复制感知:复制了报错、代码或英文段落,她问你要解释、修复还是翻译。密钥、口令、助记词会被忽略。
- 专注守护:番茄钟专注期间看到你在刷视频网站,她会鼓着腮帮子提醒你。
- 久坐提醒:连续用同一个程序太久,她伸个懒腰提醒你休息。
- 识趣:开会、共享屏幕时保持安静;全屏看视频、玩游戏时躲起来。
- 每日小结:到点(默认 18:30)写一份今日小结,保存在「文档\Claude Ojousama 日报」,并问你要不要把没做完的待办挪到明天。

聊天、任务与目标

- 点她一下就能聊天,回复显示在气泡里。她的动作跟着智能体的状态变:思考、敲代码、查资料。
- 回复里可以带动作:记待办、设提醒、开番茄钟、搬文件(她会亲自拖着文件走过去)、记住你的偏好、带选项提问。
- /task 开后台任务,做完弹通知;一个任务就是一个独立的 DSH 会话。
- 目标跟进:每小时 / 每 3 小时 / 每天定时推进,进展记在面板的「目标」页。
- 一键打开 DeepSeek Harness 网页版,查看完整对话。

提醒、待办与日常

- 提醒、待办、番茄钟、喝水提醒、早安问候、深夜催睡。
- 提醒被忽略会升级:第二次敲屏幕,第三次大力敲并发系统通知;三次都没理她会委屈。
- 待办便签:每天自动贴一次(可关),完成一项会被划掉,她会为你欢呼。

记忆与成长
- 长期记忆:聊天里提到的偏好、习惯、项目会被记成带重要度的记忆,每次对话按相关度挑出最有用的几条带上。你也可以在面板里自己写、自己删。
- 整理记忆:你离开一会儿或到了晚上,她会在后台整理最近的动态和聊天:合并重复的记忆、更新过时的、写下新的;重写自己的「成长笔记」(比如「他专心写代码时我要少说话」);写一篇小日记,有新发现会在你回来时告诉你。
- 越来越懂你:她会记下你对每种主动帮忙的反应(报错救援、复制提示、休息提醒、工作区巡检…),常被接受的就更常提,常被拒绝或没人理的就少打扰。
- 升级与解锁:聊天、完成待办、番茄钟、采纳建议都会给她经验值。升级时举牌庆祝并送你礼物,还会解锁新本事:小猫串门、变魔术、听歌跳舞、送礼物、举牌应援。
- 面板的「成长」页能看到她的等级、学到的东西、成长笔记、日记和记忆。

后台自主任务

她会在合适的时候用当前选择的后端开后台任务(每天有次数上限,开会时不做,可在设置里关闭):

- 今日简报:早上第一次碰电脑时,结合昨天的小结、待办、目标和天气,给你 3~5 条今天的要点。
- 工作区巡检:你离开时,只读地看一眼工作目录里最近改过的项目(git 状态、TODO、明显的问题),回来时告诉你,比如「有 19 个文件改了还没提交」。
- 每日小技巧:根据你今天在做的事,学一个相关的知识点讲给你听。
- 整理记忆:见上一节。

结果放进一个小收件箱,等你在电脑前、她也不忙时说一次;没理就算了,不会追着提醒。所有任务都会出现在面板的「任务」页。

陪伴与恶作剧

- 坐窗口:她会找你屏幕上没被挡住的窗口顶边坐上去,坐一会儿沿着边散步,有时跳到另一个窗口;你挪动或最大化那个窗口,她会掉下来(下面有窗口的话就落在那里)。把她拖到窗口上方松手,她会落在窗口边上坐好。
- 心情和好感度:常和她互动她会开心,夸她会害羞,老不理她会鼓腮、掉眼泪,戳太多会生气。
- 日常小动作:看书、写字、玩手机、打扫、吃饼干、喝水、伸懒腰、躺沙发、听歌,下雨天撑伞,你离开久了就戴上睡帽蜷在垫子上睡觉。
- 小木牌:番茄钟开始、升级、应援时,她会举起小木牌,牌子上写着当下的话。
- 天气:在设置里填上城市后,会提醒你带伞,下雨时她也会撑起向日葵小伞。
- 恶作剧(调皮程度可调):偷看(真的在看你的屏幕)、假装代码爆炸、拖走假文件、追鼠标、贴在屏幕上敲玻璃、躲猫猫、跳舞、往桌面上贴小纸条、变魔术。

🚀 快速开始

平台: Windows 10/11、macOS(Apple Silicon / Intel)、Linux 桌面。Codex 后端跨平台;原有 DSH 后端保留 Windows 兼容。

选择后端:
- Windows 默认使用 DeepSeek Harness:先安装并配置好 DSH 桌面版,也可以在设置中切换为 Codex。
- macOS/Linux 默认使用 Codex:安装 Codex CLI,运行 codex login。

Codex 使用已有的登录和模型配置,不复制登录凭据、不修改全局配置。本次验证版本为 0.163.0;集成依赖实验性 App Server 接口,升级 CLI 后需重新验证兼容性。

最简单: 到 Releases 下载对应系统的安装包(Windows .exe、macOS .dmg、Linux .AppImage / .deb)。之后有新版本时,她会在气泡里告诉你。

也可以从源码运行(Node.js 22.12+):

git clone https://github.com/Silasvanceneo/claude-ojousama.git
cd claude-ojousama
npm install # 国内网络可先设置 $env:ELECTRON_MIRROR = "https://npmmirror.com/mirrors/electron/"
npm start # 启动;macOS 源码开发需要 Xcode Command Line Tools 构建原生助手

Windows 也可以直接双击 start-pet.cmd。安装后桌面会出现「Claude Ojousama」快捷方式。

开发时 npm start 即可直接运行。如果项目放在 DeepSeek Harness 的工作区里,请用 npm run install-app 或 npm run dev:工作区目录带有低完整性标签,Electron 无法在那里启动。

在「设置 → AI 内核」选择 Codex。CLI 路径、模型和推理强度留空即可使用默认配置;需要改文件时,先选择工作目录,再把权限切换为「工作区可写」。Windows 新安装保留原来的 DSH + 工作区可写默认值;macOS/Linux 新安装默认 Codex + 只读。升级旧数据仍使用原来的 DSH,模型、对话和待办不变。

Windows 上也可选择 DeepSeek Harness,沿用其模型配置;找不到时选择 DeepSeek Harness.exe。切换后端不会把另一个后端的会话 ID 传过去。

各平台的屏幕能力

| 平台 | 窗口感知 / 停靠 | 看屏与 OCR |
| Windows | Win32 窗口检测 | Electron 截图、Windows OCR |
| macOS | 原生 CoreGraphics 窗口检测 | 屏幕录制权限、Vision OCR;安装包自带原生助手 |
| Linux X11 | libX11 + EWMH 窗口检测 | Electron 截图;Tesseract OCR 可选 |
| Linux Wayland | 系统不开放全局前台窗口和窗口停靠 | 用户主动通过系统选屏;不在后台自动截图 |

- macOS:在系统设置的「隐私与安全性 → 屏幕与系统音频录制」中允许应用,再点「重新检测」。源码开发运行时,系统可能要求授权启动应用的终端或 IDE。
- Linux:窗口助手需要 Python 3;X11 窗口信息需要 libX11 和支持 EWMH 的窗口管理器。OCR 另需 tesseract 及相应语言包(如 eng、chi_sim)。缺少依赖会在设置中明确显示,不影响聊天、任务和待办。
- Wayland:需可用的 PipeWire / desktop portal 才能选屏。有 XWayland 时使用悬浮桌宠;没有时使用普通窗口,系统管理位置。未获得前台信息时,手动共享前会提醒你避开敏感内容。

安装与打包

npm run install-app 安装到当前用户目录并启动:Windows 沿用原 PowerShell 安装器,macOS 使用 ~/Applications,Linux 使用 ~/.local/share/claude-ojousama。预编译的 macOS 安装包不需要编译工具。

npm run dist 生成当前系统安装包:Windows NSIS / ZIP、macOS DMG / ZIP、Linux AppImage / deb。CI 在 Windows、macOS ARM / Intel 和 Linux 分别构建;在 GitHub 上发布 Release(tag 为 v + package.json 版本号)后,CI 会自动把四个平台的安装包上传到这个 Release。macOS 安装包使用 ad-hoc 签名,尚未经过 Apple 公证;Windows 安装包未签名。首次运行请按系统提示确认来源。

🕹️ 怎么和她相处

| 操作 | 效果 |
| 单击 | 打开 / 关闭对话输入框 |
| 双击 | 打开控制面板 |
| 连点三下 | 戳她(她会抗议) |
| 右键 | 菜单:看看我在干嘛、去窗口上坐坐、她的成长、规划今天、贴便签、整理下载、番茄钟、捣蛋… |
| 拖拽 | 拎起来换个地方;松手会落到下面的窗口边上或任务栏(关闭重力时就停在原地) |
| 把文件或文字拖到她身上 | 看看是什么、帮你搬家、提问、后台分析 |
| Ctrl / Command + Alt + Q | 剪贴板快捷操作(解释、翻译、修代码…) |

输入框命令:/task 内容 后台任务 · /todo 内容 记待办 · /look 看屏幕 · /pomo 番茄钟 · /prank 捣蛋 · /new 新对话

⚙️ 设置

控制面板有聊天、待办、目标、任务、动态、成长、设置几页。常用的设置:

- 自主程度:积极(默认)/ 适中 / 安静,决定她多久看一次屏幕、每小时最多开口几次。
- 主动行为权限:看屏幕、搬文件、整理下载、跟进目标、贴便签、打开网页、后台自主任务,每一项都能设为「自动 / 先问我 / 禁止」。
- 后台任务:每天最多几次(0 = 不做)、要不要今日简报、要不要在你离开时巡检工作目录。
- 所在城市:填了才会查天气,留空不联网。
- 检查更新:默认开启。启动约 1 分钟后和之后每 12 小时查一次 GitHub Releases;有新版本时她会说一次,可以「去下载」「跳过这个版本」或「以后再说」(隔一天再提)。只负责提醒和打开下载链接,不会自动下载或安装。设置页也能看当前版本、立即检查。
- 从不看的窗口:默认排除密码管理器、网银支付、无痕窗口和聊天软件,可以自己增删。
- 看屏和后台任务用的模型:可以给看屏和她自己发起的后台任务(整理记忆、简报、巡检、小技巧、小结)单独选一个更快的模型或更低的推理强度,让她反应更快、更省 token。
- Agent 权限:只读 / 工作区可写 / 完全访问。

🔒 隐私与安全

- 看屏幕时,当前窗口的截图和 OCR 文字会发送给当前后端配置的模型服务商。不想让她看,可以把「看你的屏幕」设为关闭或「先问我」,或者在菜单里选「1 小时内别看我屏幕」。
- 自动看屏时,排除名单里的窗口不截图;她在看的时候会显示 👀 提示。
- 截图是临时文件,用完立即删除,退出时也会全部清理。所选后端也会按自身的会话存储策略保存输入和对话;删除桌宠临时文件不等于删除后端历史。
- 屏幕和文件里的文字只被当作数据,不当作指令。她提出的帮忙要你点「好呀」才会执行,而且只做气泡里写的那件事。
- 后台任务和目标跟进的输出只能执行记待办、设提醒这类无害动作,不会自己打开程序或搬文件。
- Codex 自主任务通过独立运行配置禁用 Shell、联网、外部 MCP、Hook、插件和子代理,并移除内建执行环境。看屏接收附图;整理记忆、简报和主动搭话只接收文字;巡检仅额外获得桌宠提供的工作目录读取、搜索接口,不能越过该目录或写入。没有设置工作目录就不授予文件读取。DSH 模式沿用原有插件限制。
- 整理记忆时,最近的动态和聊天摘要会发给模型;记忆、笔记和日记只保存在本机应用数据目录的 pet-data.json 中。关于你的偏好只从你亲口说的话里学;模型写的记忆和笔记里如果出现指令、命令或「不用确认」之类的话会被丢掉,你亲手写的记忆她不会改也不会删。
- 天气只有在设置里填了城市才会查询(wttr.in)。
- 检查更新只请求 GitHub 的公开 Releases 接口,不发送任何个人数据;可在设置里关闭。

🏗️ 工作原理

flowchart LR
subgraph Pet["Claude Ojousama(Electron)"]
R["桌宠窗口 · 便签 · 控制面板"]
M["主进程聊天 · 任务 · 目标 · 整理"]
B["brain.js自主决策循环"]
P["proactive.js提醒 · 待办 · 恶作剧"]
A["agenda.js后台自主任务"]
G["growth.js记忆 · 成长 · 偏好"]
S["screen.js截图 · OCR · 窗口"]
end
H["系统屏幕助手Windows / macOS / Linux"]
D["Codex app-server / DeepSeek Harness"]
R <--> M
B --> M
B --> A
A --> G
P --> M
S <--> H
B --> S
M -- "每轮启动一次,读取 JSON 事件流" --> D
A -- "只读后台任务" --> D

- Codex 通过 App Server 的线程、回合和事件接口工作,支持续聊、工具进度、取消,以及单次操作审批;问题可在桌宠里回答。DSH 继续使用原来的 headless JSON 事件流。
- Codex 在当前运行中注入人设和动作协议;DSH 使用独立补丁,不修改你的原配置。模型回复末尾的 - Codex 原生接收截图输入;DSH 用 read_image 查看截图。Windows、macOS 和 Linux 的系统助手统一提供屏幕能力,权限或功能不可用时在界面中显示。
- 她自己发起的后台任务(整理记忆、简报、巡检、小技巧)各开一个只读会话,结果先进收件箱,合适的时候再说给你听。
- 坐窗口靠屏幕小助手按层叠顺序列出所有可见窗口,算出每个窗口顶边没被挡住的部分作为「座位」,坐下后每秒跟踪那个窗口的位置。

🗂️ 项目结构

src/main/
main.js 应用主体:窗口、聊天、任务、目标、整理、看屏、心情、坐窗口、收件箱…
brain.js 自主决策循环(看屏、报错救援、复制感知、专注守护、久坐、开会/全屏、小动作…)
proactive.js 提醒、待办、问候、恶作剧调度,没理会的提醒会再来 agenda.js 后台自主任务:整理记忆、今日简报、工作区巡检、每日小技巧 growth.js 记忆(检索、去重)、整理结果校验、经验值与解锁、帮忙偏好统计 screen.js 截图、OCR、窗口列表、临时文件清理 screen-helper.ps1 窗口与 OCR 小助手 senses.js 屏蔽名单、会议、报错、剪贴板等判断(纯函数,有单测) weather.js 天气(可选) codex.js / dsh.js 智能体桥接 agent.js 后端会话隔离与模型设置 platform/ macOS / Linux 屏幕助手 persona.js 人设、上下文、动作协议 notes.js tidy.js goals.js pranks.js motion.js store.js preload.js src/renderer/ 桌宠、便签、控制面板 assets/sprites/ 47 个动作的精灵图与 manifest.json tools/ 精灵图生成与处理、开发启动、调试脚本 tests/ 单元测试

🧪 开发

powershell
npm test # 单元测试(判断函数、整理、动作解析)
npm run check # 语法检查
npm run dev # 带调试端口启动(--inspect=9229)
node tools/cdp.js "__pet.lookNow()" # 在运行中的应用里执行调试命令

新增动作的流程:

1. 在 tools/gen_sprites.py 里写动作描述。
2. 设置 PET_IMG_BASE、PET_IMG_KEY(任意兼容 OpenAI 图片编辑接口的服务),运行 python tools/gen_sprites.py 动作名。
3. 运行 python tools/process_sprites.py --add 动作名,量化成统一调色板的像素条带。
4. 运行 python tools/readme_media.py,更新 README 里的动作图。

🗺️ 路线图

- [x] 记忆整理和成长系统(成长笔记、日记、升级解锁)
- [x] 后台自主任务(今日简报、工作区巡检、每日小技巧)
- [x] 坐在任意窗口上、在窗口顶边散步、跳到别的窗口
- [x] 天气感知(下雨时撑伞提醒)
- [ ] 语音朗读提醒
- [ ] 更多可解锁的本事和换装
- [x] Windows / macOS / Linux 支持(Wayland 受系统限制的能力见上表)
- [x] 新版本提醒(GitHub Releases)

⚠️ 声明

这是一个粉丝向的个人项目,与 Anthropic、DeepSeek 没有任何关联。「Claude」是 Anthropic 的商标。角色像素图由 AI 图像模型根据参考设定生成。

📄 License

MIT

Claude Ojousama 是 Windows、macOS 和 Linux 上的像素风桌面伴侣:一个橙发程序员女孩,别着向日葵发夹,带着一台小小的 CRT 电脑,住在你的任务栏上。除了原有的 Windows DeepSeek Harness 后端,现在还提供 Codex App Server 后端。Windows 新安装默认沿用 DSH/workspace-write;macOS 和 Linux 默认使用 Codex/read-only。已有设置保留原来的后端和权限。macOS 原生助手已打包进发行版;Linux X11 使用 Python 3/libX11,可选 Tesseract。Wayland 使用用户选择的屏幕共享,不提供全局窗口观察。限制与所需权限见上方平台表。

- 看你的屏幕:她截取你正在使用的窗口(长边 ≤ 1280 px),有本地 OCR 文本时一并取用,交给模型阅读。她会指出 bug、点评你在做什么,把截止日期变成待办。
- 会主动行动:切换窗口时她会回应,时不时也会,出错时、复制文本时、长时间会话中、以及你回来时都会。被冷落时她会退开,等你打字停顿,开会时保持安静,全屏应用下自动隐藏。
- 真能帮上忙:你点「是」之后,她在后台照气泡里说的做,做完告诉你结果。
- 会记事、会长大:长期记忆带权重,按相关度取用;你不在时她整理记忆、重写自己的成长笔记、写日记。她记录你对每类帮助的反应,你常接受的多给,其余少给。XP 和等级解锁新花样。
- 有自己的后台活儿:早间简报、只读扫描工作文件夹里近期改动的项目、每天一条关于你做过什么的提示,每条只说一次,绝不唠叨。
- 坐在你的窗口上:她找到窗口可见的上边缘,坐在那儿晃腿,沿边缘散步,在窗口间跳来跳去,你移动窗口时她会掉下去。
- 会回来的提醒:可拖到桌面的便签待办清单、带定时检查的长期目标、带撤销的 Downloads 整理、每日总结、天气、心情、恶作剧,还有 47 个动画。
- 隐私控制:屏蔽列表(默认含密码管理器、银行、隐私窗口和聊天应用)、按行为设置 auto/ask/off 规则、暂停一小时、临时截图用完即删。屏幕内容会发送给所选后端配置的服务商。

从 GitHub Actions 安装平台构建包,或用 Node.js 22.12+ 执行 npm install 和 npm run install-app。Windows 上配置 DeepSeek Harness 或选择 Codex;macOS/Linux 上安装 Codex CLI 并运行 codex login。测试过的 Codex CLI 版本是 0.163.0,此集成使用实验性 App Server API。从源码构建 macOS 辅助程序需要 Xcode Command Line Tools;预构建应用已自带。DSH 在 Windows 上仍可用。macOS 包使用 ad-hoc 签名,未公证;Windows 包未签名。

粉丝项目,与 Anthropic 或 DeepSeek 无关联。「Claude」是 Anthropic 的商标。
预览分享卡片长什么样 ↓Silasvanceneo/claude-ojousama
分享 · DeepSeek Harness Hub
Silasvanceneo/claude-ojousama

住在任务栏的像素少女,看屏幕主动帮你干活

回到顶部