DeepSeek Harness 插件

Missher12/dsh-project-ops

Star 数 ★ 0 分类 工作流与自动化 收录于 2026-09-23

通过 Harness Jobs 发现和执行项目任务,检查运行回执,并使用 Agent 工具诊断项目配置。

安装

# Release 预构建包

dsh plugin --profile web add "https://github.com/Missher12/dsh-project-ops/releases/download/v0.3.1/dsh-project-ops-0.3.1.tgz"

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:Missher12/dsh-project-ops

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

Project Ops 是 DeepSeek Harness 的会话插件 @missher/dsh-project-ops。它在会话标题栏放一个入口:按分类查看当前会话已登记的实际文件和当前项目的开发方案;文件用宿主原生右侧预览打开,也可以在访达(Finder)中定位后复制或拖到聊天里发给别人。

桌面端 · 安装说明 · 开发任务文档

当前状态

  • 当前版本 1.0.1,安装包与校验和见 v1.0.1 Release。
  • 面向 DeepSeek Harness 0.2 系列;兼容性按插件真正调用的能力探测,而不是绑定某个精确的 Host 版本号。
  • 安装包存在、源码已升级、目标 profile 已加载是三种不同状态;以实际安装来源和宿主实际加载结果为准。

能做什么

  • 会话文件:列出当前会话已登记的实际文件(原生 present 交付,以及成功的 write、edit、str_replace_editor 修改)。列表来自会话历史记录,可能保留后来被移动或删除的条目;报告 artifacts[] 里的文字不算文件登记。
  • 分类浏览:全部、方案、Word、Excel、PPT、PDF、图片、音视频、其他,按真实扩展名归类;方案.docx 属于 Word,不会被当成开发方案。
  • 原生预览:点文件名交给宿主右侧栏的文件预览打开,不自己渲染文档;能否显示内容由宿主对该格式的支持决定。
  • 打开位置:在访达中显示并选中该文件,随后可复制文件本身或拖到聊天窗口,而不是只拿到一段路径。
  • 开发方案:同一面板里列出当前项目的 docs/tasks 任务,以及“方案 / 交付记录”文档入口。

快速使用

  1. 在目标 profile 安装并加载插件(见安装说明)。
  2. 打开任一会话,点标题栏的 Project Ops。
  3. 用分类筛选文件;点文件名打开宿主原生预览。
  4. 点同一行的打开位置,访达会显示并选中该文件,之后复制文件或拖到聊天即可。
  5. 切到“方案”区打开 PLAN / 交付记录;Escape 关闭面板,Tab 在面板内移动。

文件分类与来源

分类只看扩展名,与文件名里的词语无关:

分类 扩展名
Word doc、docx、docm、odt、rtf
Excel xls、xlsx、xlsm、xlsb、ods、csv、tsv
PPT ppt、pptx、pptm、odp
PDF pdf
图片 png、jpg、jpeg、gif、webp、svg、avif、bmp、tif、tiff
音视频 mp3、wav、m4a、flac、ogg、mp4、mov、webm、mkv、avi
其他 其余扩展名,包括源码与文本
  • 同一绝对路径只保留最新一条记录;不同目录下的同名文件分别保留,并在名字冲突时额外显示一行目录。
  • 列表随会话文件记录更新,重载后由宿主历史恢复;最多保留最近 1000 个不同路径,达到上限会提示。
  • 文件索引不可用与“暂无文件”是两种状态,分别提示,不会把缺少能力说成没有文件。

搜索记录

新增的搜索页签记录本会话的原生搜索结果;它与交付文件相互独立,不会把搜索命中变成新的交付:

  • 来源:glob 的 meta.paths、grep 的 meta.files[].path、web_search 的 meta.sources[](标题 + http(s) 链接),statusCode 为 2xx 的成功 web_fetch(meta.url,显示在已打开网页),以及 session_search/session_event_search 的 query 参数。
  • 只保存结构化元数据:不保存 grep 命中行、网页摘要或正文,也不从自由文本反推路径。
  • 本地命中可打开原生预览和“打开位置”;网页来源是普通 http(s) 链接。同一次调用内去重;相对命中按工具当时的 working-directory/change 解析,没有已知绝对工作目录的相对命中直接省略,不生成错误的可点击路径。
  • 失败的调用显示为失败,不产生命中;零命中搜索保留;宿主截断(truncated/total)与插件自身限额(50 次搜索、每次 100 个路径和 50 个来源)都会明确提示未完整展示。
  • 记录按会话隔离。旧宿主没有该投影时显示“此宿主无搜索记录”;回放只补齐宿主仍保留的原生事件(checkpoint/窗口),不会重新执行搜索。session_search/session_event_search 在本宿主没有结构化结果元数据,因此只记录查询词(显示“结果见会话”),不解析也不搬运会话正文。

方案与交付记录

  • Agent 在有一定规模的开发任务开始时维护 docs/tasks/<日期>-<slug>-<身份摘要>/PLAN.md,按进展续写;完成交付检查后写 READY.md。普通问答和极小修改不强制生成。
  • 任务行用四种短状态区分:交付关联当前方案、方案已更新、记录待核对、方案进行中。“交付关联当前方案”只表示记录与当前方案修订一致,不代表验收通过、发布或安装。
  • 文档入口打开宿主原生预览;未生成的入口禁用并在提示里说明原因;从方案区打开文件后面板自动收起。

预览、打开位置与失效文件

  • 点文件名先经宿主文件系统确认该路径仍可访问,再打开原生预览;文件被移动、删除或权限拒绝时在行内显示错误。是否渲染出内容由宿主对该格式的支持决定,不保证每份文件都有内容预览。
  • “打开位置”走宿主原生的会话文件定位动作(session/openWorkspacePath 的 reveal);macOS 上由宿主执行 open -R,直接在访达中选中文件。插件不拼接 shell 命令、不新建服务。
  • 文件移动或删除后,行仍会保留(历史事实);点击预览或打开位置会得到简短错误提示,用户可以据此重新交付文件。
  • 宿主缺少文件索引、原生预览或桌面定位能力时,只关闭对应能力并给出提示,面板与其他入口继续可用,不会整块消失。

宽栏与窄栏

  • 入口与宿主标题栏动作一致,使用 --dsw-* 主题变量,跟随亮/暗主题。
  • 标题行空间充足时显示完整 Project Ops 文字与下拉箭头;标题行缩到 640px 及以下时入口只保留图标(28px 见方),文字和箭头隐藏。
  • 图标态仍保留 title 与 aria-label(“项目方案与文件:N 项”),键盘 Tab 可聚焦、Enter 打开、Escape 关闭,关闭后焦点回到入口。

已核验范围

本轮在 DeepSeek Harness 0.2.1-rc.4 / macOS 桌面上做了真实安装与界面验收:

  • 真实的 Word 与 Excel 文件分别归入 Word、Excel 分类,点文件名可打开右侧原生预览;
  • 刷新界面后文件仍在列表中;
  • 会话标题行收窄到 491px 时,“Project Ops”入口显示为 28px 图标;
  • Tab、Enter、Escape 正常,图标态保留 title 与 aria-label;
  • 点“打开位置”后,访达分别选中了 Word 和 Excel 文件。

这是已实测的锚点,不是全部平台、全部 Host 版本或全部模型环境的验收;本轮未覆盖其他平台、旧 Host 及所有模型组合。

安装与更新

从当前 main 源码打包、安装、重载与卸载步骤见安装说明。通过目标桌面匹配的 dsh plugin --profile <目标profile> add <本地.tgz> 安装,重载 profile 并刷新 DSH 页面后确认插件无加载错误、会话标题栏出现 Project Ops。插件管理器的详情页读取包内 locale/<语言>.json 的 meta.detail,显示简短介绍(docs/PLUGIN_DETAIL*.md);GitHub 的 README 保留详细说明。不要用旧源码的 lib 冒充冻结包。

开发与检查

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build
pnpm check:ui

在 macOS 上请用未启用 hardened runtime 的标准 Node 构建:DSH 自带运行时无法加载 npm 的未签名原生绑定(mapped file has no cdhash),标准 Node 可以加载。若原生绑定崩溃,删除 node_modules 后重新 pnpm install --frozen-lockfile,再 pnpm build;构建失败会恢复上一份 lib,不会删除。

使用 Node ^22.19.0 || >=24.0.0。pnpm test 覆盖服务端能力、文件投影与客户端渲染;pnpm check:ui 校验样式类与界面契约;pnpm smoke:profile 在本机隔离的临时 profile 内做安装/调用/卸载检查,它不等于真实模型、Electron 或日常安装验收。

历史记录与截图

  • 0.4.0 交付记录:宽宿主兼容与界面修订(含尚未验证项)、文档能力。
  • 下方截图与上述记录都是 0.4.0 时期的历史界面,未包含本轮的文件分类、打开位置和精简文案,不代表当前 main 源码界面,也不构成发布或安装验收。

Project Ops 任务面板(0.4.0 历史截图)

点击“方案”打开 PLAN.md(0.4.0 历史截图)

工具

服务端工具:missher_project_ops_task_list、task_plan、task_run、task_collect、verification_gate、capability_search、doctor、document_read、document_write(均带 missher_project_ops_ 前缀)。执行仍交给 Agent 可见的原生 shell / Jobs,插件不接受任意命令、不替代审批、沙箱或调度器;验证门复核回执与源码快照,未知证据不能判成功;不会自动推 Git。

兼容性与更多文档

兼容性矩阵 · 任务文档说明 · Cordis 集成 · 旧官方验收

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。