Skip to content
dsh.fish
Bundle

dsh-custom-context-injector

DeepSeek Harness (Cordis) 插件:提供「自定义上下文」设置页并注入到模型上下文,支持落盘持久化。

Source
LiKanGame
License
MIT
Updated
Updated yesterday

Readme

# dsh-custom-context-injector

DeepSeek Harness(Cordis 运行时)插件:让你在设置里维护一段「自定义上下文」,并把它注入到每次模型调用的提示中。

## 它做什么

两个能力合在一起:

- **D — 「自定义上下文」设置页**
  在 GUI 的 设置(齿轮)→ 新增一页「自定义上下文」:一个「启用注入」开关 + 一个多行输入框 + 「保存」按钮。

- **B — 自动注入**
  启用状态下,保存的这段文字会作为一条 `systemPrompt` section 注入到每次模型装配。实测:开启后,当前会话以及之后通过「新对话」开出的新会话都会携带这段内容。

- **持久化**
  保存会尝试把内容写入磁盘 JSON,跨重启保留;若磁盘写入不可用则如实降级为“仅内存”并在设置页提示。

## 结构

```
src/
  host.js     Host 半区:fs 持久化、get/set RPC、systemPrompt section 注入
  client.js   Client 半区:settings.section 插槽里的设置页 UI
package.json
```

两侧通过 **Package-private RPC** 通信:Client 用 `host.call('extra-context/get'|'extra-context/set')`,Host 用 `harness.handle(...)` 应答。Host 的注入读取内存缓存(由启动时的磁盘加载与保存时写入共同维护),因为 `systemPrompt.section` 的 `text` 是同步的。

## 运行环境依赖(重要)

本源码是**经过实机验证的动态 Cordis Package** 的可维护镜像。它依赖 DSH 动态运行时注入的全局/服务:

- Host:`harness` 全局、`ctx.get('systemPrompt')`、`ctx.get('fs')`(纯 JS,无 import/require)。
- Client:`React`(仅 createElement)、`host`、`styles`、`ctx`、插槽 `settings.section`(无 JSX/import)。

因此它**当前不是可独立安装的 npm 包**:客户端部分会依赖 Harness 内部包(`@deepseek-ai/dsh-*`),在那些包可被外部解析之前,无法用 `dsh plugin add` 直接装上。把它跑起来有两条现实途径:

1. **作为动态插件**:把 `host.js`/`client.js` 的插件函数体按 Cordis 动态插件流程 `define` + `run` 到当前运行实例。
2. **接线成真正的 DSH feature**:待能解析内部依赖后,把它并入某个 composition / feature 目录并加一行加载。

## 行为与边界(如实说明)

- **进程内缓存 + 磁盘文件**:内容存一份在内存(供同步注入),保存时落盘。
- **持久文件实际落点**:在本机实测中,`fs` 服务的默认 base 是 DSH 宿主进程工作目录(如 `E:\deepseek-harness`),所以文件落在 `E:\deepseek-harness\.dsh-custom-context.json`。若要改到别处,需要显式 resolve 一个绝对路径(并确认 `fs` 允许写该位置)。`.dsh-custom-context.json` 已加入本仓 `.gitignore`,不会被提交。
- **注入作用域**:作用于加载该插件的 realm 的后续提示装配,不等于对全 Harness 的历史会话做持久写入。
- **动态插件为临时形态**:正式化需迁到持久 settings namespace 或 composition。

## License

MIT

Install

dsh plugin --profile web add github:LiKanGame/dsh-custom-context-injector

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source