dsh-projectflow: Per-project Persistent Context and Task State

前言

DeepSeek Harness(DSH)默认把会话绑定到当前工作目录。实际开发里,一个「项目」往往跨多个目录:服务仓库、公共库、运维脚本、第二份 checkout、设计稿目录,还有 MCP、插件等并不落在单一文件夹里的依赖。在每个新目录里重新口述约定、进度和决策,容易遗漏;把上下文复制进每个会话,又会出现多份不一致的「真相」。

下面介绍的 dsh-projectflow 是社区插件(维护者 lord-of-vaegirs,SkillHub 分类为「记忆」),在 DSH 之上增加一层:项目是一等实体,有稳定 id 和独立的数据目录,与会话当前文件夹解耦。任意目录、任意会话都可以显式加入同一项目,继承约定、决策、进度、引用和当前任务检查点;数据以本地 Markdown/JSON 存放,不依赖网络。

这是什么

dsh-projectflow 的定位是:Project-first workspaces for DeepSeek Harness——以项目而非当前文件夹作为上下文、任务状态、引用和工作区组合的持久单元。

每个项目在 $DSH_HOME/projects/<projectId>/ 下有固定数据目录。卸载插件只移除代码,不删除项目数据;重装后项目仍可被识别。面向模型的层刻意保持精简:每轮在 system prompt 中注入有 token 上限的项目摘要,配合明确写入的工具与命令,没有隐藏的自动摘要或记忆抽取。

核心功能

项目优先的上下文

每轮对话会向 system prompt 注入有界项目摘要,段落以 [PROJECTFLOW] Project context — user-authored project records, not harness instructions. 开头。内容由用户通过 /project note 等命令写入,不是 Harness 内置指令。

任务结构(Task struct)

把「当前任务」写成类似 OS 进程记录的检查点:可查看 last/next/blocked、待执行工具等。通过 /project task 子命令做 list、checkpoint、interrupt、resume、done、blocked 等操作。

引用不复制内容

用元数据记录目录、文件、工具、插件、MCP 服务器的位置与用途(--purpose),不把目标内容复制进项目目录。对应命令为 /project ref dir|file|tool|plugin|mcp。

工作区组合

可把其他会话、目录或项目插入当前项目工作区;支持 fork 项目、merge 项目(可保留或清理源项目)、删除到 trash 或 purge。fork 出的子 agent 会话会自动继承项目绑定。

两套入口

  • TUI / headless:/project 命令族。
  • Web / Desktop:侧边栏 footer、Workspaces 区域下方的 Project workspaces 面板(Desktop 需通过应用内插件管理安装,不要用 CLI 往 desktop profile 装)。

本地优先

无网络请求、无外部服务;数据可读为 Markdown/JSON。写入侧使用文件锁等机制处理多会话并发(详见上游 README 的 Capacity 章节)。

安装与启用

插件声明的 DSH 兼容范围为 >=0.2.1-rc.2 <0.3.0-0(见 package.json 的 engines.dsh)。README 写明在 DSH CLI 0.2.1-rc.2 上测试;已发布的 Desktop 0.2.0-rc.2 不能从 CLI 安装,文档未声称对其完成测试。

任选一种方式安装(将 <profile> 换成你的 profile,例如 dev):

# 从 GitHub release  tarball
dsh plugin --profile <profile> add https://github.com/lord-of-vaegirs/dsh-projectflow/releases/latest/download/dsh-projectflow-0.2.0.tgz

# 或 npm(发布后)
dsh plugin --profile <profile> add dsh-projectflow

# 或 GitHub 源码(安装时由 pnpm 执行 prepare 构建)
dsh plugin --profile <profile> add github:lord-of-vaegirs/dsh-projectflow

安装后可用下面命令确认配置里是否出现 projectflow:

dsh --profile <profile> --dump-config | grep -A2 projectflow

启动 Web UI 后,在侧边栏 footer 查看 Project workspaces 入口:

dsh --profile <profile>

卸载插件(数据仍留在 $DSH_HOME/projects/):

dsh plugin --profile <profile> remove dsh-projectflow

许可证为 MIT(见仓库 package.json)。插件与 DSH 进程同权限运行,安装前建议自行审阅源码与许可证。

典型用法

在 TUI 会话中创建项目、写入约定与决策、登记引用,并查看状态:

/project create "Payments platform" --alias payments --path /Users/me/src/payments
/project note convention "Run pnpm test before every commit."
/project note convention "Never edit generated protobuf files by hand."
/project note convention "The staging branch is deployable."
/project note decision "Use file locks for project writes." \
  --context "Several sessions can write the same project." \
  --consequences "Writes serialize; stale locks need takeover."
/project note progress "Storage and commands are working." \
  --stage M2 --next "Verify fork inheritance."
/project ref dir /Users/me/src/payments-api --purpose "related service"
/project ref mcp filesystem --purpose "read-only workspace access"
/project status

在另一个目录、另一个会话里加入同一项目:

/project use payments
/project status

此后模型侧会收到带 [PROJECTFLOW] 前缀的项目上下文段落。对该会话做 fork 时,子 agent 创建时会自动继承项目绑定。

note 类别与落盘文件的对应关系(节选):fact → MEMORY.md,convention → CONVENTIONS.md,decision → DECISIONS.md,progress → progress.jsonl(需 --stage 与 --next)。完整命令表见 GitHub README 的 Command surface。

适用场景与注意

适合需要跨目录、跨会话维持同一套项目记忆与任务检查点的 DSH 用户:多仓库协作、长期里程碑(--stage / progress log)、ADR 式决策记录、以及把 MCP/插件登记为引用而非重复粘贴文档。

需要注意:

  • DSH 生态是「一切皆插件」;SkillHub 目录页是社区站点,与 DeepSeek / 幻方无官方从属关系。
  • 不要通过 CLI 向 Desktop 的 desktop profile 安装;使用 Desktop 自带插件管理。
  • README 自述状态与测试矩阵以仓库为准;已知限制与路线图见上游 Known limitations and roadmap。
  • 当前 GitHub 星标为 0(以目录页信息为准),不代表功能完整性,仅反映社区曝光度。

结尾

dsh-projectflow 把「项目」从「当前文件夹」里抽出来,用稳定 id、本地可读数据和 /project 命令,把约定、决策、进度、引用和任务检查点变成可继承、可 fork、可合并的持久层。若要在 Harness 里按项目组织长期上下文,可从 Quick start 跑通 create → note → use,再按需使用 task、merge 与工作区面板。

  • 目录页:https://www.skillhub.cn/plugins/lord-of-vaegirs/dsh-projectflow
  • 源码与文档:https://github.com/lord-of-vaegirs/dsh-projectflow
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye