🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

对话上下文编辑器 jermaine123123/agent-context-editor

DeepSeek Harness
jermaine12312332 天前有提交已提供中文文档扫描:含敏感能力

跨智能体插件,手动排除和编辑 AI 对话上下文,支持搜索、筛选、隐藏/恢复、撤销,并保留原始会话。

53/100
综合分
64
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add jermaine123123/agent-context-editor
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包agent-context-editor(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 09:04:25

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 52 处,展示前 43 条)
  • 读取本地文件
    adapters/deepseek-harness/host-compat.js:8
    const ownPackage = JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8'))
  • 读取本地文件
    adapters/deepseek-harness/host-compat.js:12
    pluginBuildFingerprint.update(file).update(readFileSync(new URL(file, import.meta.url)))
  • 读取本地文件
    adapters/deepseek-harness/host-compat.js:25
    const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'))
  • 读取本地文件
    adapters/deepseek-harness/host-compat.js:49
    const manifest = JSON.parse(readFileSync(resolve(directory, 'package.json'), 'utf8'))
  • 读取本地文件
    adapters/pi-extension/dist/index.js:3882
    const value = statSync(path);
  • 读取本地文件
    adapters/pi-extension/dist/index.js:3900
    if (!existsSync(path)) {
  • 读取本地文件
    adapters/pi-extension/dist/index.js:3912
    rawText = readFileSync(path, "utf8");
  • 写入本地文件
    adapters/pi-extension/dist/index.js:3961
    writeFileSync(handle, JSON.stringify({
  • 删除本地文件
    adapters/pi-extension/dist/index.js:3978
    unlinkSync(lockPath);
  • 写入本地文件
    adapters/pi-extension/dist/index.js:3983
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    adapters/pi-extension/dist/index.js:3987
    writeFileSync(handle, JSON.stringify(document, null, 2) + "\n", "utf8");
  • 写入本地文件
    adapters/pi-extension/dist/index.js:3992
    renameSync(tempPath, path);
  • 读取本地文件
    adapters/pi-extension/dist/index.js:4056
    const value = statSync(path);
  • 读取本地文件
    adapters/pi-extension/dist/index.js:4071
    if (existsSync(path)) try {
  • 读取本地文件
    adapters/pi-extension/dist/index.js:4072
    raw = JSON.parse(readFileSync(path, "utf8"));
  • 写入本地文件
    adapters/pi-extension/dist/index.js:4090
    writeFileSync(handle, JSON.stringify({
  • 删除本地文件
    adapters/pi-extension/dist/index.js:4107
    unlinkSync(lockPath);
  • 写入本地文件
    adapters/pi-extension/dist/index.js:4112
    mkdirSync(dirname(path), { recursive: true });
  • 删除本地文件
    adapters/pi-extension/dist/index.js:4475
    unlinkSync(lockPath);
  • 读取本地文件
    adapters/pi-extension/src/native-compaction-sidecar.ts:52
    return statSync(path);
  • 读取本地文件
    adapters/pi-extension/src/native-compaction-sidecar.ts:88
    if (!existsSync(path)) {
  • 读取本地文件
    adapters/pi-extension/src/native-compaction-sidecar.ts:93
    try { rawText = readFileSync(path, "utf8"); }
  • 写入本地文件
    adapters/pi-extension/src/native-compaction-sidecar.ts:116
    writeFileSync(handle, JSON.stringify({ pid: process.pid, createdAt: new Date().toISOString() }));
  • 删除本地文件
    adapters/pi-extension/src/native-compaction-sidecar.ts:127
    try { unlinkSync(lockPath); } catch { }
  • 写入本地文件
    adapters/pi-extension/src/native-compaction-sidecar.ts:132
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    adapters/pi-extension/src/native-compaction-sidecar.ts:136
    writeFileSync(handle, JSON.stringify(document, null, 2) + "\n", "utf8");
  • 写入本地文件
    adapters/pi-extension/src/native-compaction-sidecar.ts:139
    renameSync(tempPath, path);
  • 读取本地文件
    adapters/pi-extension/src/projection-sidecar.ts:148
    const value = statSync(path);
  • 读取本地文件
    adapters/pi-extension/src/projection-sidecar.ts:164
    if (!existsSync(path)) {
  • 读取本地文件
    adapters/pi-extension/src/projection-sidecar.ts:170
    rawText = readFileSync(path, "utf8");
  • 写入本地文件
    adapters/pi-extension/src/projection-sidecar.ts:195
    writeFileSync(handle, JSON.stringify({ pid: process.pid, createdAt: new Date().toISOString() }));
  • 删除本地文件
    adapters/pi-extension/src/projection-sidecar.ts:206
    try { unlinkSync(lockPath); } catch { }
  • 写入本地文件
    adapters/pi-extension/src/projection-sidecar.ts:211
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    adapters/pi-extension/src/projection-sidecar.ts:215
    writeFileSync(handle, JSON.stringify(document, null, 2) + "\n", "utf8");
  • 写入本地文件
    adapters/pi-extension/src/projection-sidecar.ts:218
    renameSync(tempPath, path);
  • 读取本地文件
    adapters/pi-extension/src/sidecar.ts:92
    const value = statSync(path);
  • 读取本地文件
    adapters/pi-extension/src/sidecar.ts:107
    if (existsSync(path)) {
  • 读取本地文件
    adapters/pi-extension/src/sidecar.ts:109
    raw = JSON.parse(readFileSync(path, "utf8"));
  • 写入本地文件
    adapters/pi-extension/src/sidecar.ts:132
    writeFileSync(handle, JSON.stringify({ pid: process.pid, createdAt: new Date().toISOString() }));
  • 删除本地文件
    adapters/pi-extension/src/sidecar.ts:146
    try { unlinkSync(lockPath); } catch { }
  • 写入本地文件
    adapters/pi-extension/src/sidecar.ts:151
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    adapters/pi-extension/src/sidecar.ts:155
    writeFileSync(handle, `${JSON.stringify(document, null, 2)}\n`, "utf8");
  • 写入本地文件
    adapters/pi-extension/src/sidecar.ts:160
    renameSync(tempPath, path);
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 手动排除对话上下文
  • 编辑对话上下文
  • 选择性压缩上下文

README

由 DeepSeek 最新模型翻译生成
Agent Context Editor Agent Context Editor 是一个可以手动排除、编辑和选择性压缩 AI 对话上下文的跨 Agent 插件,同时支持搜索、筛选、选择、隐藏、恢复和撤销对话内容,并保留原始 Session。 它为受支持的 Agent 宿主提供一种一致、可恢复且由用户掌控的上下文管理方式,作为提示词引导和自动上下文压缩的补充,而不是替代。 使用建议与注意事项 长时间运行的 Agent 会话可能出现 上下文腐化(context rot):随着上下文不断增长,尤其当失败尝试、过时结论和无关 Tool 输出逐渐累积时,即使上下文窗口尚未满,模型检索并正确使用关键信息的可靠性也可能下降。 对于大多数任务,使用提示词引导 Agent 和依赖自动上下文压缩通常已经足够。手动排除和编辑上下文是自动结果不符合预期时的可选控制手段,而不是用户需要持续进行的操作。当自动压缩遗漏了希望保留的细节,或者失败尝试和无关历史占据了大量上下文时,可以用它更精确地调整后续发送给模型的内容。 提示缓存影响: 排除或编辑上下文会改变发送给模型的输入前缀,使最早改动位置之后的提示缓存可能无法继续复用。改动越靠近 Session 末尾,通常受影响的缓存越少;越靠近开头,影响通常越大。具体行为取决于 Agent 宿主、模型和服务商的缓存机制。原始 Session 仍会保留。
展开完整文档(README 剩余 1 节)
Agent Context Editor

Agent Context Editor 是一个可以手动排除、编辑和选择性压缩 AI 对话上下文的跨 Agent 插件,同时支持搜索、筛选、选择、隐藏、恢复和撤销对话内容,并保留原始 Session。

它为受支持的 Agent 宿主提供一种一致、可恢复且由用户掌控的上下文管理方式,作为提示词引导和自动上下文压缩的补充,而不是替代。

使用建议与注意事项

长时间运行的 Agent 会话可能出现 上下文腐化(context rot):随着上下文不断增长,尤其当失败尝试、过时结论和无关 Tool 输出逐渐累积时,即使上下文窗口尚未满,模型检索并正确使用关键信息的可靠性也可能下降。

对于大多数任务,使用提示词引导 Agent 和依赖自动上下文压缩通常已经足够。手动排除和编辑上下文是自动结果不符合预期时的可选控制手段,而不是用户需要持续进行的操作。当自动压缩遗漏了希望保留的细节,或者失败尝试和无关历史占据了大量上下文时,可以用它更精确地调整后续发送给模型的内容。

提示缓存影响: 排除或编辑上下文会改变发送给模型的输入前缀,使最早改动位置之后的提示缓存可能无法继续复用。改动越靠近 Session 末尾,通常受影响的缓存越少;越靠近开头,影响通常越大。具体行为取决于 Agent 宿主、模型和服务商的缓存机制。原始 Session 仍会保留。

当前功能

- 手动排除选中的上下文,并随时恢复
- 手动编辑 User 消息和 AI Answer,支持恢复原文与撤销
- 使用 AI 精简选中的上下文,预览后替换并可随时恢复(选择性压缩)
- 搜索对话并在多个结果之间跳转
- 按 User、AI、Reasoning、Answer 和 Tool 类型筛选
- 支持单条、连续范围和批量选择
- 隐藏、恢复、重置和撤销视觉修改
- 分别管理 AI Reasoning 和最终 Answer
- 自动保存修改状态,不覆盖原始 Session
- 自动适配中文和英文界面

支持的宿主

| 功能 | Pi TUI | Pi Desktop/RPC | DeepSeek Harness |
| 搜索与筛选 | 支持 | 支持 | 支持 |
| 单条、连续范围和批量选择 | 支持 | 支持 | 支持 |
| 独立管理 Reasoning 和 Answer | 支持 | 支持 | 支持 |
| 视觉隐藏、恢复、重置和撤销 | 支持 | 支持 | 支持 |
| 手动排除模型上下文 | 支持 | 不支持 | 支持 |
| 手动编辑 User/Answer | 支持 | 不支持 | 支持 |
| AI 精简并替换 | 支持 | 不支持 | 支持 |
| 保留原始 Session | 支持 | 支持 | 支持 |
| 中文和英文界面 | 支持 | 支持 | 支持 |

手动排除、文字编辑和选中上下文 AI 精简目前支持 Pi TUI 与 DeepSeek Harness。可编辑内容仅限纯文本 User 消息和完整、无签名的 Answer。

独立的 Pi Context Desktop 社区构建为 Windows x64 提供视觉对话管理功能。

安装

Pi 扩展

从 Release assets 下载 pi-context-editor-0.6.1.tgz。Pi 0.84.2 安装本地包目录,不直接安装 .tgz 文件。请先解压,使 package.json 位于目录根部,然后运行:

pi install ./pi-context-editor-0.6.1

直接使用本仓库时,可以安装适配器目录:

pi install ./adapters/pi-extension

注册 Pi Desktop 时,请使用 PowerShell 运行 adapters/pi-extension/scripts/install-desktop.ps1。Pi 安装在非标准位置时,可以传入 -PiPath 和 -DesktopExePath。安装完成后需要完全退出并重新启动 Pi Desktop。

DeepSeek Harness

从 Release assets 下载 context-editor-deepseek-harness-0.4.10.tgz,然后使用 Harness 官方 CLI 安装:

dsh plugin --profile <profile> add ./context-editor-deepseek-harness-0.4.10.tgz

当前适配器已在 DeepSeek Harness 0.1.5-rc.1 和隔离的 0.1.6-alpha.1 构建中完成测试。经过测试的宿主边界见兼容性文档。

使用方法

Pi TUI

输入 /ctx 打开全屏 Context Editor。主要操作包括使用 x 排除或恢复上下文、e 编辑文字、E 恢复原文、h 和 r 进行视觉隐藏与恢复,以及使用 s 切换搜索范围。使用 c 生成并预览选中上下文的摘要,C 排除或恢复已应用的摘要,D 恢复精简前的原文。按 ? 可以查看完整快捷键说明。

Pi Desktop/RPC

输入 /ctx 打开原生 Context Editor 对话框。该路径支持搜索、筛选、选择和视觉隐藏与恢复,暂不支持模型上下文排除和 User/Answer 编辑。

DeepSeek Harness

打开普通 Chat 视图旁边的 Context Editor 标签页。该标签页管理同一个 Session,支持上下文排除、User/Answer 编辑、搜索、筛选、选择、视觉隐藏、恢复和撤销。选中的上下文可以生成可编辑摘要,经预览确认后替换,并可恢复原文。

近期适配器更新进一步改善了新版 DeepSeek Harness 的兼容性,并修复了长回合中夹有其他消息和 Tool 步骤时的精简范围处理问题。

工作方式

Agent Context Editor 读取现有 Session,并在独立管理视图中显示 User、AI、Reasoning、Answer 和 Tool 内容。同一轮 AI 的 Reasoning 与最终 Answer 可以分别管理,相关的 Tool Call 与 Tool Result 会保持配对。

视觉修改和模型上下文修改分别保存。视觉隐藏只改变 Context Editor。经过确认的上下文排除、受支持的文字编辑和已应用的精简摘要只改变后续发送给模型的派生输入,不覆盖原始 Session,也不修改宿主的主聊天时间线。

当前限制

- 不能直接编辑或隐藏宿主主聊天时间线中的内容。
- Pi Desktop/RPC 不支持模型上下文排除和文字编辑。
- Reasoning、Tool、System、附件、结构化 User 和带签名的 Answer 不能编辑。
- 不支持批量替换文字。
- 视觉隐藏不会改变模型输入或减少 Token 使用。
- 暂无单独的“隐藏全部”操作,但支持恢复全部。
- AI 精简支持 Pi TUI 与 DeepSeek Harness,暂不支持 Pi Desktop/RPC,也不包含整篇会话的自动清理。
- DeepSeek Harness 兼容范围限于兼容性文档中记录的已测试宿主边界。

当前版本

当前稳定版为 v0.4.3:

- Pi 扩展:pi-context-editor@0.6.1
- DeepSeek Harness 适配器:context-editor-deepseek-harness@0.4.10
- Pi Context Desktop 社区构建:context-editor-v0.1.4

当前安装包、兼容性更新和验证结果见 v0.4.3 发布说明。

路线图

- 支持更多 Agent 宿主和主聊天界面
- 增加 AI 辅助 Session 精简和上下文整理建议

后续探索方向

- 探索面向单次请求的 Conversation Context Router:在每次发送 Prompt 前,判断当前任务与历史对话的关联,组合尽可能精简且依赖完整的临时上下文。路由结果只影响本次派生模型输入,不改写原始 Session,并支持预览、解释、人工覆盖和完整上下文回退。

开发

需要 Node.js 22.19 或更高版本。本地验收记录使用 Node 24。

npm ci
npm run verify

npm run verify 会构建两个适配器,执行 TypeScript 检查和自动化测试,扫描发布内容并校验发布包。

欢迎提交贡献和宿主兼容性报告,具体请参阅 CONTRIBUTING.md。安全问题请按照 SECURITY.md 中的说明报告。

目录结构

agent-context-editor/
|-- adapters/
| |-- pi-extension/ Pi /ctx 适配器
| -- deepseek-harness/ DeepSeek Harness 适配器
|-- packages/context-editor-core/
|-- docs/
|-- assets/
|-- scripts/
-- test/

pi-app/ 保持为独立 Git 仓库,不包含在本仓库中。

项目声明

Agent Context Editor 是独立的社区项目,与 Pi、DeepSeek 及其维护团队不存在隶属、认可或赞助关系。

English documentation: README.md

许可证

MIT,见 LICENSE。
预览分享卡片长什么样 ↓jermaine123123/agent-context-editor
分享 · DeepSeek Harness Hub
jermaine123123/agent-context-editor

跨智能体插件,手动排除和编辑 AI 对话上下文,支持搜索、筛选、隐藏/恢复、撤销,并保留原始会话。

回到顶部