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

长程任务看板 janpauldahlke/dsh-local-long-horizon

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

托管长期任务状态,自动注入进度并校验更新

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add janpauldahlke/dsh-local-long-horizon
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · ui
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 29 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 33 处,展示前 27 条)
  • 读取本地文件
    lib/index.js:72
    existing = await readFile(path, "utf8");
  • 写入本地文件
    lib/index.js:79
    await writeFile(path, content, "utf8");
  • 读取本地文件
    lib/index.js:241
    raw = await readFile2(path, "utf8");
  • 写入本地文件
    lib/index.js:261
    await mkdir(dirname(path), { recursive: true });
  • 写入本地文件
    lib/index.js:265
    await writeFile2(tmp, body, "utf8");
  • 写入本地文件
    lib/index.js:266
    await rename(tmp, path);
  • 写入本地文件
    lib/index.js:536
    await mkdir2(dirname2(mdPath), { recursive: true });
  • 写入本地文件
    lib/index.js:537
    await writeFile3(mdPath, renderStatusMd(record), "utf8");
  • 发起网络请求
    lib/client.js:70
    const res = await fetch(queryUrl(), { cache: "no-store" });
  • 发起网络请求
    lib/client.js:119
    const res = await fetch("/api/dsh-local-long-horizon", {
  • 发起网络请求
    lib/client.js:132
    const res = await fetch("/api/dsh-local-long-horizon", {
  • 读取本地文件
    lib/service.mjs:66
    existing = await readFile(path, "utf8");
  • 写入本地文件
    lib/service.mjs:73
    await writeFile(path, content, "utf8");
  • 读取本地文件
    lib/service.mjs:235
    raw = await readFile2(path, "utf8");
  • 写入本地文件
    lib/service.mjs:255
    await mkdir(dirname(path), { recursive: true });
  • 写入本地文件
    lib/service.mjs:259
    await writeFile2(tmp, body, "utf8");
  • 写入本地文件
    lib/service.mjs:260
    await rename(tmp, path);
  • 写入本地文件
    lib/service.mjs:530
    await mkdir2(dirname2(mdPath), { recursive: true });
  • 写入本地文件
    lib/service.mjs:531
    await writeFile3(mdPath, renderStatusMd(record), "utf8");
  • 读取本地文件
    lib/testables.mjs:66
    existing = await readFile(path, "utf8");
  • 写入本地文件
    lib/testables.mjs:73
    await writeFile(path, content, "utf8");
  • 读取本地文件
    lib/testables.mjs:235
    raw = await readFile2(path, "utf8");
  • 写入本地文件
    lib/testables.mjs:255
    await mkdir(dirname(path), { recursive: true });
  • 写入本地文件
    lib/testables.mjs:259
    await writeFile2(tmp, body, "utf8");
  • 写入本地文件
    lib/testables.mjs:260
    await rename(tmp, path);
  • 写入本地文件
    lib/testables.mjs:530
    await mkdir2(dirname2(mdPath), { recursive: true });
  • 写入本地文件
    lib/testables.mjs:531
    await writeFile3(mdPath, renderStatusMd(record), "utf8");
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 托管长期任务状态
  • 自动注入进度
  • 校验任务更新

DeepSeek Harness 插件:宿主自管的长期任务看板,服务本地编码智能体。下一步≤3、进行中、已完成+验证,注入文件 + STATUS.md + 右栏/停靠栏小标签。

README

由 DeepSeek 最新模型翻译生成
dsh-local-long-horizon 为 DeepSeek Harness web UI 里的本地编码智能体提供宿主托管的长期任务状态。 「维护一个 STATUS.md」这种软约定容易走样:智能体会自己发明章节、忘记更新,或者在上下文压缩后反复读文件、白白烧掉 token。这个插件把它变成结构化 vault,由宿主托管,配套带校验的智能体工具、用于恢复的极小注入文件、单向 STATUS.md 投影,以及给人看的 Long horizon 右侧栏 + 输入框 dock 芯片。 相关插件(同样是 web 右侧栏 / dock 的双面 dsh.bundle 形态): | 插件 | 仓库 | | NVIDIA GPU 利用率 / 显存 / 功耗 | dsh-gpu-monitor-nvml | | 本地 LLM 端点 / slot 健康 | dsh-slot-health | | 智能体进程监控 | dsh-agent-processes | 本包:dsh-local-long-horizon。 已在 DeepSeek Harness 0.1.7-rc.2(dsh web)上验证。 环境要求 - DeepSeek Harness web 配置档(dsh web)。 - 构建需要 Node.js ≥ 20。 - 强烈建议项目里有 AGENTS.md。
展开完整文档(README 剩余 1 节)
dsh-local-long-horizon

为 DeepSeek Harness web UI 里的本地编码智能体提供宿主托管的长期任务状态。

「维护一个 STATUS.md」这种软约定容易走样:智能体会自己发明章节、忘记更新,或者在上下文压缩后反复读文件、白白烧掉 token。这个插件把它变成结构化 vault,由宿主托管,配套带校验的智能体工具、用于恢复的极小注入文件、单向 STATUS.md 投影,以及给人看的 Long horizon 右侧栏 + 输入框 dock 芯片。

相关插件(同样是 web 右侧栏 / dock 的双面 dsh.bundle 形态):

| 插件 | 仓库 |
| NVIDIA GPU 利用率 / 显存 / 功耗 | dsh-gpu-monitor-nvml |
| 本地 LLM 端点 / slot 健康 | dsh-slot-health |
| 智能体进程监控 | dsh-agent-processes |

本包:dsh-local-long-horizon。

已在 DeepSeek Harness 0.1.7-rc.2(dsh web)上验证。

环境要求

- DeepSeek Harness web 配置档(dsh web)。
- 构建需要 Node.js ≥ 20。
- 强烈建议项目里有 AGENTS.md。DeepSeek Harness 会把它注入智能体指令;本插件挂在这个接缝上,让智能体持续读取实时注入文件(片段见下文)。

截图

浅色主题,与 DSH 默认一致。

| 面板 + 聊天(运行中) | 看板(全屏) |
| Long horizon 面板打开 | Long horizon 看板 |

| Dock 芯片(右侧栏关闭,聊天活跃) |
| 输入框 dock 芯片 |

如果图片加载失败,下面的 ASCII 示意图仍能说明布局。

你会看到什么

Long horizon ● Active [ Turn off ]
M4 · agent loop · main · 20s ago Ship hello CLI + long-horizon dogfood /home/you/dev/my-project

┌─ Now ─────────────────────────────────────────┐
│ In flight: wire pane smoke: Next / Done … │ │ Next 3 │ │ 1. wire pane smoke: Next / Done … │ │ 2. capture dock chip with rightbar closed │ │ 3. write README install + AGENTS snippet │ ├─ Done (recent) ───────────────────────────────┤ │ ✓ verify node hello.js · verify: … · 3h ago │ │ ✓ write hello.js · verify: … · 4h ago │ └───────────────────────────────────────────────┘

- 按项目 ON / OFF —— OFF 时,会改状态的工具一律拒绝;注入文件冻结成一行 DISABLED 提示;status_get 仍然可用。
- Next 硬上限 3 条 —— 第 4 条会被拒绝,并给出明确的校验错误。
- In flight 只占一个切片 —— 用 status_set_inflight 设置,用 status_clear_inflight 清除(空 summary 会被拒绝)。
- Done 记录优先带 verify —— v0 里缺 verify 只会警告(不是硬拒绝)。
- 同步提示(只出现在面板里,不在停靠栏小标签上)——看板过期、git 分支切换,或者当前对话和上次写入者不是同一个。
- 停靠栏小标签——右侧栏关闭时,输入框下方显示的简短实时标签(Horizon · …、Horizon · blocked 等)。点击可重新打开面板。

恢复机制如何工作

DeepSeek Harness 已经会扫描项目根目录的 AGENTS.md(以及相关基线文件),并把它们注入智能体的指令。本插件不替换这个接缝——而是挂接进去。

DSH injects AGENTS.md ──► agent instructions every turn
│
│ (your AGENTS.md says: read the inject file / use status_* tools)
▼
Agent tools ──► Host TaskStatus service ──► JSON vault (~/.dsh/storages/…)
│
├──► <cwd>/STATUS.md (human + git)
└──► <cwd>/.dsh/task-status-inject.md (≤ ~50 tokens)

1. Vault 是唯一事实来源——markdown 是生成出来的;工具绝不会「只改 STATUS.md」。
2. 每次改动成功后,Host 都会重写注入文件和 STATUS.md。
3. 推荐做法:在根目录保留一份简短的 AGENTS.md,让 harness 持续把约定推入上下文。这份文件应当告诉智能体:把 .dsh/task-status-inject.md 当作有约束力的当前状态(并通过 status_ 工具更新)。可变的字节留在那个极小的注入文件里——而不是塞进一份庞大的静态提示词——AGENTS.md 则是 DSH 已经知道如何注入的稳定「胶水」。

没有 AGENTS.md(或等效指令)时,vault 和工具照样能用,但新起的智能体更容易忽略注入文件,退回到聊天记忆或反复读取。请用 AGENTS.md。

推荐的 AGENTS.md 片段

Long horizon
Before coding, read .dsh/task-status-inject.md if present — it is binding current task state (DeepSeek Harness injects this AGENTS.md; the inject file is the live board). Use status_ tools to update Next (≤3), in-flight, done (with verify), and blocked. Do not invent a parallel STATUS novel; the vault owns truth and STATUS.md is generated.

安装

git clone https://github.com/janpauldahlke/dsh-local-long-horizon.git
cd dsh-local-long-horizon
npm install && npm run build
dsh plugin --profile web add "$(pwd)"

重启(或启动)dsh web,让 host 和 client 两侧都加载:

env -u DSH_WEB_URL -u DSH_SHELL -u DSH_SESSION_ID dsh web --no-open

卸载:

dsh plugin --profile web remove dsh-local-long-horizon
restart the web instance that had the plugin

没有 harness 的 file: 依赖——host 在 dsh 提供的实时 ctx.tools 服务上注册工具。

智能体工具

| 工具 | 用途 |
| status_init | 为某个 cwd 创建 / 刷新 vault;把 Long horizon 打开 |
| status_get | 完整的结构化记录 |
| status_set_next | 替换 Next(0–3 个字符串) |
| status_set_inflight | 设置进行中(summary 必填,不能为空) |
| status_clear_inflight | 清除进行中 |
| status_set_phase | 简短阶段标签 |
| status_mark_done | 追加已完成(可选 verify、rotateNext) |
| status_block / status_unblock | 阻塞原因 |
| status_set_enabled | 开 / 关 |
| status_ping | 宿主健康探测 |

默认 cwd 取自智能体会话工作区;传入 cwd 可覆盖。

界面

| 界面 | 路径 / 名称 |
| Vault | ~/.dsh/storages/dsh-local-long-horizon/<taskId>.json |
| Inject | <cwd>/.dsh/task-status-inject.md |
| Markdown | <cwd>/STATUS.md(每次变更都会覆盖) |
| HTTP | GET / POST /api/dsh-local-long-horizon |
| UI | 右侧栏 Long horizon + 输入框停靠区标签 |

面板会自动跟随聊天的 workspace 文件夹。只有需要覆盖时才用 Track folder;Use chat workspace 可重置。

架构

双面包(与 gpu-monitor / slot-health 同一标准):

- 宿主(lib/index.js,ESM)—— vault 服务、智能体工具、HTTP 路由。
- 客户端(lib/client.js,CJS ModuleLoader 工厂)—— 右侧栏面板 + 停靠区标签;轮询宿主 JSON 路由。
- 胶水 —— cordis.patch.yml + package.json 里的 dsh.bundle / dsh.client。

界面只用内联样式(与同类界面一致:currentColor、圆角卡片、灰调等宽时间)。

dsh-local-long-horizon/
├── package.json
├── build.mjs
├── cordis.patch.yml
├── media/ # README screenshots
├── src/host/ # vault, tools, route, inject, STATUS.md
├── src/client/ # pane + dock chip
├── src/shared/ # shared types
└── lib/ # built artifacts (required at runtime)

开发 / 测试

npm test # build + node suite (schema, vault, tools — no GPU)

限制

- 后写者胜 —— 跨会话没有分布式锁。
- Next ≤ 3 是有意为之;过夜计划要不断轮换,别写成小说。
- 没有 workspace cwd 的聊天需要打开一个文件夹(或粘贴绝对路径)。
- 只在树外 —— 不打 DeepSeek Harness 核心补丁。
- STATUS.md 覆盖是单向的:手动改动就当一次性内容。

贡献

安装、目录结构和 PR 要求见 CONTRIBUTING.md。

许可证

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓janpauldahlke/dsh-local-long-horizon
分享 · DeepSeek Harness Hub
janpauldahlke/dsh-local-long-horizon

托管长期任务状态,自动注入进度并校验更新

回到顶部