<div align="center">
DSH Knowledge Forge
面向 DeepSeek Harness(DSH)的本地自动 Wiki 与 Skill 记忆插件。
    
[核心亮点](#-核心亮点) · [工作原理](#工作原理) · [快速开始](#快速开始) · [看板](#看板与运维) · [技术架构](#技术架构) · [安全边界](#安全与隐私)
</div>
---
✨ 核心亮点
> DSH Knowledge Forge 专为 DeepSeek Harness 构建,将 Agent 对话轨迹逐步转化为可复用知识。 > > - 第一次出现的长期有效任务 Case,沉淀为可读的 Wiki。 > - 后续独立 Case 再次出现相同稳定流程时,可以晋升为 DSH 原生 Skill。 > - 晋升后,Wiki 变成指向 Skill 的轻量 Meta,让 Agent 渐进式发现能力,不需要把所有 Skill 一次性塞进提示词。
| 能力 | 行为 |
|---|---|
| 本地优先采集 | 顶层 Turn 完成后先脱敏、截断,再写入项目本地 SQLite |
| 按 Session 分批 | 单个来源 Session 满 5 个待处理 Turn,或最老 Turn 等待 60 分钟后触发 |
| One-shot 提炼 | 通过无工具、不可交互的后台 Agent 返回严格结构化结果 |
| Wiki → Skill 晋升 | 首次有价值 Case 写 Wiki;重复、稳定、可执行的流程晋升为原生 Skill |
| 渐进式披露 | 上下文只注入紧凑 Wiki 索引,需要时再读取完整 Wiki 或 Skill |
| 白盒可观测 | 保留 Markdown 产物、批次回执、重试状态和 DSH Web 看板 |
---
项目简介
DeepSeek Harness 是采用插件化架构的开源 Agent Harness。DSH Knowledge Forge 是它的原生插件,为 DeepSeek Harness 增加本地自动知识沉淀能力,无需外部 Memory 服务。
Agent Session 中包含大量有价值的工程记忆:做过什么、用户如何纠正、哪些证据关键、什么决策有效、阻塞任务应该从哪里继续。原始 Transcript 过大、噪声过多,不适合直接成为长期上下文;一次性摘要又缺乏可审计性。
Knowledge Forge 将运行证据与可复用知识分开保存:
- SQLite 保存队列、调度、重试、回执、Case 关系和全文索引。
- Markdown 保存可读、可编辑的 Wiki 与 Skill 长期产物。
- 紧凑 Wiki 索引负责引导召回,不把所有知识页和 Skill 一次性注入提示词。
最终形成一条面向 DeepSeek Harness 的本地知识闭环:
任务发生 -> 有价值 Case 进入 Wiki -> 重复流程晋升 Skill -> 后续 Session 复用工作原理
<p align="center"> <img src="./assets/architecture.svg" alt="DSH Knowledge Forge 架构与 Wiki 到 Skill 晋升流程" width="100%" /> </p>
1. 采集顶层 Turn
插件监听 DSH 顶层 Turn 生命周期,提取用户可见消息、有限长度的助手输出、简化工具证据和相关路径。Reasoning 与完整工具输出不会被复制。
Candidate 写入前会完成:
- 疑似凭证信息脱敏;
- 按配置限制长度;
- 按 Git Workspace 与来源 Session 隔离;
- 生成幂等事件 ID。
2. 每个 Session 独立调度
来源 Session 满足任一条件后进入处理:
- 已有 5 个待处理 Turn;
- 最老待处理 Turn 已等待 60 分钟。
多个到期 Session 会分别调用后台 Agent,不会把不同 Session 的 Turn 混到同一次模型请求中。
3. One-shot 后台知识整理
Knowledge Forge 启动 DSH Subagent,并强制以下约束:
- 只允许一次不可交互的完整回答;
- 禁用所有工具;
- 使用严格 JSON 输出 Schema;
- 每个输入事件必须有且只有一个处理结果;
- Candidate、Wiki 与 Skill 内容全部按不可信数据处理。
Host 在写文件前继续校验事件覆盖、Case 归属、安全 ID、Skill 晋升证据和疑似敏感内容。
4. 第一次写 Wiki,重复后晋升 Skill
知识判断遵循渐进式规则:
1. 丢弃普通查询、临时问题、闲聊和已有 Skill 的无变化复用。 2. 优先复用已有 Skill,避免重复沉淀同一流程。 3. 写入或更新 Wiki,记录长期有效任务 Case:目标、用户反馈、证据、决策、结果、阻塞和继续点。 4. 晋升为 Skill,要求新的独立 Case 再次出现同一稳定、可执行流程,并具备明确输入、步骤和验证方式。 5. Wiki 转为轻量 Meta,指向生成的 Skill。
这套机制不会把每段对话都当成知识,也不会把简单的文字重复误判为自动化能力。
快速开始
环境要求
- Node.js
^22.19.0 || >=24.0.0 - DeepSeek Harness
0.1.0-rc.6
Knowledge Forge 使用 Node 内置 node:sqlite,无需额外安装 SQLite 软件。
从当前仓库安装
克隆代码并构建预编译 tarball:
git clone https://github.com/bill084153-cell/dsh-knowledge-forge.git
cd dsh-knowledge-forge
npm install
npm run build
npm pack安装到 DSH Web profile 并启动:
dsh plugin --profile web add ./dsh-knowledge-forge-0.1.0.tgz
dsh web需要在哪个 DSH profile 中自动沉淀,就把 Bundle 安装到对应 profile。Web profile 会额外提供 Dashboard。
> TypeScript DSH 插件直接从 GitHub 安装时需要授予安装期构建权限。先构建 tarball,可以让安装行为更明确,也避免在用户的 DSH profile 中执行仓库构建脚本。
验证安装
dsh web --dump-config | grep -A 8 dsh-knowledge-forge
dsh plugin --profile web exec \
dsh-knowledge-forge doctor --workspace .doctor 正常时会输出 Workspace、本地数据库路径、队列数量、Wiki 数量、Skill 数量和 status: ok。
存储结构
Knowledge Forge 只在当前项目内写入:
<project>/.dsh/
├── knowledge-forge/
│ ├── knowledge-forge.sqlite # 队列、批次、回执、重试、全文索引
│ └── wiki/
│ ├── index.md # 注入 Agent 上下文的紧凑召回地图
│ └── pages/
│ └── <wiki-id>.md # 长期任务 Case 或 Skill Meta
└── skills/
└── <skill-id>/
└── SKILL.md # DSH Skill Catalog 可原生发现的 SkillSQLite 属于运行状态;Markdown Wiki 与 SKILL.md 是可读的长期知识产物。
触发、重试与保留策略
| 策略 | 默认值 |
|---|---|
| Turn 阈值 | 每个 Session 5 个待处理顶层 Turn |
| 时间阈值 | 最老待处理 Turn 等待 60 分钟 |
| Session 混批 | 禁止;每个到期 Session 独立处理 |
| 重试间隔 | 30 秒、2 分钟、10 分钟 |
| Dead letter | 第 4 次执行仍失败 |
| Processing Lease | 30 分钟后执行崩溃恢复 |
| 运行数据保留 | 90 天 |
| Wiki / Skill 过期 | 不自动过期 |
常驻 dsh web 可以准时执行时间触发。如果 DSH 停止,待处理数据会继续保存在 SQLite 中,并在 Workspace 再次活跃时补处理。
调度器是进程级单实例,不会为每个 Session 常驻一个后台进程。来源 Agent 已退出时,可以使用同一 Workspace 的其他在线顶层 Agent 承载 one-shot Worker;没有在线 Parent 时,批次等待下一次 Workspace 活动。
看板与运维
将插件安装到 Web profile,执行 dsh web,然后打开 Settings → Knowledge Forge。
看板展示:
- Workspace 与来源 Session 筛选;
- Pending、Running、Waiting、Completed、Dead-letter 数量;
- 来源 Session 与 Worker Session 跳转;
- 批次触发原因和逐 Turn 动作;
- 生成的 Case、Wiki 与 Skill;
- 校验错误与执行错误。
Session 内命令
/knowledge-forge
/knowledge-forge run
/knowledge-forge retry <batch-id|all>离线诊断
下面的命令只读取本地状态,不会启动模型:
dsh plugin --profile web exec \
dsh-knowledge-forge status --workspace .
dsh plugin --profile web exec \
dsh-knowledge-forge doctor --workspace .知识召回
Knowledge Forge 注册两个只读工具:
| 工具 | 用途 |
|---|---|
knowledge_search | 通过本地 SQLite FTS5 搜索 Wiki 与生成 Skill 的 Meta |
knowledge_read | 读取搜索结果中的单个 Wiki 页面或生成 Skill |
Agent 创建时只注入紧凑 Wiki 索引,需要时再加载完整页面与 Skill Body。该方式遵循 DSH 原生 Skill 模型,并节省上下文空间。
技术架构
| 层级 | 实现 |
|---|---|
| DSH 生命周期 | agent/turn-stopping 与 agent/created 扩展点 |
| Candidate 提取 | 有限长度的问答、简化 Tool Trace、路径证据、脱敏 |
| 运行存储 | Node 22 内置 node:sqlite,可用时启用 WAL,FTS5 检索 |
| 调度 | 一个进程级 Scheduler 协调多个 Workspace 数据库 |
| 语义 Worker | DSH subagents.start('spawn', ...),无工具 one-shot 执行 |
| 输出契约 | 严格 JSON Schema + Host 语义强校验 |
| 长期产物 | 原子写入 Markdown Wiki 与 .dsh/skills/*/SKILL.md |
| 召回 | Wiki 索引上下文 + knowledge_search / knowledge_read |
| 可观测性 | 只读 HTTP Endpoint + DSH Settings 页面 |
插件不依赖外部服务,运行时只存在于 DSH 进程与当前项目目录中。
安全与隐私
- 不复制原始 Session Log、模型 Reasoning、完整工具输出和密钥。
- Candidate 持久化前会脱敏并限制长度。
- Candidate、Wiki、Skill、路径、工具参数和工具输出均视为不可信输入。
- 后台 Agent 不拥有工具,不能执行 Candidate 中的指令。
- 每次 Wiki 或 Skill 写入前都由 Host 强校验。
- 产物 ID 限制为安全的 kebab-case 路径。
- 只允许在声明的项目目录内进行原子文件替换。
- Dashboard 接口只读,沿用 DSH Web 原有暴露边界。
- 运行数据保留 90 天;整理后的 Wiki 和 Skill 由用户自行编辑或删除。
配置
Bundle 默认配置位于 [cordis.patch.yml](./cordis.patch.yml):
- insert:
- id: knowledge-forge
name: dsh-knowledge-forge
config:
turnThreshold: 5
maxAgeMinutes: 60
retentionDays: 90
maxRetries: 3用户可以通过后置 DSH profile patch 覆盖插件配置。其他选项还包括 processingLeaseMinutes、Candidate 与 Tool Preview 长度、Wiki 上下文长度和 enabled。
开发验证
npm install
npm run typecheck
npm test
npm run build
npm run pack:check当前测试覆盖 Candidate 提取、脱敏、Session 隔离与调度、重试与 Dead Letter、结构化结果校验、Wiki/Skill 原子写入、DSH 原生 Skill 发现、Bundle 组合和 Dashboard Transport。
项目状态
Knowledge Forge 当前适配 DeepSeek Harness 0.1.0-rc.6。该版本仍处于 Developer Preview,DSH 稳定版发布前可能存在破坏性 API 变化,插件需要同步适配。
参与贡献
欢迎提交 Issue、文档优化、兼容性修复和测试。建议将贡献范围保持在通用的本地自动知识沉淀能力,避免在核心中引入特定业务或聊天框架耦合。
如果这个项目对你有帮助,欢迎 Star,并通过 GitHub Issues 分享实际的 Wiki/Skill 晋升案例。
许可证
[MIT](./LICENSE) © 2026 Zhongxibiao