托管长期任务状态,自动注入进度并校验更新
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 29 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
janpauldahlke/dsh-local-long-horizon
托管长期任务状态,自动注入进度并校验更新
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,798已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,327已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,021已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 150,724已汉化DSH
71.1