🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话任务标签 Som2233/dsh-session-task-tags

DeepSeek Harness
Som223327 天前有提交已提供中文文档扫描:含敏感能力

给每个会话标注长短任务并到期自动归档

31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/8 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Som2233/dsh-session-task-tags
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 27 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-session-task-tags(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/15 04:17:27

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 5 处,展示前 5 条)
  • 读取本地文件
    index.js:266
    const parsed = JSON.parse(readFileSync(statePath, 'utf8').replace(/^ FEFF/, ''))
  • 写入本地文件
    index.js:280
    mkdirSync(dirname(statePath), { recursive: true })
  • 写入本地文件
    index.js:281
    writeFileSync(temp, JSON.stringify({ version: STATE_VERSION, records }, null, 2), 'utf8')
  • 写入本地文件
    index.js:282
    renameSync(temp, statePath)
  • 删除本地文件
    index.js:285
    unlinkSync(temp)
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 标注长期或短期任务
  • 标注智能体模式
  • 到期自动归档

给每个 DeepSeek Harness 会话打上长期或短期任务标签,并标注智能体模式,窗口到期后自动归档。

README

由 DeepSeek 最新模型翻译生成
dsh-session-task-tags English · 中文 给 DeepSeek Harness 里的每个会话打上 长期任务 或 短期任务 标签,记录创建它时用的 智能体模式,窗口到期后自动归档。 - 短期任务在 1 / 5 / 7 / 15 / 30 天后自动归档(默认 7)。 - 长期任务默认手动归档;也可以选择在 15–85 天后自动归档。手动记录永远不会被扫描碰到。 - 选择器位于 智能体预设 chip 之后:会话存在时出现在会话头部,空白会话则出现在 Hero chip 行。 - 侧边栏每一行都带一个 50% 半透明的长/短标记,chip 本身显示设定的窗口和实时倒计时(短期任务 7天 · 剩6天)。 dsh plugin --profile web add dsh-session-task-tags DSH 会话任务标签插件。给每个会话加上 长期任务 / 短期任务 标签与 Agent 模式 记录,并可按窗口自动归档:短期任务默认 7 天(可选 1 / 5 / 7 / 15 / 30 天), 长期任务默认手动归档(可选 15 / 25 / 35 / 45 / 55 / 65 / 75 / 85 天)。
展开完整文档(README 剩余 1 节)
dsh-session-task-tags

English · 中文

给 DeepSeek Harness 里的每个会话打上 长期任务 或 短期任务 标签,记录创建它时用的 智能体模式,窗口到期后自动归档。

- 短期任务在 1 / 5 / 7 / 15 / 30 天后自动归档(默认 7)。
- 长期任务默认手动归档;也可以选择在 15–85 天后自动归档。手动记录永远不会被扫描碰到。
- 选择器位于 智能体预设 chip 之后:会话存在时出现在会话头部,空白会话则出现在 Hero chip 行。
- 侧边栏每一行都带一个 50% 半透明的长/短标记,chip 本身显示设定的窗口和实时倒计时(短期任务 7天 · 剩6天)。

dsh plugin --profile web add dsh-session-task-tags

DSH 会话任务标签插件。给每个会话加上 长期任务 / 短期任务 标签与 Agent 模式 记录,并可按窗口自动归档:短期任务默认 7 天(可选 1 / 5 / 7 / 15 / 30 天), 长期任务默认手动归档(可选 15 / 25 / 35 / 45 / 55 / 65 / 75 / 85 天)。

能力

| 需求 | 实现位置 |
| 每个会话带「长期任务 / 短期任务」标签 | Host 记录表 + sidebar.session.row.leading 席位 |
| 每个会话带「Agent 模式」(按创建会话时的选择出现) | 监听 agent-preset/selected 与 agent/created,记录 preset id/名称;宿主自身的 preset chip 已经在界面显示它,插件下拉里再复述一次 |
| 短期任务到期自动归档,可选 1 / 5 / 7 / 15 / 30 天 | Host 定时扫描 + workspaceRegistry.archiveSession(id, { stopActivity: true }) |
| 长期任务可手动或按 15–85 天(每 10 天一档)归档,默认手动 | 同一个扫描:archiveAfterDays === null 即手动,永远不碰;有值则与短期走完全相同的到期判定 |
| 侧边栏每个会话显示标签,字体 50% 半透 | sidebar.session.row.leading,9px、opacity:.5 |
| 对话阶段:选择器放在会话头部动作行(创造模式之后) | conversation.session.header.actions,order: 0(宿主占用 -30/-20/-10/20),行内 8px 间距由宿主 flex 提供 |
| 新建阶段:选择器与工作区/preset chip 并排 | conversation.input.dock 席位 + useHeroRowRide 把 chip 抬进行上方那一行,间距按测得的行间距与行内 2px gap 对齐 |
| chip 与所在行的邻居 chip 完全同款 | 两个变体类:.stt-chip--header(对齐 AgentPresetLabel:12px / 22px 高 / label-tertiary / fill-tsp-secondary / radius-xs / 图标 opacity:.7),.stt-chip--hero(对齐 AgentPresetSeat:13px / 28px 高 / label-primary / radius-sm / padding:0 8px) |
| 设定时间与归档倒计时 | chip 自身文本里:短期任务 7天 · 剩6天 / 长期任务 35天 · 剩20天(与主标题同色同字号,不另起一档样式);归档后显示 已归档;手动长期任务只显示 长期任务,下拉底部提示「手动归档:不会自动归档」 |

结构

- index.js — Host 半:状态文件、事件监听、HTTP 路由、自动归档扫描。零外部 import。
- client.js — Client 半:手写的 lazy-CJS bundle,只 require('react') / require('react-dom')。
- cordis.patch.yml — 插入一行 Host 插件条目(也是浏览器半被 /plugins 服务的依据)。

关于「并排」与「不重复」的实现说明

- 对话阶段是纯槽位方案:conversation.session.header.actions 是宿主 headerActions (display:flex; gap:8px)的直接子项,天然并排、间距天然一致。
- 新建(Hero)阶段没有第三方席位:heroWorkspaceRow 的三个孩子分别是硬编码的 WorkspaceChip 与两个 single 槽(conversation.hero.workspace、conversation.hero.agentPreset),都已被占用,抢占会顶掉工作区选择器或 preset chip。所以插件用 useHeroRowRide:在自己的 dock 席位上量一次上方那一行的几何,把 chip 用 position:absolute 钉在该行最后一个 chip 之后(水平 +2px 对应该行 gap:2px,垂直用测得的行间距)。
- 量的是「最右可见后代」,不是 lastElementChild:宿主每个槽位出口都是 锚点(SlotOutlet),而 display:contents 元素自身的 getBoundingClientRect() 恒为 0×0。Hero 行的最后一个子节点正是 data-slot="conversation.hero.agentPreset" 这个锚点 —— 取 lastElementChild 会得到 0 宽度而被判废。现在改为遍历该行所有后代、取可见元素的最大 right 边,与包装层级无关。
- 偏移量必须是真实 DOMRect:定位用的 dockRect 只能是 dock.getBoundingClientRect();插件内的诊断辅助函数返回的是 {x,y,w,h},一旦误用会让 left/lift 变成 NaN,内联样式 left: NaNpx 失效、chip 退回静态位置。现在另有 Number.isFinite 守卫:偏移非有限值时直接走 in-flow 兜底,不会产生非法定位。
- 只显示一次:dock 席位常驻一个锚点(stt-dock--lifted,负 margin 抵消 flex gap);量到 Hero 行就把 chip 抬进去;量不到时,若会话头部 chrome 存在(说明头部席位正在画同一个 chip)就不渲染,否则退回普通流的一行(stt-dock--inline)。既不会出现两个,也不会消失。

配置

cordis.patch.yml 中 session-task-tags 行的 config:

shortArchiveOptions: [1, 5, 7, 15, 30] # 短期任务可选窗口(天)
defaultShortArchiveAfterDays: 7 # 短期任务默认窗口
longArchiveOptions: [15, 25, 35, 45, 55, 65, 75, 85] # 长期任务可选窗口(15 起每 10 天,上限 90)
sweepIntervalMinutes: 5 # 自动归档扫描间隔 autoArchiveEnabled: true # 关闭后只记录、不归档

长期任务默认手动归档(记录里 archiveAfterDays: null,扫描永不触碰);选中某个窗口后才进入自动归档。Client 半按 Host 上报的这两个集合渲染下拉:Host 支持什么就提供什么 (对早于本改动的 Host,长期只有「手动归档」一项)。

数据

$DSH_HOME/plugin-data/dsh-session-task-tags/state.json,按 sessionId 保存 kind / archiveAfterDays / agentPresetId / agentPresetName / taggedAt / lastActivityAt / archivedAt。归档窗口从「打标签时刻」与「最近活动时刻」中较晚者起算; archiveAfterDays: null 表示手动归档(长期任务的默认值)。

浏览器 API

- POST /session-task-tags/api/list — 读取全表 + 配置(含两个窗口集合)。
- POST /session-task-tags/api/set — { sessionId, kind, archiveAfterDays } 写入一条; archiveAfterDays 省略或不在该 kind 的窗口集合里时:短期回落到默认窗口,长期回落到手动。

两条路由都走与 /api 网关相同的 Host 头信任围栏(loopback + 同源 Origin)。

自动归档的验证记录(2026-10-05)

在运行中的 Host 上做过一次可逆的实测,结论:到期会自动归档,走的是真实的归档 API。

1. 把一条 30 天前到期的短期记录写进状态文件 → 重新挂载插件(apply 重跑、load() 重读); 5 秒后的首轮扫描立刻把它处理掉:archivedAt 被写入、autoArchived: true、archiveAt: null。
2. 再对一个真实的空白会话做完整链路测试(提前 10 天到期):插件记录被标记归档,同时 $DSH_HOME/storages/workspace.json 的 archivedSessionIds 从 19 条变成 20 条 —— 即会话真的进入了 DSH 的归档集合、会从侧栏活动列表消失。
3. 测试后通过 ctx.uiWorkspace.unarchiveSession() 还原,集合回到 19 条,用户数据无残留。

顺带发现并修掉一个真实缺陷:load() 原先直接 JSON.parse 读状态文件,遇到带
UTF-8 BOM 的文件会抛错并静默把所有标签清空;现在先剥掉 BOM 再解析。

⚠️ 注意:Host 半的 JS 改动需要重启 DSH 才生效。set_bundle 的禁用/启用会让 apply 重跑(所以状态会被重新读取),但模块本身是按条目缓存的,新代码不会加载 ——连改掉入口文件名(换一个模块 URL)都试过,无效,所以确实只能重启。
Client 半没有这个限制,文件一改就通过 client HMR 热换。
预览分享卡片长什么样 ↓Som2233/dsh-session-task-tags
分享 · DeepSeek Harness Hub
Som2233/dsh-session-task-tags

给每个会话标注长短任务并到期自动归档

这是你的仓库?认领条目

回到顶部