dsh-atan-daily
Verifieddsh-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
阿碳日报是社区维护的 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