前言¶
DeepSeek Harness (DSH) 的核心设计理念是「一切皆插件」。在长期的项目开发中,会话上下文容易丢失,项目知识难以沉淀。dsh-project-context 插件通过在项目目录内建立一套独立的存档与记忆系统,将 DSH 的事件流会话转化为可检索、可迭代的项目级上下文。
该插件由呼啸山庄 (P02-1010751281) 维护,遵循 MIT 许可证。它将一个 DSH 会话的生命周期拆解为四个阶段:存档、整理、沉淀与交接。
安装与启用¶
插件需要先构建或直接指向源码目录,然后通过 profile 添加。
# 构建或直接指向源码目录
dsh plugin --profile web add /path/to/dsh-project-context
安装后会自动应用包内的 cordis.patch.yml 配置。验证配置是否生效:
dsh --profile web --dump-config | grep -A3 project-
卸载命令:
dsh plugin --profile web remove dsh-project-context
核心架构与数据流¶
插件内部包含四个独立但协作的子模块,通过共享的 helper 进行状态管理。
四阶段处理流程¶
- 存档:将事件流会话在项目内留档。通过
/session-log手动触发,或由turn/end事件驱动。产物包括session.jsonl(权威数据)、session.md(全量渲染)和INDEX.md(机械索引)。 - 整理:将原始对话与记忆系统合并,生成
CONTEXT.md(工作态摘要)和MEMORY.md(记忆库),并在每轮对话中注入。可通过/context-update触发。 - 沉淀:将积累的记忆与上下文按低频触发(如每 20 轮或 30 分钟)转化为项目技能。通过
/autolearn手动触发。 - 交接:当上下文占用越过阈值且没有后台子代理运行时,自动触发。将当前会话摘要、最近原文及旧存档指针交接给新会话。可通过
/handoff手动触发。
数据布局¶
数据存放在项目根目录的 .agents/ 下:
session-logs/:会话存档副本,包含INDEX.md和按 ID 分组的会话详情。memory/:记忆系统。memory.jsonl:权威记忆日志(append-only)。MEMORY.md:记忆渲染视图(人读/注入入口)。CONTEXT.md:工作态上下文(摘要/任务)。HANDOFF.md:最近一次交接摘要。
skills/:沉淀的项目技能。
并发与锁¶
系统使用文件锁机制确保多进程安全写入。MEMORY.md 和 INDEX.md 在写入前会进行字节级备份,防止崩溃导致数据损坏。
配置与使用¶
配置项不写入项目文件,而是写在当前 profile 的设置 patch 文档中,通过 project-context 条目管理。
常用命令¶
- 手动存档:
/session-log - 手动交接:
/handoff - 触发技能沉淀:
/autolearn
验证配置¶
检查 profile 中是否正确挂载了插件配置:
dsh --profile web --dump-config | grep -A3 project-
注意事项¶
- 版本差异:README 显示当前版本为 v0.2.0,但 package.json 中记录为 0.2.1。安装时请以实际运行环境为准。
- 交接触发条件:自动交接需要同时满足上下文占用阈值和没有运行中的后台子代理两个条件。
- 会话路径:DSH 原生会话存储在
~/.dsh/sessions/,本项目存档副本在session-logs/中,两者独立但内容同步。 - 权限与安全:插件以当前 DSH 进程权限运行,安装前建议检查源码。
源码结构¶
插件源码采用模块化设计,位于 src/ 目录:
project-context/:存档模块。project-memory/:整理模块。project-autolearn/:沉淀模块。project-handoff/:交接模块。shared/:四个模块共用的锁机制、状态门面、文件系统原语等工具。client/:Web 设置卡片与字段定义。
总结¶
dsh-project-context 为 DSH 提供了一套完整的项目级记忆解决方案。通过机械索引管理会话,通过分层整理管理记忆,通过自动交接维持长期上下文,适合需要长期维护复杂项目上下文的开发者使用。