Repository navigation
Releases
Releases · Abyssun/dsh-achievements
v0.1.7
本版更新
兼容
- 适配 DSH
0.2.1-rc.2。核对范围:兼容门(engines.dsh单独判定)、投影 seam(stateSchema、stateVersion、init、apply、stateOf)、sessionQuery与sessions服务、typert manifest 校验、客户端__ModuleLoader__与main/sidebar.panellist/settings.plugins.tab槽位、remote.$mount、remote 的{ ok, value }信封、会话日志文件名。上述接口均未变更,本版本不修改调用方式。
变更
- 账号接口上报的客户端版本改为读取
window.__DSH_BOOT__.release.version;读取失败或格式不合法时使用内置常量。 smoke:compat的检查版本表加入0.2.1-rc.2。
安装
推荐跟随 main(应用内插件市场 / 插件管理里填来源):
github:Abyssun/dsh-achievements
想钉死版本就用 commit:
github:Abyssun/dsh-achievements#a849a379a6e1825d48675b85439907156669d024
或直接用本 Release 的产物:
pnpm add https://github.com/Abyssun/dsh-achievements/releases/download/v0.1.7/dsh-achievements-0.1.7.tgz装完必须重启 DSH:已装插件没有热重载。
Full Changelog: v0.1.6...v0.1.7
v0.1.6
本版更新
修复
- 历史会话统计不到(只有当前会话有数据)。
ctx.get("sessionQuery")在
[Service.init]阶段拿不到这个服务:插件按顺序加载,
@deepseek-ai/dsh-session-query提供服务比本插件晚,而ctx.get()不等待服务出现。
表现为界面能出数、但只有当前活会话那一份(诊断里cold=0)。
改为用ctx.inject(["sessionQuery"], …)等依赖到位再启动回填
(投影注册表一直好用,正因为它走的就是 inject),并加 5s 兜底避免界面永远显示「扫描中」;
诊断新增query=字段如实上报。 - 部分历史会话读不到(导致总计偏低)。少数会话的 descriptor 版本不被 DSH reader 接受
(例如subagent/descriptor 0 uses unsupported descriptor version 2),
readSession()直接拒绝它们。实测这些日志的事件形状是兼容的,
所以新增了原始日志兜底:自己解多帧 zstd(用 Node 内置zlib,无额外依赖)、
按seq只取真事件、按官方规则跳过继承前缀,再交给同一套折叠逻辑。
诊断新增raw=报告兜底成功的会话数。 - 同名模型无法区分。模型 key 是
provider::model,不同 provider(通道)可以有同名模型 ——
实测deepseek-account::deepseek-flash与deepseek-official::deepseek-flash是两条通道,
数据当然不同。界面此前只显示模型名,于是两行看起来一模一样。
现在同名时补上 provider 后缀(deepseek-flash @account/@official),完整 key 仍在悬停提示里。 - 个人主页不再显示信息性提示:只有真的丢数据(
failed > 0)或调用失败才提示。
「N 个会话走了原始日志兜底」这类说明移到设置页的「统计状态」,并把底层报错压成一句人话
(去掉会话 id 与原始日志路径)。 - 看不出数字在动(容易被误认为「没有统计」)。累计值在亿位只保留 1 位小数,
而一轮对话通常只涨几百万 —— 实测 73 秒涨约 296 万,7.99 亿 → 8.02 亿四舍五入后
全都显示成「8.0 亿」,于是看起来像没刷新。现在:亿/万位保留 2 位小数;
页脚显示**「N 秒前刷新」(每秒跳动)与「本次 +Δ」;另加一行累计精确值**(逐位)。
改进
- 鼠标悬停在统计卡片上即显示精确值:缩略的「8.04 亿」本身看不出在动,
把指针放到「累计 Token 数」这片区域,数值会就地换成逐位精确值(如804,123,456);
峰值卡显示精确峰值与峰值日期,最长任务卡显示毫秒数。
模型用量行悬停也会显示精确 token 与完整provider::model。 - 「Token 活动」由柱状图改为贡献热力图(GitHub 那种小方格):列 = 周、行 = 星期一…日,
显示最近一年(53 周),按当日用量相对峰值分 4 档深浅,悬停某一格显示该日精确值;
带月份与星期标签、右下「少 → 多」图例;底部明细顺带补上峰值时段与常用模型。
文档
- README 隐去面向维护者的内部信息(本机路径、开发环境搭法、私有统计数字),
这些内容移到仓库外的开发工作记录。 - README 顶部加上界面效果截图(
assets/preview.png),并说明「缩略值可悬停看精确值」。
说明
- 取代 0.1.4:后者缺少上面三项数据修复(尤其「历史会话统计不到」会让总计明显偏低)。
安装
推荐跟随 main(应用内插件市场 / 插件管理里填来源):
github:Abyssun/dsh-achievements
想钉死版本就用 commit:
github:Abyssun/dsh-achievements#f9b45a012ad83eb1d9db647612db160ed5c927fc
或直接用本 Release 的产物:
pnpm add https://github.com/Abyssun/dsh-achievements/releases/download/v0.1.6/dsh-achievements-0.1.6.tgz装完必须重启 DSH:已装插件没有热重载。
Full Changelog: v0.1.5...v0.1.6
v0.1.5
本版更新
修复
- 历史会话统计不到(只有当前会话有数据)。
ctx.get("sessionQuery")在
[Service.init]阶段拿不到这个服务:插件按顺序加载,
@deepseek-ai/dsh-session-query提供服务比本插件晚,而ctx.get()不等待服务出现。
表现为界面能出数、但只有当前活会话那一份(诊断里cold=0)。
改为用ctx.inject(["sessionQuery"], …)等依赖到位再启动回填
(投影注册表一直好用,正因为它走的就是 inject),并加 5s 兜底避免界面永远显示「扫描中」;
诊断新增query=字段如实上报。 - 部分历史会话读不到(导致总计偏低)。少数会话的 descriptor 版本不被 DSH reader 接受
(例如subagent/descriptor 0 uses unsupported descriptor version 2),
readSession()直接拒绝它们。实测这些日志的事件形状是兼容的,
所以新增了原始日志兜底:自己解多帧 zstd(用 Node 内置zlib,无额外依赖)、
按seq只取真事件、按官方规则跳过继承前缀,再交给同一套折叠逻辑。
诊断新增raw=报告兜底成功的会话数。 - 同名模型无法区分。模型 key 是
provider::model,不同 provider(通道)可以有同名模型 ——
实测deepseek-account::deepseek-flash与deepseek-official::deepseek-flash是两条通道,
数据当然不同。界面此前只显示模型名,于是两行看起来一模一样。
现在同名时补上 provider 后缀(deepseek-flash @account/@official),完整 key 仍在悬停提示里。 - 个人主页不再显示信息性提示:只有真的丢数据(
failed > 0)或调用失败才提示。
「N 个会话走了原始日志兜底」这类说明移到设置页的「统计状态」,并把底层报错压成一句人话
(去掉会话 id 与原始日志路径)。
文档
- README 隐去面向维护者的内部信息(本机路径、开发环境搭法、私有统计数字),
这些内容移到仓库外的开发工作记录。
说明
- 取代 0.1.4:后者缺少上面三项数据修复(尤其「历史会话统计不到」会让总计明显偏低)。
安装
推荐跟随 main(应用内插件市场 / 插件管理里填来源):
github:Abyssun/dsh-achievements
想钉死版本就用 commit:
github:Abyssun/dsh-achievements#6f03d77a4ee009870addb2f80bcac42bd4cc24b6
或直接用本 Release 的产物:
pnpm add https://github.com/Abyssun/dsh-achievements/releases/download/v0.1.5/dsh-achievements-0.1.5.tgz装完必须重启 DSH:已装插件没有热重载。
Full Changelog: v0.1.4...v0.1.5
v0.1.4
本版更新
修复
- 修掉致命 bug:
getMetrics的返回值被套了两层{ok,value}信封。
DSH 的约定是:manifest 里result.schema描述方法的原始返回值,
{ok,value}信封由传输层加(权威依据:官方dsh-api-account-controller
的getProfile(client) { return this.ctx.deepseekAccount.getProfile(client); })。
我们既在 host 里自己包了一层,又把信封写进了result.schema—— 两边自洽,
strict 校验照样通过,而客户端最终拿到
{ok:true, value:{ok:true, value:真正的快照}},每个字段都读不到。
表现:5 张卡片全 0、截至 Invalid Date、诊断全是?、不报任何错。
现在 host 直接返回原始值、失败throw,schema 也改回裸值;
并加了反证测试:把信封喂给 schema 必须失败。 - 个人主页头像/昵称/按钮居中(补回漏掉的
.ach-head容器)。 - 不再显示本机匿名 UUID。之前把
~/.dsh/.anonymous-user-id(一个 UUID)
当用户 ID 摆在主页上,容易被误认成账号 ID;现在只有拿到账号id/contact
才显示那一行,匿名 id 挪到设置页并标注「仅本地」。
新增
- 模型选择:新增「模型用量」区块,列出每个模型的用量条与占比,
点一行即可只看该模型,再点取消。
这不是把全局数字换个标题:账本升到 v3,models从
provider::model → 数字变成{ total, days: { 日期 → 当日完整聚合 } },
筛选后的累计 / 峰值 / 连续天数 / 图表 / 输入输出缓存读全部按该模型分日明细真算。
选择器目录恒为全部模型(否则筛完就切不回去)。
「最长任务用时」是会话级指标、没有模型维度,筛选时仍是全局值,界面已标注。 - 移除占位区块「精选作品」(源自参考设计、无实际内容),由模型用量取代。
说明
- 取代 0.1.3。0.1.3 的标签与 Release 已发布且存在上述致命缺陷,请勿使用。
安装
推荐跟随 main(应用内插件市场 / 插件管理里填来源):
github:Abyssun/dsh-achievements
想钉死版本就用 commit:
github:Abyssun/dsh-achievements#65e1d3d1e4c3622755bbf495c5cef3b10edc7618
或直接用本 Release 的产物:
pnpm add https://github.com/Abyssun/dsh-achievements/releases/download/v0.1.4/dsh-achievements-0.1.4.tgz装完必须重启 DSH:已装插件没有热重载。
Full Changelog: v0.1.2...v0.1.4
v0.1.2
dsh-achievements v0.1.2 —— DeepSeek Harness 个人成就插件。
安装(推荐:跟随 main)
在应用内的插件市场 / 插件管理里,来源填:
github:Abyssun/dsh-achievements
想钉死版本就用 commit:
github:Abyssun/dsh-achievements#9555f6268dfe0d5c86ab39646a0c8fdef1bdc88b
安装(本 Release 的产物)
dsh plugin --profile <profile> add \
https://github.com/Abyssun/dsh-achievements/releases/download/v0.1.2/dsh-achievements-0.1.2.tgz或在 profile 目录里:
pnpm add https://github.com/Abyssun/dsh-achievements/releases/download/v0.1.2/dsh-achievements-0.1.2.tgz装完必须重启 DSH:已装插件没有热重载。
Full Changelog: https://github.com/Abyssun/dsh-achievements/commits/v0.1.2