Skip to content

dsh-atan-daily

Verified

dsh-atan-daily · v1.1.0 · MIT · Web UI

DeepSeek Harness plugin: scheduled collection tasks that each file a timestamped report.

Install

dsh plugin add dsh-atan-daily

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Tags

Creators

Readme

阿碳日报

阿碳日报

把选题变成按计划自动执行的日报,每期一份带时间戳的报告

MIT

许可证:MIT npm package npm 下载量 DSH Web Plugin DSH 支持至 0.2.x

阿碳日报是社区维护的 DeepSeek Harness(DSH)插件,并非 DeepSeek AI 官方产品。

本文描述 1.1.0,涵盖功能、安装、使用方式与任务目录结构。

功能概览

给每个选题一个目录和一份规则,剩下的事按计划自动发生。

  • 定时执行:执行时间可以用日常说法(「每天 9 点」「每周一和周四 8 点」)、五段 cron 表达式,或者干脆只手动执行;每个任务单独设置 IANA 时区。
  • 报告推到飞书:页面标题行进入「机器人管理」,手机扫码即可创建飞书机器人;每个任务卡片右下角显示目标机器人图标与「推送管理」,可以只推一个机器人,也可以同时推给多个。
  • 一任务一目录:每个选题就是一个文件夹,规则写在 meta/rule.md,任务清单存在 task-list.jsonl;改规则不用改代码。
  • 每期一份报告:报告按本次开始时间命名(如 2026-10-17-090000.md),固定宽度便于排序,同一秒内重跑自动加 -2、-3,不覆盖旧报告。任务根目录只留最新一份:每次运行开始前,上一份完成的报告会被移进与 meta/ 同级的 history/,文件名保持不变。
  • 独立会话:每次执行都由 Host 新建一个普通会话,旧会话自动归档;侧栏里能点进去看完整过程。
  • 运行历史:每次执行的状态、耗时、报告、会话与错误都有记录,可按任务设置保留天数(默认 7 天,0 = 永久)。
  • 并行执行:不同任务的运行同时进行,一个长任务不会挡住其他任务的到点执行;同一个任务仍然互斥(重叠的那次记为跳过),补跑只补最近一次错过的执行。
  • 统计与搜索:列表顶部显示任务总数、已启用、执行中、异常任务;搜索按名称或详情实时过滤,每页 10 条。
  • 跟随 DSH 主题:颜色、圆角、阴影、动效全部来自 --dsw-* 语义令牌,浅色与深色模式零改动。

界面预览

截图存放于 assets/screenshots/,把图片放进去并保持下列文件名一致即可正常显示。

任务列表:统计、搜索与调度状态

任务列表:统计条、搜索与任务行

新建 / 编辑:用日常说法或 cron 设置执行时间

新建任务:设置执行时间与时区

运行历史:每次执行的状态、耗时与报告

运行历史抽屉

工作目录:修改路径并自动注册为 DSH 工作区

工作目录设置

安装

需要已安装并能正常运行 DeepSeek Harness,版本 0.2.1 及以上(插件要求 dsh >=0.2.1-0 <0.3.0)。

让 Agent 帮你安装

把这段话发给能够操作本机终端的 Agent:

请把 dsh-atan-daily 最新版安装到我的 DSH web profile,使用官方 npm 源,安装后重启宿主并确认侧栏「自动化任务」下方出现「阿碳日报」。

手动安装

dsh plugin --profile web add dsh-atan-daily

也可以打开 Web UI:「设置 → 插件 → 添加插件」,输入包名 dsh-atan-daily 安装。

安装或升级后重启宿主并刷新页面,侧栏「自动化任务」下方即出现「阿碳日报」。

npm 官方源较慢时可指定镜像:

dsh plugin --profile web add dsh-atan-daily --registry=https://registry.npmmirror.com/

从源码或本地目录试用:

git clone https://github.com/artaniszhou/dsh-atan-daily.git
cd dsh-atan-daily
npm install
npm run build
dsh plugin --profile web add .

以 link: 方式安装时:Client 改动重新构建后刷新页面即生效;Host 改动需要重启宿主。

仓库不包含构建产物 lib/,克隆后必须先执行 npm run build。因此本插件不支持直接用 Git 地址安装,请使用 npm 包,或构建后按上面的本地目录方式安装。

若你之前用本地 link: 装过旧包名 @artanis/atan-daily,请先用 dsh plugin --profile web remove @artanis/atan-daily 移除,避免同一个插件 id 出现两次。

使用说明

你想做什么 如何操作
新建选题 点「新建任务」,填写名称与任务详情(目标、数据来源、输出要求),再设置执行时间。
设置执行时间 「按说法」写日常表达,「按 cron」写五段表达式,「仅手动」则只能点「执行一次」。
临时跑一轮 点任务行上的「执行一次」,完成后会跳到它新建的会话。
查看报告 最新一份写在任务目录下;「历史」抽屉里每轮记录都列出对应的报告名。
看历次报告 任务目录根下只有最新一份,更早的都在 history/ 里,文件名(时间戳)不变。
看执行过程 点「会话」进入该任务的会话;已有会话会直接打开。
改工作目录 页面顶部点「修改」,保存时会创建目录并注册为 DSH 工作区;运行中不允许切换。
接入机器人 标题行「机器人管理」→「接入机器人」→ 填名称(接入后不可改)→ 生成二维码 → 手机扫码。接入后会给扫码人发一条欢迎消息,用来验证发送链路。
把报告发到飞书 任务卡片右下角点「推送管理」打开抽屉,一行一个机器人,逐个开启/关闭;卡片上显示目标机器人的平台图标(最多 5 个)。抽屉顶部的「报告推送」总开关可以暂停发送,机器人选择会保留;从一个都没选变成有选中时,推送会自动打开。
断开机器人 机器人卡片「移除」。飞书里的应用不会跟着删;确认框里给出两步路径:先由企业管理员在管理后台停用,再由应用所有者在开发者后台删除(从未发布过的应用可直接删)。
停掉某个选题 关闭任务行上的开关;不会删除文件和历史。

任务目录长这样:

<工作目录>/
├── task-list.jsonl            任务元数据(唯一权威)
└── A股 银行股息收集/           任务目录 = 任务名称
    ├── meta/
    │   ├── rule.md            任务规则(缓存与脚本清单也在这里)
    │   ├── cache/   script/   稳定数据与脚本
    │   └── runs/              每次运行的 JSON 记录
    ├── history/               历次报告:每轮开始前上一份报告移到这里
    └── 2026-10-17-090000.md   最新一份报告,留在任务目录下

飞书机器人

  • 只发不收:只调用飞书的「发消息」与「上传文件」两个接口;不订阅事件、不建长连接、不需要公网地址。
  • 权限只有两条:im:message:send_as_bot(发消息)与 im:resource(上传文件)——扫码后的确认页上就这两项。
  • 密钥只在本机:App Secret 存进 DSH 凭据库,bots.json 只记掩码后的 app_id 与扫码人 open_id;任何接口响应都不会回传 secret。
  • 发送目标只有一个:扫码人的私聊。要让别人接收,就让对方扫码接入自己的机器人。
  • 每条报告带任务名:每条报告先在对话里发一行「任务名 · 报告名」,紧随其后才是报告文件;文件名(也是飞书里的文档名)保持不变。
  • 推送失败不影响任务:报告照常落盘,失败原因写进运行日志(事件 im.push)。
  • 移除只管本机:卡片上的「移除」只删本机记录与凭据,飞书里的应用还在,需要手动停用/删除。

手动停用与删除应用

想做什么 路径 谁来做
停用应用 管理后台 → 工作台 → 应用管理 → 找到该应用 → 配置 → 基本信息 → 把「已启用」改成「停用」 企业管理员
删除应用 开发者后台 → 打开该应用 → 凭证与基础信息 → 页面底部「删除应用」 应用所有者

飞书开放平台没有给「扫码接入」这类应用留自动停用的口子:停用要走 admin:app.enable:write 管理员权限,而本插件只申请发消息与上传文件两条权限,所以这一步只能在后台手动完成。已发布的应用要先停用才能删除;删除不可恢复。

工作方式

浏览器(列表 / 新建 / 启停 / 执行一次)
        │  HTTP
        ▼
Host:cron 定时 → 到点 → 归档上一份报告 → 新建会话 → 送入指令 → 等待完成 → 写运行记录与报告

执行发生在 Host 侧,所以关掉页面不影响定时任务。每次执行固定使用 deepseek-flash 模型,并以完全权限、免审批方式自动运行,请先在测试选题上验证规则再交给定时任务。

  • 到点判断允许晚触发:机器休眠后迟到仍算这一次;重启只补最近一次错过的执行。
  • 无执行时间的任务只能手动执行;停用的任务不参与定时。
  • 不同任务同时到点会同时开跑,不设并发上限;模型配额、机器负载和飞书推送频率请自行评估,再决定同时启用多少任务。
  • 同一个任务不会重叠执行:上一轮还没结束时到点的那次记为跳过。
  • 执行失败不自动重试,错误写入 lastError,下次按计划继续;单轮默认超时 1800 秒。

更新日志

1.1.0(2026-10-23)

新增

  • 机器人管理:标题行「机器人管理」→ 扫码接入飞书 / Lark 机器人;手机扫码即可创建,接入后会给扫码人发一条欢迎消息验证发送链路。
  • 报告推送:任务卡片右下角「推送管理」按任务选择目标机器人,可多选;抽屉顶部的总开关只暂停发送,选择保留。
  • 报告归档:每次运行开始前,上一份报告移入任务目录的 history/,任务根目录只留最新一份。
  • 列表体验:统计条、搜索、分页,以及统一的运行历史抽屉与编辑弹窗。

修复

  • 弹层焦点不再逃到背景:Tab / Shift+Tab 在弹层内循环,Esc 改为文档层处理,焦点被点到背景后也能关闭。
  • 时区选择器只把合法 IANA 时区列为选项,输入半截词不会再被当成可选项;新建与编辑在提交前先做本地校验。
  • 运行历史抽屉的保留期说明跟随任务设置:按天数或「永久保留」,不再固定写 7 天。
  • 「无法连接 Host」不再拼接浏览器原文(Failed to fetch),提示保持中文可读。
  • 编辑弹窗切到「仅手动」时说明该任务会置为未启用,避免误以为任务被停掉。
  • 新建任务时名称为空会给出提示,不再静默无反应。

1.0.0(2026-10-20)

首个公开版本:定时执行、口语与 cron 两种时间表达、一任务一目录、每期一份带时间戳的报告、独立会话与运行历史。

反馈与贡献

遇到问题或有建议,欢迎提交 Issue。请附上 DSH 与插件版本、复现步骤,以及相关截图或日志;涉及选题规则时可先删去敏感内容。

源码位于 src,使用严格 TypeScript,Host 与 Client 分开构建。改动后请执行:

npm test       # 类型检查 + 单元与组件测试
npm run build  # 构建 lib/
npm run check  # test + build + 两个 smoke,提交前跑一遍

界面文案同时维护 locale/zh.json 与 locale/en.json,两边键集合需一致;颜色只用 --dsw-* 语义令牌,不要引入独立调色板。欢迎提交改进。

许可证

MIT © 2026 Artanis Zhou