flowctx-dsh:面向 DeepSeek Harness 的本地优先上下文引擎

前言

下面介绍一个 DeepSeek Harness(DSH)插件:flowctx-dsh

它面向智能体编程中常见的上下文管理问题:随着会话变长,工具输出不断累积,历史细节逐渐模糊,模型可能重复搜索、遗忘约束,或者把早期失败路径和关键标识符弄丢。已有做法通常依赖基础压缩或摘要,但摘要可能丢失失败路径,工具结果压缩后也可能难以原样取回。

flowctx-dshdsh-compaction-basic 之上做加性扩展:摘要风格更贴近工程交接,工具结果压缩后可按 hash 取回原文,历史可折叠成分层摘要节点,并提供一个可选的 working_memory 编辑工具。所有扩展均可逐项开关;全部关闭时,行为等同于仅调整了摘要风格的 dsh-compaction-basic

插件定位

flowctx-dsh 是面向 DSH 的本地优先上下文引擎,由 Ayou-Claw 维护。

  • 名称:flowctx-dsh
  • 版本:0.1.0
  • 许可证:MIT
  • GitHub:https://github.com/Ayou-Claw/flowctx-dsh

它不是替代 DSH 基础压缩能力,而是在其上做扩展:

  • 摘要输出面向工程师交接笔记;
  • 历史可后台折叠成分层 summary nodes
  • 超阈值工具结果可逆投影;
  • 提供可选的工作记忆工具;
  • 提供 flowctx_retrieve 用于取回被压缩材料。

核心能力

工程师交接笔记摘要

这项能力挂在 agent/pre-step,替换原摘要提示词。

它要求摘要输出 6 段式交接笔记,并专节保留两类关键信息:

  • 失败路径;
  • 逐字标识符。

与通用叙述式摘要相比,它更适合软件调试、代码修复、长期任务推进等场景,因为“哪条路试过了”“哪个函数、路径、commit 或 session id 出现过”往往比笼统总结更重要。

该能力默认开启。

分层 DAG 摘要

这项能力同样挂在 agent/pre-step,但走后台 fire-and-forget 路径。

它把历史折叠成分层 summary nodes,而不是只维护一条滚动摘要。对于长会话来说,早期不同话题可以保留为不同层级的摘要节点,避免全部被压成一段泛化描述。

该能力默认开启。

可逆工具结果投影

这项能力挂在 tools/post-execute

当工具返回结果超过阈值时,它会对 tool result 做结构化压缩。压缩时不是直接丢弃原文,而是:

  • 将原文按 hash 存入 CompressionStore
  • 在上下文中保留可取回引用;
  • 支持 byte-exact 取回。

也就是说,大段日志、长工具输出可以先进入压缩引用,后续需要时再按原样恢复。

该能力默认开启。

可编辑工作记忆

这项能力通过 flowctx_scratch_* 工具提供,用于维护 <working_memory> 块。

它默认关闭。开启后,模型可以通过以下工具维护工作记忆:

  • flowctx_scratch_append
  • flowctx_scratch_replace
  • flowctx_scratch_rethink

适合需要让 agent 主动记录当前目标、待办事项、不可遗忘结果的任务。

取回工具:flowctx_retrieve

flowctx_retrieve 是配套取回工具。

它支持两类取回:

  • hash 取回被投影压缩的原文;
  • node id 取回指定层级的交接笔记。

这使得压缩不是单向丢失,而是“先引用、后恢复”。

安装与启用

下面以 web profile 为例。

1、安装插件

执行:

dsh plugin --profile web add flowctx-dsh

2、加入 profile patch 层

编辑:

~/.dsh/profiles/web/cordis.patch.yml

加入:

- insert:
    - id: flowctx-dsh

3、重启 DSH web

dsh web

4、验证加载

dsh --profile web --dump-config | grep flowctx

如果配置已加载,命令输出中应能看到 flowctx 相关配置。

典型用法

取回被投影压缩的原文

当工具结果被投影压缩后,可以用:

flowctx_retrieve(hash="…")

按 hash 取回原文。

取回指定层级的交接笔记

flowctx_retrieve 也可以按 node id 取回指定层级的交接笔记。

这适合在长会话中回看早期阶段的任务目标、已尝试方案、失败路径或关键标识符。

使用 scratchpad 维护工作记忆

开启 scratchpad 后,可以使用:

  • flowctx_scratch_append
  • flowctx_scratch_replace
  • flowctx_scratch_rethink

维护 <working_memory>

该能力默认关闭,适合明确希望 agent 主动维护短期工作记忆的场景。

配置与状态

所有配置项均为可选。未配置时,flowctx-dsh 的行为等同于 dsh-compaction-basic,区别主要是摘要风格不同。

默认状态:

  • 工程师交接笔记摘要:默认开;
  • 分层 DAG 摘要:默认开;
  • 可逆工具结果投影:默认开;
  • 可编辑工作记忆:默认关。

状态存储有两档:

  • 不设置 stateDir 时,退化为纯内存 + TTL,会话内可恢复;
  • 设置 stateDir 后,压缩引用、summary nodes 与 scratchpad 共用一个数据库句柄,落盘到:
<stateDir>/flowctx.sqlite

依赖方面,peerDependencies 指定了:

@deepseek-ai/cordis ^4.0.1

以及多个:

@deepseek-ai/* ^0.1.0-rc.6

依赖。

适用场景与注意

适合以下使用方式:

  • 使用 DSH 做长会话智能体编程;
  • 需要保留失败路径和关键标识符;
  • 需要把长工具结果压缩成引用,并在后续按需恢复;
  • 希望历史摘要分层保留,而不是只保留一条滚动摘要;
  • 希望按需开启工作记忆编辑。

需要注意:

  • 插件会以当前 dsh 进程权限运行;
  • 安装前应检查源码、许可证与依赖;
  • 当前版本为 0.1.0,许可证为 MIT
  • DSH 版 SWE-bench 评测正在进行中,结果尚未提供;
  • 完整配置项继承自 dsh-compaction-basic 的完整列表在已核实资料中被截断,本文不展开。

结尾

flowctx-dsh 的价值在于:它把 DSH 的上下文压缩从“摘要掉历史”推进到“压缩、分层、保留、可取回”的工程记忆模型。对于长会话 agent 编程来说,这种可恢复的上下文组织方式,比单纯缩短 prompt 更关键。

GitHub:https://github.com/Ayou-Claw/flowctx-dsh

目录页地址未在已核实资料中给出。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye