{"_id":"@dabouben/dsh-daily-tasks","name":"@dabouben/dsh-daily-tasks","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@dabouben/dsh-daily-tasks","version":"0.1.0","description":"DeepSeek Harness 每日/每周任务插件（启动弹窗提醒、横屏滚动条、圆圈完成、周日 AI 周总结）+ DeepSeek API 用量/余额侧边栏小部件","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Dabouben/dsh-daily-tasks.git"},"homepage":"https://github.com/Dabouben/dsh-daily-tasks#readme","keywords":["dsh","deepseek-harness","deepseek","plugin","todo","tasks","daily-tasks","token-usage","balance"],"type":"module","main":"lib/index.js","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./cordis.patch.yml":"./cordis.patch.yml","./package.json":"./package.json"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-sidebar"],"platform":"web"}},"dependencies":{"@deepseek-ai/dsh-agent-default-model":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-llm":"0.1.0-rc.6"},"devDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-agent-default-model":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-llm":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@types/node":"^22.0.0","@types/react":"^18.2.0","esbuild":"^0.25.0","react":"^18.2.0","typescript":"^5.6.0"},"scripts":{"build":"tsc -p tsconfig.json && node scripts/build-client.mjs","typecheck":"tsc -p tsconfig.json --noEmit"},"_id":"@dabouben/dsh-daily-tasks@0.1.0","gitHead":"95739d8c7637dc271a71fb1fceb1784fe10342af","bugs":{"url":"https://github.com/Dabouben/dsh-daily-tasks/issues"},"_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-ZgmlyVxVkWrA2PwxkoTHIeW+ET6gRNX+EYNLF+KFB7kOi3dRxM+grMc3mBtBekyNzDHgV9I5oqZ4wjeqrLiXvQ==","shasum":"6f43b1bb7f07723b0b61e0d685c060b80c503b63","tarball":"https://registry.npmjs.org/@dabouben/dsh-daily-tasks/-/dsh-daily-tasks-0.1.0.tgz","fileCount":27,"unpackedSize":259561,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDTl1Q8nWxudBbNNZZR5QeGZrHRKWCPBiRxVfOZOJTyaAIgQee4LJWimw+tD7pn20y82I2WpHdC8m+jlmkMT5WP4nQ="}]},"_npmUser":{"name":"dabouben","email":"1390754953@qq.com"},"directories":{},"maintainers":[{"name":"dabouben","email":"1390754953@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-daily-tasks_0.1.0_1786980783044_0.2410130259678145"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-17T15:33:02.937Z","0.1.0":"2026-08-17T15:33:03.233Z","modified":"2026-08-17T15:33:03.411Z"},"maintainers":[{"name":"dabouben","email":"1390754953@qq.com"}],"description":"DeepSeek Harness 每日/每周任务插件（启动弹窗提醒、横屏滚动条、圆圈完成、周日 AI 周总结）+ DeepSeek API 用量/余额侧边栏小部件","homepage":"https://github.com/Dabouben/dsh-daily-tasks#readme","keywords":["dsh","deepseek-harness","deepseek","plugin","todo","tasks","daily-tasks","token-usage","balance"],"repository":{"type":"git","url":"git+https://github.com/Dabouben/dsh-daily-tasks.git"},"bugs":{"url":"https://github.com/Dabouben/dsh-daily-tasks/issues"},"license":"MIT","readme":"# dsh-daily-tasks\n\n**DeepSeek Harness 每日/每周任务管理 + DeepSeek API 用量监控插件**\n\n一个为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)（DSH）Web GUI 打造的双功能插件：**每日/每周任务管理**与 **DeepSeek API 用量/余额监控**。纯本地运行，数据落盘在 `$DSH_HOME`，不修改 DSH 源码。\n\n---\n\n## ✨ 功能总览\n\n### 🗓️ 每日/每周任务\n\n| 功能 | 说明 |\n|---|---|\n| 🪟 **启动弹窗提醒** | 每天第一次打开 DSH 时弹出窗口，填写今日任务与本周任务 |\n| 🔁 **延期选择** | 关闭弹窗时，昨日未完成任务用圆圈选择「延期到今天」或「归档」（顺延任务进入周总结统计） |\n| 🎞️ **横屏滚动条** | 固定在对话输入栏上方，今日（蓝）与本周（紫）任务混排横向滚动，悬停暂停；间隔可调 |\n| ⭕ **圆圈完成** | 点击滚动任务展开大卡片，右侧大圆圈一键完成/取消；卡片内可编辑标题/备注/分类、删除 |\n| ➕ **随时添加** | 滚动条右侧「＋」按钮随时添加今日/本周任务，无需等待启动弹窗 |\n| 📊 **周日 AI 周总结** | 每周日（可自定义重置日）打开时弹出上周总结：DeepSeek 模型生成文字总结 + 完成率/分类统计 + 可复制 |\n| ⚙️ **可自定义设置** | 弹窗/滚动条/延期提醒/提示音开关、每周重置日（周日至周六）、滚动速度（实时预览） |\n\n### ⚡ DeepSeek API 用量监控（侧边栏小部件）\n\n| 功能 | 说明 |\n|---|---|\n| 💰 **余额卡片** | 官方 `/user/balance` 接口实时查询：总余额/赠送余额/充值余额 + 可用状态（缓存 60s） |\n| 📈 **用量概览** | 今日/累计消耗金额与 tokens（按 DeepSeek 官方价目表折算，含 2026-08-17 起峰谷定价：北京 9-12/14-18 高峰×3） |\n| 📊 **按模型明细** | 每个模型（deepseek-v4-flash / v4-pro 等）的费用、调用次数、token 拆分 |\n| 📉 **近 7 日柱状图** | 每日费用迷你柱状图，仿 DeepSeek 官方 API 使用页面 |\n| 🔄 **定时/手动刷新** | 每 60s 自动刷新 + 手动刷新按钮 |\n| 📍 **位置** | 侧边栏底部（设置上方），随侧边栏一起折叠/展开 |\n\n**数据来源**：用量由本地 `$DSH_HOME/sessions` 会话日志聚合（zstd 解压，`assistant/message` 事件的 usage 字段），真实反映本机 DSH 的消耗；余额来自 DeepSeek 官方接口（通过 DSH 凭证系统读取 API Key）。\n\n---\n\n## 📦 安装\n\n### 方式一：npm 安装（推荐，插件市场标准方式）\n\n```sh\n# 从 npm 安装到 web profile（会通过 pnpm 链接进 profile）\ndsh plugin --profile web add @dabouben/dsh-daily-tasks\n\n# 重启 DSH，然后刷新浏览器\n# 重启方式：kill 旧进程后重新 dsh web，或直接重启你使用的启动器\n```\n\n### 方式二：本地源码安装（开发用）\n\n```sh\nnpm install\nnpm run build\n\n# 在 ~/.dsh/profiles/web/package.json 的 dependencies 与 dsh.profile.bundles 中加入本包，\n# 并把包链接进 profile 的 node_modules，然后重启 DSH\n```\n\n> 插件在 DSH 启动时扫描加载，安装后**必须重启**才生效。\n\n---\n\n## 🚀 使用\n\n1. **每天第一次打开** DSH → 自动弹出任务填写窗 → 添加今日/本周任务 → 关闭\n2. **查看任务** → 对话输入栏上方的滚动条（今日蓝色、本周紫色）\n3. **完成任务** → 点击滚动条里的任务 → 大卡片 → 点右侧大圆圈\n4. **随时添加** → 滚动条右侧「＋」\n5. **周日总结** → 重置日当天打开自动弹出上周总结（AI 文字 + 数据）\n6. **用量监控** → 左侧栏底部「⚡ API 用量」→ 点击弹出余额卡片与明细\n\n---\n\n## ⚙️ 配置\n\n`cordis.patch.yml`（安装后可通过 profile patch 或 `settings.yaml` 覆盖）：\n\n| 配置项 | 默认值 | 说明 |\n|---|---|---|\n| `dataPath` | `daily-tasks.json` | 任务数据文件（相对 `$DSH_HOME`） |\n| `apiKeyRef` | `DEEPSEEK_API_KEY` | 查询余额用的凭证引用 |\n| `balanceCacheMs` | `60000` | 余额缓存 |\n| `usageCacheMs` | `30000` | 用量聚合缓存 |\n| `sessionsRoot` | `''` | 会话日志目录（空 = `$DSH_HOME/sessions`） |\n| `prices` | `{}` | 模型价目表覆盖（CNY/百万 tokens） |\n| `priceSchedule` | `[]` | 峰谷价目表覆盖 |\n\n---\n\n## 💾 数据模型\n\n任务数据保存在 `$DSH_HOME/daily-tasks.json`：\n\n```jsonc\n{\n  \"settings\": { \"weeklyResetDay\": 0, \"scrollSpeed\": 1, \"popupEnabled\": true, \"marqueeEnabled\": true, \"postponeEnabled\": true, \"soundEnabled\": false },\n  \"daily\":  { \"2026-08-16\": [ { \"id\": \"…\", \"scope\": \"daily\", \"title\": \"…\", \"note\": \"\", \"category\": \"work\", \"done\": false, \"createdAt\": 0 } ] },\n  \"weekly\": { \"2026-08-16\": [ /* 同上，scope: weekly */ ] },\n  \"history\": [ /* 归档条目，供周总结聚合 */ ],\n  \"pendingCarry\": [ /* 昨日未完成、等待延期选择的候选 */ ],\n  \"lastPopupDate\": \"2026-08-16\",\n  \"lastSummaryWeek\": \"2026-08-09\",\n  \"summaryCache\": { \"weekKey\": \"2026-08-09\", \"text\": \"…\", \"at\": 0 }\n}\n```\n\n---\n\n## 🏗️ 架构\n\n```\n浏览器端（React bundle）                宿主端（Node）\n┌────────────────────────────┐       ┌──────────────────────────────┐\n│ conversation.input.dock 插槽│  HTTP  │ /dsh-daily-tasks/* 路由      │\n│  任务横屏滚动条 + 弹窗/卡片  │◄─────►│  任务存储（JSON 原子落盘）    │\n│ sidebar.footer.action 插槽  │  fetch │  每日/每周滚动 + 延期逻辑     │\n│  API 用量小部件             │       │  LLM 周总结（ctx.llm）        │\n└────────────────────────────┘       │  用量聚合（会话日志 zstd）     │\n                                     │  余额查询（credentials + API） │\n                                     └──────────────────────────────┘\n```\n\n- **宿主端**（`src/index.ts` / `src/store.ts` / `src/usage.ts`）：HTTP 路由、任务存储、周总结、用量/余额\n- **客户端**（`src/client/`）：React 组件，通过官方插槽机制挂载，相对路径 fetch\n- **构建**：`tsc` → `lib/`；`esbuild` → `lib/client.js`（`window.__ModuleLoader__.load` 官方 bundle 格式）\n\n---\n\n## 💻 跨平台\n\n**Windows 与 macOS 均可运行**：浏览器端为纯标准 Web API；宿主端全部使用跨平台 Node API（`path` / `resolveDshHome` / `node:zlib` 的 zstd，官方 Node ≥ 22.18 双平台内置）。数据与凭证路径自动跟随系统。唯一差异：一键重启脚本 `restart-dsh.sh` 为 bash（macOS/Linux），Windows 直接按平时方式重启 DSH 即可。\n\n---\n\n## 📋 开发\n\n```sh\nnpm install\nnpm run build      # tsc 宿主端 + esbuild 客户端 bundle\nnpm run typecheck  # 宿主端类型检查\nnode scripts/smoke.mjs   # 存储逻辑冒烟测试\nnode scripts/itest.mjs   # HTTP 路由集成测试\n```\n\n---\n\n## 🙏 致谢\n\n- 用量聚合与余额查询的实现思路改编自 [dsh-usage-dashboard-plus](https://github.com/1HelloMan1/dsh-usage-dashboard-plus) / [dsh-usage-dashboard](https://github.com/1690834643/dsh-usage-dashboard)（MIT），详见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)\n\n## 📄 License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md","_rev":"1-9aefd5700bf0c06726fda98b629ca74d"}