耀嘉音Astra Yao桌面宠物:既是一份 Codex 桌宠素材包,也是一个 DeepSeek Harness…
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/hongxin-y/codex-pet-Astra-Yao.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/25) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 25 处,展示前 22 条)
- 读取本地文件src/index.js:57
const packageJson = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')) - 读取本地文件src/index.js:129
stats = await stat(file) - 读取本地文件src/index.js:136
const entry = { version, etag: `"${version}"`, data: await readFile(file) } - 发起网络请求lib/client.js:944
request = fetch(apiUrl(`/plugins/${PLUGIN_ID}/balance${suffix}`), { - 发起网络请求lib/client.js:1083
const response = await fetch(apiUrl(`/plugins/${PLUGIN_ID}/state`), { - 发起网络请求lib/client.js:1132
fetch(apiUrl(`/plugins/${PLUGIN_ID}/config`), { - 发起网络请求lib/client.js:1159
fetch(apiUrl(`/plugins/${PLUGIN_ID}/ack`), { - 读取本地文件scripts/build-client.mjs:28
const pkg = JSON.parse(readFileSync(new URL('package.json', root), 'utf8')) - 读取本地文件scripts/build-client.mjs:29
const rawCore = await readFile(new URL('src/client.core.js', root), 'utf8') - 写入本地文件scripts/build-client.mjs:66
await mkdir(new URL('lib/', root), { recursive: true }) - 写入本地文件scripts/build-client.mjs:67
await writeFile(target, output, 'utf8') - 执行外部命令来自配置/变量scripts/pack-atlas.mjs:8
const result = spawnSync(process.env.PYTHON || 'python', [script, ...process.argv.slice(2)], { - 读取本地文件scripts/verify.mjs:40
return JSON.parse(await readFile(new URL(path, root), 'utf8')) - 读取本地文件scripts/verify.mjs:44
return readFile(new URL(path, root), 'utf8') - 读取本地文件scripts/verify.mjs:102
if (!existsSync(new URL(pkg.main, root))) fail(`package.json main ${pkg.main} does not exist`) - 读取本地文件scripts/verify.mjs:124
if (!existsSync(bundlePath)) { - 读取本地文件scripts/verify.mjs:127
const bundle = await readFile(bundlePath, 'utf8') - 读取本地文件scripts/verify.mjs:128
const bundleStat = await stat(bundlePath) - 发起网络请求src/client.core.js:931
request = fetch(apiUrl(`/plugins/${PLUGIN_ID}/balance${suffix}`), { - 发起网络请求src/client.core.js:1070
const response = await fetch(apiUrl(`/plugins/${PLUGIN_ID}/state`), { - 发起网络请求src/client.core.js:1119
fetch(apiUrl(`/plugins/${PLUGIN_ID}/config`), { - 发起网络请求src/client.core.js:1146
fetch(apiUrl(`/plugins/${PLUGIN_ID}/ack`), {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(99 字)↓
耀嘉音(Astra Yao)桌面宠物:既是一份 Codex 桌宠素材包,也是一个 DeepSeek Harness 插件(dsh-pet-astra-yao),会跟着会话状态换动作、说话并显示余额。
README
由 DeepSeek 最新模型翻译生成Astra Yao · Codex 桌宠 ⇄ DSH 插件
同一个仓库,两份可直接用的产物:
- DeepSeek Harness(DSH)插件 —— 装进 profile 后,Astra Yao 悬浮在 Web 界面右下角,跟着会话状态换动作,头顶有状态气泡、脚下有余额条。
- Codex 桌宠素材包 —— pet.json + spritesheet.webp,复制到 %USERPROFILE%\.codex\pets\astra-yao 即可给 Codex 用。
两边共用同一张 1536×2288 的 Codex v2 图集(8 列 × 11 行,单帧 192×208),没有第二份拷贝。
角色:深墨绿长发、红黑外套、白裙、金色环形话筒立杖的舞台歌手像素小人。
它在 DSH 里的状态按她的口吻来写——后台待机 / 构思中 / 执行中 / 候场中 / 破音了。
展开完整文档(README 剩余 1 节)
Astra Yao · Codex 桌宠 ⇄ DSH 插件 同一个仓库,两份可直接用的产物: - DeepSeek Harness(DSH)插件 —— 装进 profile 后,Astra Yao 悬浮在 Web 界面右下角,跟着会话状态换动作,头顶有状态气泡、脚下有余额条。 - Codex 桌宠素材包 —— pet.json + spritesheet.webp,复制到 %USERPROFILE%\.codex\pets\astra-yao 即可给 Codex 用。 两边共用同一张 1536×2288 的 Codex v2 图集(8 列 × 11 行,单帧 192×208),没有第二份拷贝。 角色:深墨绿长发、红黑外套、白裙、金色环形话筒立杖的舞台歌手像素小人。 它在 DSH 里的状态按她的口吻来写——后台待机 / 构思中 / 执行中 / 候场中 / 破音了。 English: Astra Yao is a Codex-v2 sprite-atlas desktop pet that also ships as a DeepSeek Harness plugin. The server half follows session events (idle / thinking / running tools / waiting for approval / failed) and exposes a small loopback HTTP API; the browser half paints the sprite in a shadow-root widget with drag-to-move, a status bubble, a right-click menu, 16-direction pointer look, and an optional DeepSeek balance bar whose "today" figure comes from the platform usage endpoint. Install: dsh plugin --profile desktop add <path-to-this-repo>. 两个身份 | 你是 | 怎么用 | 需要的文件 | | DSH 用户 | dsh plugin --profile desktop add <本仓库路径> | package.json、cordis.patch.yml、src/、lib/、spritesheet.webp | | Codex 用户 | 把 pet.json + spritesheet.webp 放进 %USERPROFILE%\.codex\pets\astra-yao\(见 USAGE.md) | 只有 pet.json + spritesheet.webp | Codex 只认这两个文件,所以 DSH 那套 src/、test/、lib/ 放在同一层不影响它;DSH 的 sprite 也直接读根目录图集。 看效果 DSH 右下角:状态气泡写着「构思中」,脚下是点击可刷新的余额条 五种状态共用同一套画法,切换时不跳身形、不换手: | 会话在做什么 | 它做什么 | | 空闲 | 待机呼吸、眨眼,气泡每 9 秒轮换一句她的台词 | | 模型在思考 | 托腮构思(review) | | 有工具在跑 | 小跑(running),气泡写工具名 | | 等你确认 / 回答 | 托腮候场(waiting),气泡写等你做什么 | | 出错 | 低头破音(failed),点一下「我知道了」即恢复 | 鼠标靠近 280 px 内她会看向光标:图集第 9–10 行是 16 个屏幕方向(0° 朝上,顺时针每 22.5° 一格),按光标方位取帧、带 2.5° 迟滞;移开 2.5 秒后回到待机循环。 装进 DSH DSH 的插件 = profile 里的一个依赖 + 一条 bundle 记录。仓库根目录就是插件包。 命令行(开发时推荐,link: 指向工作区,改代码即时生效) dsh plugin --profile desktop add D:\Repos\pet-astra-yao 这一步会把包链进 profile 的 node_modules,并把包名追加到 profile 的 dsh.profile.bundles。 少数版本不会自动追加,这时在 %USERPROFILE%\.dsh\profiles\desktop\package.json 里补一行 "bundles": [ "...原有的...", "dsh-pet-astra-yao" ]。 图形界面 —— DSH Web 的「设置 → 插件 → 从本地路径安装」,装完点「立即启用」,配置会渲染成表单。 直接从 GitHub 装(不用克隆) dsh plugin --profile desktop add github:hongxin-y/codex-pet-Astra-Yao pnpm 会拉仓库并跑 prepare 生成 lib/client.js;这是独立副本,改代码不会热更新。 装好后刷新页面:右下角出现 Astra Yao 即成功。它可与其他桌宠插件(如 dsh-pet-remielle)共存,各自记位置。 更新之后要做什么 | 改了什么 | 需要 | | src/.js(服务端、配置 schema) | 重启一次 DSH | | lib/client.js(浏览器端) | 刷新页面 | | spritesheet.webp(图集) | 什么都不用做:按 mtime + ETag 校验,客户端还会带 ?v=<sheetVersion> 换 URL | | cordis.patch.yml 新增字段 | 重启一次 DSH | DSH 0.2.1-rc.3 起 cordis 拒绝读取未经 inject 声明的服务(cannot get property "x" without inject)。 直接读 ctx.credentials 会让服务端那一半在启动时静默失败,表现是只剩气泡、写着「未连接」。 本插件(0.1.1+)全部通过 ctx.inject([...], scoped => …) 取服务,缺服务时降级而不是报错。 给 Codex 用 $dest = "$env:USERPROFILE\.codex\pets\astra-yao" New-Item -ItemType Directory -Force $dest | Out-Null Copy-Item pet.json, spritesheet.webp $dest 细节(目录结构、版本号、常见问题)见 USAGE.md。 交互 | 操作 | 效果 | | 拖动 | 移动位置(拖动时播放左右跑),松手存回配置;locked 时不可拖 | | 单击 | 原地挥手(第 3 行 4 帧)并应一句「在呢~/叫我?」;报错状态下点一下即「我知道了」 | | 右键 | 菜单:显示桌宠、大小、不透明度、动画速度、锁定位置、左右镜像、跟随光标、状态气泡、显示余额、余额条、回右下角、我知道了 | | 隐藏后 | 右下角留一个小圆点,点它把桌宠叫回来 | 「思考 ↔ 执行」来回抖动时动画不会一秒一重启:升级(执行、等待、报错)立即切换,回落要等当前动作播满 1.5 秒。 状态映射 服务端订阅 DSH 会话事件,折算成状态再喂给客户端: | DSH 会话事件 | 桌宠 | | turn/start | 构思中(review) | | tool/call(有工具在跑) | 执行中(running) | | ask_user_question / exit_plan_mode / approval/asked | 候场中(waiting) | | turn/end + reason.kind === "completed" | 后台待机 + 谢幕跳一下(jumping,5 秒内一次) | | 工具报错 / 异常结束 | 破音了(failed),点一下或开下一轮恢复 | | turn/end + blocked | 候场中 | | turn/end + aborted / disposed | 后台待机 | 子会话默认忽略;打开 includeSubagents 后子代理的活动也会驱动桌宠。 气泡、台词与余额 气泡写三行:状态、细节(工具名 / 等你做什么 / 报错原文)、项目 · 会话标题。 它贴着桌宠所在那一侧展开,小尖角指向桌宠;顶部放不下时翻到下方,最小 128 px、最大 240 px。 待机时整块换成她的台词,每 9 秒轮换: 今夜,星光灿烂。 / 这个世界上最闪亮的东西,当然是爱! / 一段安宁的间奏,正好休息~ / 短暂的停顿,会让旋律更甜。 / 要不要听首歌?咳—— / 让旋律带着你走~ 前两句出自官方角色介绍与角色 PV 标题,其余取自游戏内语音(待机 / 都市漫游),英文条目由本插件译为中文。 任务完成那几秒先显示「完美谢幕~」。 余额有三个来源,按顺序尝试,都没有才显示「未配置 Key」,不编数字: 1. DSH 的 deepseekAccount 服务读登录账户钱包(账户登录不需要 API Key); 2. credentials 里的 DEEPSEEK_API_KEY(https://api.deepseek.com/user/balance); 3. 环境变量 DEEPSEEK_API_KEY。 充值与赠金是两个钱包、各自扣款,所以按币种求和显示,悬停能看到 充值 50.00 + 赠金 2.73 的拆分。 今日消耗优先用平台自己的用量接口:读 DSH 存下的账户凭证(~/.dsh/.credentials.yaml 里的 deepseek-account-platform/default,只读、不落盘),请求 GET https://platform.deepseek.com/api/v0/usage/by_api_key/cost ?start=<当天零点>&end=<次日零点>&tz=<时区秒> # 必须整点对齐,按小时分桶 [&api_key_tracking_id=<id>...] # 不传 = 账号下全部 Key Header: x-dsh-auth-token: <grant> 把序列求和,就是 platform.deepseek.com 用量页「今日 Cost」那个数——覆盖所有 Key,也不受插件何时启动影响。 悬停会写 今日 ¥12.15(平台用量统计) 并列出各 Key 分项。 拿不到凭证或接口失败时退回估算:按余额下降累计,账本在 %USERPROFILE%\.dsh\.dsh-pet-astra-yao-usage.json,跨天归零、充值不记负数;这种口径只能统计观测之后的下降,所以提示会写明「13:02 起观测」。 脚下余额条默认打开:药丸形状的小横条写 余额 ¥37.71 · 今日 ¥12.15,点一下立即刷新。 它跟着桌宠缩放、拖拽、换位;菜单里的「余额条」可单独关掉,与气泡第三行的「显示余额」互不影响。 配置 配置存在 profile 的 cordis.patch.yml,也就是插件页表单背后的那份: | 字段 | 默认 | 说明 | | enabled | true | 是否启用 | | scale | 1 | 缩放,0.5–2 | | opacity | 1 | 不透明度,0.3–1 | | speed | 1 | 动画速度,0.5–1.6 | | mirror | false | 左右镜像 | | lookAtPointer | true | 光标靠近时看向光标 | | locked | false | 锁定位置,禁止拖动 | | hidden | false | 隐藏(留一个小圆点) | | paused | false | 暂停逐帧动画 | | showBubble | true | 头顶状态气泡 | | showBubbleUsage | false | 气泡里显示余额与今日消耗 | | showBalanceBar | true | 脚下余额条 | | includeSubagents | false | 子代理是否也驱动桌宠 | | posX / posY | null | 上次拖到的位置,null = 贴右下角 | 菜单和拖拽的改动会 PATCH 回服务端并写进配置作用域,下次打开自动恢复。 HTTP 接口 都挂在 /plugins/dsh-pet-astra-yao 下,只接受本机回环地址(非回环、Host/Origin 不匹配一律 403): | 方法 | 路径 | 用途 | | GET | /state | 快照:插件版本、配置、图集描述、当前会话状态 | | GET PATCH POST | /config | 读 / 合并式改配置(未知字段 400) | | POST | /ack | 清掉报错状态 | | GET | /balance | 余额 + 今日消耗(?refresh=1 跳过 60 秒缓存) | | GET | /spritesheet | 图集本体,image/webp,带 ETag | | GET | /manifest | pet.json,同样带 ETag | 客户端不依赖任何前端框架,只用 DSH 基线模块,所以 dsh.client.inject 是空数组。 服务端对 @deepseek-ai/schemastery 是「有则用、无则跳」:link: 安装不会装它的依赖,拿不到 schema 时插件照常跑,只是插件页没有表单。 图集 | 行 | 内容 | 播放 | | 0 | 待机(呼吸、眨眼) | 6 帧 / 160 ms | | 1–2 | 向右跑 / 向左跑 | 8 帧 / 120 ms | | 3 | 挥手 | 单击播 4 帧 / 200 ms | | 4 | 跳跃(收尾谢幕用) | 5 帧 / 140 ms | | 5 | 出错(低头、叹气) | 8 帧 / 140 ms | | 6 | 等待(托腮) | 6 帧 / 150 ms | | 7 | 执行中(专注、手指计数) | 6 帧 / 120 ms | | 8 | 思考(托腮、目光微动) | 6 帧 / 360 ms | | 9–10 | 16 个屏幕方向(0° 朝上,顺时针每 22.5° 一格) | 默认跟随光标,2.5° 迟滞 | 固定约定:所有行共用同一人物设定与脚底基线,持杖手固定在画面左侧,动作里抬起的是另一只手;跨行切换时裙摆、腿部站姿和法杖位置不跳。 python scripts/audit-atlas.py spritesheet.webp # 行高、宽度、脚底基线、朝向两行、面部区域 OK 只代表结构通过,人物比例与动作连贯仍需目检;判定标准和逐行要求写在 docs/atlas-brief.md,本轮复查记录见 docs/atlas-review.md,逐状态动图在 docs/atlas-qa/,编译用的母版与注册信息在 assets/atlas-source/coherent/。 开发 npm run build # 改完 src/client.core.js 后重新生成 lib/client.js npm run verify # 清单字段、补丁行、bundle、图集尺寸自检 npm test # node:test:atlas / config / state / client / host / server / balance / account / usage npm run test:atlas # Pillow:审计脚本回归 python -B test/pack_atlas_test.py # 打包器:像素不变、异常时保留旧图集 python scripts/preview-atlas.py # 逐帧预览与母版裁块 lib/client.js 是提交进仓库的构建产物——DSH 启动时直接读它,不会帮你编译,所以改完源码记得 npm run build 再一起提交。自己写桌宠时可以直接复用 src/atlas.js:它只描述 Codex atlas 的几何与动画表,不碰 DOM、没有依赖。 项目结构 pet-astra-yao/ |-- package.json # DSH 插件清单:dsh.bundle / dsh.client / exports |-- cordis.patch.yml # 插件行:装进 profile 的那一条 insert |-- src/ | |-- index.js # 服务端插件:会话跟踪、配置、/plugins/dsh-pet-astra-yao/ | |-- state.js # 会话事件 → 桌宠状态(纯函数) | |-- atlas.js # Codex atlas 契约:行列、帧数、方向、取帧 | |-- balance.js # 余额:账户钱包 → API Key → 环境变量 | |-- account.js # 钱包列表 → 余额(纯映射) | |-- usage.js # 今日花费:平台用量接口 | |-- config.js # 配置归一化与 PATCH 校验 | -- client.core.js # 浏览器端源码(影子 DOM、拖拽、气泡、菜单、轮询) |-- scripts/ # build-client.mjs / verify.mjs / audit-atlas.py / pack-atlas.* |-- lib/client.js # 构建产物(已提交) |-- test/ # node:test + Pillow 回归 |-- assets/atlas-source/ # 图集母版、逐行裁块、注册与打包清单 |-- docs/ # 需求文档、复查记录、逐状态预览、本文用图 |-- pet.json # Codex 宠物清单 |-- spritesheet.webp # 图集(同时被 DSH 以 /spritesheet 提供) -- USAGE.md # Codex 桌面端安装说明 素材与权利 像素美术与角色形象来自原仓库;角色「Astra Yao(耀嘉音)」及相关设定的权利归原权利人所有,本仓库只做桌宠资源的整理与 DSH 插件化,未附带额外许可证。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
hongxin-y/codex-pet-Astra-Yao
耀嘉音Astra Yao桌面宠物:既是一份 Codex 桌宠素材包,也是一个 DeepSeek Harness…
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,125已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,465已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,457已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,710已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,378已汉化DSH
70.2
这是你的仓库?认领条目