通过 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任务,以及“方案 / 交付记录”文档入口。
快速使用
- 在目标 profile 安装并加载插件(见安装说明)。
- 打开任一会话,点标题栏的 Project Ops。
- 用分类筛选文件;点文件名打开宿主原生预览。
- 点同一行的打开位置,访达会显示并选中该文件,之后复制文件或拖到聊天即可。
- 切到“方案”区打开 PLAN / 交付记录;
Escape关闭面板,Tab在面板内移动。
文件分类与来源
分类只看扩展名,与文件名里的词语无关:
| 分类 | 扩展名 |
|---|---|
| Word | doc、docx、docm、odt、rtf |
| Excel | xls、xlsx、xlsm、xlsb、ods、csv、tsv |
| PPT | ppt、pptx、pptm、odp |
| 图片 | 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 源码界面,也不构成发布或安装验收。


工具
服务端工具: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。
兼容性与更多文档
链接
同类插件
loopx-project/loopx#dsh-loopx-plugin★ 6537
LoopX——面向长周期 Agent 的提供商中立、本地优先状态内核与控制平面:在 DeepSeek Harness 执行层之上持久化 Goal、Todo、门禁、证据、配额、恢复与交接状态;插件负责引导安装 CLI 与技能、准入有界的同会话续跑,并为精确绑定的工作循环提供本地 GoalBar。
Q00/ouroboros#integrations/dsh-plugin★ 6308
通过 DSH MCP 客户端挂载 Ouroboros 的纯配置包,在 DSH 中提供 36 个涵盖需求访谈、Seed、执行、评估与演化流程的工具。
chuspeeism/dashi-taskboard#deepseek-harness★ 3434
把当前已安装并运行中的 Codex Taskboard 嵌入 DeepSeek Harness 侧边栏,并通过 Launcher 运行时描述文件连接,而不是使用固定端口。
NanmiCoder/dsh-agent-teams★ 2647
AgentTeams 多智能体团队。
EthanYoQ/AI-Novel-Writer#dsh-ai-novel-writer★ 2265
安装专用 AI 小说创作预设与工作台:提供带修订号的本地项目资产、紧凑侧边工作台,以及需要原生审批的逐文件变更。
Miaotofu01/Study-Mate★ 1307
你的AI学习搭档:定计划、讲知识、做项目,学透一门科目。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。