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

自适应可逆上下文 PlxloYzb/dsh-arc-context

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

接近容量上限时自动压缩上下文,信息可逐字还原

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add PlxloYzb/dsh-arc-context
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 104 处,展示前 96 条)
  • 发起网络请求
    research/bench/driver.mjs:13
    const response = await fetch(`${baseUrl}/api/${method}`, {
  • 写入本地文件
    research/bench/gate-completion-messy.mjs:112
    mkdirSync(OUT, { recursive: true }); const file = resolve(OUT, `gate-messy-${ARM}.json`)
  • 写入本地文件
    research/bench/gate-completion-messy.mjs:113
    writeFileSync(file, `${JSON.stringify(report, null, 2)}\n`)
  • 写入本地文件
    research/bench/gate-completion-pressure.mjs:293
    mkdirSync(resolve(OUT, '..'), { recursive: true })
  • 写入本地文件
    research/bench/gate-completion-pressure.mjs:294
    writeFileSync(OUT, JSON.stringify(result, null, 2) + '\n')
  • 写入本地文件
    research/bench/gate-completion-pressure.mjs:295
    writeFileSync(MUX_CAPTURE, muxFrames.join('\n') + '\n')
  • 读取本地文件
    research/bench/gate-messy-recover.mjs:22
    if (!SESSION_LOG || !existsSync(SESSION_LOG)) throw new Error(`session log not found: ${SESSION_LOG}`)
  • 读取本地文件
    research/bench/gate-messy-recover.mjs:30
    const facts = JSON.parse(readFileSync(factsFile, 'utf8')).facts
  • 读取本地文件
    research/bench/gate-messy-recover.mjs:35
    const raw = readFileSync(SESSION_LOG, 'utf8')
  • 写入本地文件
    research/bench/gate-messy-recover.mjs:135
    mkdirSync(OUT, { recursive: true })
  • 读取本地文件
    research/bench/gate-messy-recover.mjs:137
    if (existsSync(file) && process.env.FORCE_RECOVER !== '1') {
  • 写入本地文件
    research/bench/gate-messy-recover.mjs:140
    writeFileSync(file, `${JSON.stringify(report, null, 2)}\n`)
  • 写入本地文件
    research/bench/nudge-overpressure-fix-verification.mjs:293
    mkdirSync(resolve(OUT, '..'), { recursive: true })
  • 写入本地文件
    research/bench/nudge-overpressure-fix-verification.mjs:294
    writeFileSync(OUT, JSON.stringify(result, null, 2) + '\n')
  • 写入本地文件
    research/bench/nudge-overpressure-fix-verification.mjs:295
    writeFileSync(MUX_CAPTURE, muxFrames.join('\n') + '\n')
  • 发起网络请求
    research/bench/rq1-historical.mjs:42
    fetch(`${baseUrl}/api/respond`, {
  • 执行外部命令固定命令
    research/bench/rq1-historical.mjs:170
    const out = execFileSync('npm', ['test'], { cwd: workspace, encoding: 'utf8', timeout: 120000 })
  • 读取本地文件
    research/bench/rq1-historical.mjs:239
    const stagesDoc = JSON.parse(readFileSync(join(suite.fixtureDir, 'stages.json'), 'utf8'))
  • 读取本地文件
    research/bench/rq1-historical.mjs:240
    const key = JSON.parse(readFileSync(join(suite.fixtureDir, 'answer-key.json'), 'utf8'))
  • 删除本地文件递归
    research/bench/rq1-historical.mjs:242
    rmSync(workspace, { recursive: true, force: true })
  • 写入本地文件
    research/bench/rq1-historical.mjs:243
    mkdirSync(workspace, { recursive: true })
  • 读取本地文件
    research/bench/rq1-historical.mjs:244
    if (existsSync(join(suite.fixtureDir, 'fixture'))) cpSync(join(suite.fixtureDir, 'fixture'), workspace, { recursive: true })
  • 写入本地文件
    research/bench/rq1-historical.mjs:245
    else writeFileSync(join(workspace, 'README.md'), `# ${suiteName} ${arm} arm workspace (bench)\n`)
  • 写入本地文件
    research/bench/rq1-historical.mjs:314
    mkdirSync(OUT_DIR, { recursive: true })
  • 写入本地文件
    research/bench/rq1-historical.mjs:317
    writeFileSync(file, JSON.stringify(report, null, 2) + '\n')
  • 读取本地文件
    research/bench/rq1-historical.mjs:338
    const candidates = readdirSync(OUT_DIR).filter((f) => new RegExp(`^rq1-hist-${suite}-${arm}-.*\\.json$`).test(f)).sort()
  • 读取本地文件
    research/bench/rq1-historical.mjs:340
    return { file: candidates[candidates.length - 1], report: JSON.parse(readFileSync(join(OUT_DIR, candidates[candidates.length - 1]), 'utf8')) }
  • 写入本地文件
    research/bench/rq1-historical.mjs:435
    writeFileSync(file, JSON.stringify(out, null, 2) + '\n')
  • 读取本地文件
    research/bench/rq1-historical.mjs:444
    const key = JSON.parse(readFileSync(join(suite.fixtureDir, 'answer-key.json'), 'utf8'))
  • 写入本地文件
    research/bench/rq1c-projection.mjs:266
    mkdirSync(resolve(OUT, '..'), { recursive: true })
  • 写入本地文件
    research/bench/rq1c-projection.mjs:267
    writeFileSync(OUT, JSON.stringify(result, null, 2) + '\n')
  • 写入本地文件
    research/bench/rq1c-projection.mjs:268
    writeFileSync(MUX_CAPTURE, muxFrames.join('\n') + '\n')
  • 写入本地文件
    research/bench/rq2-cache.mjs:239
    mkdirSync(OUT, { recursive: true })
  • 写入本地文件
    research/bench/rq2-cache.mjs:241
    writeFileSync(file, JSON.stringify(report, null, 2) + '\n')
  • 写入本地文件
    research/bench/rq3-recall.mjs:308
    mkdirSync(OUT_DIR, { recursive: true })
  • 写入本地文件
    research/bench/rq3-recall.mjs:309
    writeFileSync(f, JSON.stringify(report, null, 2) + '\n')
  • 写入本地文件
    research/bench/rq3-recall.mjs:324
    mkdirSync(OUT_DIR, { recursive: true })
  • 写入本地文件
    research/bench/rq3-recall.mjs:326
    writeFileSync(f, JSON.stringify(summary, null, 2) + '\n')
  • 写入本地文件
    research/bench/rq4-distillation.mjs:298
    mkdirSync(OUT, { recursive: true })
  • 写入本地文件
    research/bench/rq4-distillation.mjs:300
    const result = aggregate(reports, BUDGET, stopped); writeFileSync(matrix, JSON.stringify(result, null, 2) + '\n'); writeFileSync(FINAL, JSON.stringify
  • 写入本地文件
    research/bench/rq4-distillation.mjs:336
    mkdirSync(OUT, { recursive: true }); writeFileSync(FINAL, JSON.stringify(result, null, 2) + '\n')
  • 写入本地文件
    research/bench/rq4-distillation.mjs:336
    mkdirSync(OUT, { recursive: true }); writeFileSync(FINAL, JSON.stringify(result, null, 2) + '\n')
  • 写入本地文件
    research/bench/rq4-distillation.mjs:386
    mkdirSync(OUT, { recursive: true })
  • 写入本地文件
    research/bench/rq4-distillation.mjs:388
    writeFileSync(file, JSON.stringify(report, null, 2) + '\n')
  • 读取本地文件
    research/bench/rq4-distillation.mjs:393
    else if (process.argv[2] === 'consolidate') { const value = JSON.parse(readFileSync(process.argv[3], 'utf8')); writeFileSync(FINAL, JSON.stringify(val
  • 读取本地文件
    research/bench/rq4-impl-consolidate.mjs:18
    ...JSON.parse(readFileSync(bench('rq4-impl-baseline-recovered-en12.json'), 'utf8')).chains,
  • 读取本地文件
    research/bench/rq4-impl-consolidate.mjs:19
    ...JSON.parse(readFileSync(bench('rq4-impl-baseline-tail.json'), 'utf8')).chains,
  • 读取本地文件
    research/bench/rq4-impl-consolidate.mjs:23
    JSON.parse(readFileSync(bench('rq4-impl-treatment-en-1.json'), 'utf8')),
  • 读取本地文件
    research/bench/rq4-impl-consolidate.mjs:24
    JSON.parse(readFileSync(bench('rq4-impl-treatment-en-2.json'), 'utf8')),
  • 读取本地文件
    research/bench/rq4-impl-consolidate.mjs:25
    ...JSON.parse(readFileSync(treatmentMatrix, 'utf8')).chains.filter((chain) => !chain.error),
  • 读取本地文件
    research/bench/rq4-impl-consolidate.mjs:26
    ...JSON.parse(readFileSync(resolve(process.env.RQ4_ZH1_RERUN ?? '/tmp/rq4-impl-treatment-zh1-rerun.json'), 'utf8')).chains.filter((chain) => !chain.er
  • 写入本地文件
    research/bench/rq4-impl-consolidate.mjs:146
    writeFileSync(file, `${JSON.stringify(report, null, 2)}\n`)
  • 写入本地文件
    research/bench/rq5-compliance.mjs:266
    mkdirSync(CWD, { recursive: true })
  • 读取本地文件
    research/bench/rq5-compliance.mjs:267
    const priorState = existsSync(STATE_FILE) ? JSON.parse(readFileSync(STATE_FILE, 'utf8')) : null
  • 读取本地文件
    research/bench/rq5-compliance.mjs:267
    const priorState = existsSync(STATE_FILE) ? JSON.parse(readFileSync(STATE_FILE, 'utf8')) : null
  • 写入本地文件
    research/bench/rq5-compliance.mjs:329
    writeFileSync(STATE_FILE, JSON.stringify(statePayload, null, 2) + '\n')
  • 写入本地文件
    research/bench/rq5-compliance.mjs:408
    mkdirSync(BENCH_RESULTS, { recursive: true })
  • 写入本地文件
    research/bench/rq5-compliance.mjs:410
    writeFileSync(out, JSON.stringify(result, null, 2) + '\n')
  • 读取本地文件
    research/bench/rq5-compliance.mjs:441
    if (!existsSync(file)) throw new Error(`missing live arm report: ${file}`)
  • 读取本地文件
    research/bench/rq5-compliance.mjs:442
    reports[arm] = JSON.parse(readFileSync(file, 'utf8'))
  • 写入本地文件
    research/bench/rq5-compliance.mjs:561
    mkdirSync(RESULTS, { recursive: true })
  • 写入本地文件
    research/bench/rq5-compliance.mjs:562
    writeFileSync(FINAL, JSON.stringify(final, null, 2) + '\n')
  • 执行外部命令固定命令
    research/bench/rq5b-completion.mjs:294
    const found = spawnSync('find', [resolve(dshHome, 'sessions'), '-path', `*/${sessionId}/session.jsonl.zstd`], { encoding: 'utf8' })
  • 执行外部命令固定命令
    research/bench/rq5b-completion.mjs:296
    const decoded = spawnSync('zstd', ['-q', '-d', '-c', found.stdout.trim()], { encoding: 'utf8' })
  • 读取本地文件
    research/bench/rq5b-completion.mjs:306
    if (existsSync(path) && process.env.RQ5B_REPLACE !== '1') throw new Error(`${path} exists; refuse to overwrite without RQ5B_REPLACE=1`)
  • 写入本地文件
    research/bench/rq5b-completion.mjs:359
    mkdirSync(BENCH_RESULTS, { recursive: true })
  • 写入本地文件
    research/bench/rq5b-completion.mjs:360
    writeFileSync(path, JSON.stringify(report, null, 2) + '\n')
  • 读取本地文件
    research/bench/rq5b-completion.mjs:366
    const report = JSON.parse(readFileSync(path, 'utf8'))
  • 写入本地文件
    research/bench/rq5b-completion.mjs:385
    writeFileSync(path, JSON.stringify(report, null, 2) + '\n')
  • 读取本地文件
    research/bench/rq5b-completion.mjs:391
    if (existsSync(path) && process.env.RQ5B_REPLACE !== '1') throw new Error(`${path} exists; refuse to overwrite without RQ5B_REPLACE=1`)
  • 写入本地文件
    research/bench/rq5b-completion.mjs:404
    mkdirSync(cwd, { recursive: true })
  • 写入本地文件
    research/bench/rq5b-completion.mjs:555
    mkdirSync(BENCH_RESULTS, { recursive: true })
  • 写入本地文件
    research/bench/rq5b-completion.mjs:556
    writeFileSync(path, JSON.stringify(report, null, 2) + '\n')
  • 读取本地文件
    research/bench/rq5b-completion.mjs:631
    const baseline = JSON.parse(readFileSync(FINAL, 'utf8'))
  • 读取本地文件
    research/bench/rq5b-completion.mjs:635
    const p = JSON.parse(readFileSync(resolve(BENCH_RESULTS, 'rq5b-p.json'), 'utf8'))
  • 读取本地文件
    research/bench/rq5b-completion.mjs:636
    const nReports = [1, 2, 3].map((run) => JSON.parse(readFileSync(resolve(BENCH_RESULTS, `rq5b-n-${run}.json`), 'utf8')))
  • 写入本地文件
    research/bench/rq6-guidance.mjs:100
    mkdirSync(OUT, { recursive: true }); const file = resolve(OUT, `rq6-${ARM}.json`)
  • 写入本地文件
    research/bench/rq6-guidance.mjs:101
    writeFileSync(file, `${JSON.stringify(report, null, 2)}\n`)
  • 读取本地文件
    research/bench/rq7-adversarial.mjs:17
    const bank = JSON.parse(readFileSync(new URL('../fixtures/adversarial/bank.json', import.meta.url), 'utf8'))
  • 写入本地文件
    research/bench/rq7-adversarial.mjs:156
    mkdirSync(resolve(OUT, '..'), { recursive: true })
  • 写入本地文件
    research/bench/rq7-adversarial.mjs:157
    writeFileSync(OUT, JSON.stringify(result, null, 2) + '\n')
  • 读取本地文件
    research/bench/rq9-consolidate.mjs:26
    const load = (variant, arm) => JSON.parse(readFileSync(bench(`rq9-live-${variant}-${arm}.json`), 'utf8'))
  • 读取本地文件
    research/bench/rq9-consolidate.mjs:59
    for (const file of readdirSync(bench(dir))) callLedger[dir === 'rq9-pilot' ? 'v1Pilot' : dir === 'rq9-pilot2' ? 'v2Pilot' : 'v3PilotOnBeta11'] += JSON
  • 读取本地文件
    research/bench/rq9-consolidate.mjs:59
    for (const file of readdirSync(bench(dir))) callLedger[dir === 'rq9-pilot' ? 'v1Pilot' : dir === 'rq9-pilot2' ? 'v2Pilot' : 'v3PilotOnBeta11'] += JSON
  • 读取本地文件
    research/bench/rq9-consolidate.mjs:60
    callLedger[dir === 'rq9-pilot' ? 'v1Pilot' : dir === 'rq9-pilot2' ? 'v2Pilot' : 'v3PilotOnBeta11'] += JSON.parse(readFileSync(bench(`${dir}/${file}`),
  • 读取本地文件
    research/bench/rq9-consolidate.mjs:82
    const record = JSON.parse(readFileSync(resultPath, 'utf8'))
  • 写入本地文件
    research/bench/rq9-consolidate.mjs:85
    writeFileSync(resultPath, `${JSON.stringify(record, null, 2)}\n`)
  • 写入本地文件
    research/bench/rq9-live.mjs:109
    mkdirSync(OUT, { recursive: true })
  • 写入本地文件
    research/bench/rq9-live.mjs:111
    writeFileSync(file, `${JSON.stringify(report, null, 2)}\n`)
  • 写入本地文件
    research/bench/rq9-type-weighting.mjs:141
    mkdirSync(resolve(OUT, '..'), { recursive: true })
  • 写入本地文件
    research/bench/rq9-type-weighting.mjs:142
    writeFileSync(OUT, `${JSON.stringify(report, null, 2)}\n`)
  • 写入本地文件
    research/bench/run.mjs:145
    mkdirSync(outDir, { recursive: true })
  • 写入本地文件
    research/bench/run.mjs:147
    writeFileSync(file, JSON.stringify(report, null, 2) + '\n')
  • 读取本地文件
    src/preset-cli.ts:18
    const candidates = await readdir(root, { withFileTypes: true }).catch(() => [])
  • 读取本地文件
    src/preset-cli.ts:23
    if (await stat(path).then((value) => value.isFile()).catch(() => false)) {
  • 读取本地文件
    src/preset-cli.ts:48
    const source = await readFile(preset.path, 'utf8')
扫描于 2026/11/3(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-group@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-presets@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-commands@deepseek-ai/dsh-compaction@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 接近上限自动压缩
  • 信息逐字还原

README

由 DeepSeek 最新模型翻译生成
dsh-arc-context | English | Русский | Deutsch | 한국어 | 日本語 | Français | Italiano | Español | العربية | ไทย | Tiếng Việt | Português (BR) | हिन्दी | Bahasa Indonesia ARC = Adaptive Reversible Context。 面向 DeepSeek Harness 的上下文治理插件:在安全区保持静默,在接近真实输入容量时执行模型驱动、本地可逆的压缩,信息永不丢失,卸载零残留。 发布状态:公开 Beta,跟随 dsh 官方 0.1.0-rc.8。 本项目与 dsh 均处公开 beta,暂不建议用于生产。完整发布门实机验证矩阵(十项)见 research/results/release-verification-0.2.0-beta.12.json。 实测优势 以下数字全部来自真实模型实机实验(原始 usage 口径,不换算价格),证据与实验协议随包发布,由 npm run research:verify 逐项复核。
展开完整文档(README 剩余 1 节)
dsh-arc-context

| English | Русский | Deutsch | 한국어 | 日本語 | Français | Italiano | Español | العربية | ไทย | Tiếng Việt | Português (BR) | हिन्दी | Bahasa Indonesia

ARC = Adaptive Reversible Context。 面向 DeepSeek Harness 的上下文治理插件:在安全区保持静默,在接近真实输入容量时执行模型驱动、本地可逆的压缩,信息永不丢失,卸载零残留。

发布状态:公开 Beta,跟随 dsh 官方 0.1.0-rc.8。 本项目与 dsh 均处公开 beta,暂不建议用于生产。完整发布门实机验证矩阵(十项)见 research/results/release-verification-0.2.0-beta.12.json。

实测优势

以下数字全部来自真实模型实机实验(原始 usage 口径,不换算价格),证据与实验协议随包发布,由 npm run research:verify 逐项复核。

对比内置 Basic 压缩(同场景同 seed)

代码工程长会话 — 逐字历史约束保真:

| 方案 | 精确事实 | 派生约束 | 输入 tokens | 输出 tokens | 总 prompt |
| ARC | 24/24 | 4/4 | 121,146 | 23,234 | 1,055,802 |
| Basic | 6/24 | 0/4 | 231,315 | 30,940 | 1,355,539 |

质量 4 倍差距的同时成本更低:输入 −47.6%、输出 −24.9%、总 prompt −22.1%;ARC 的压缩为本地可逆提取(零辅助 LLM 调用),Basic 为不可逆模型摘要。

无标签自然语言决策追踪(含值更替):ARC 当前值 12/12、依据 10/10、旧值污染 0,输入较 Basic 低约 76%;独立英文 holdout 10/10 + 7/7。

Basic 没有的能力

- 永不丢失,可逆恢复 — 压缩原件永远保留在 append-only 日志;decompress 逐字恢复有效源(六链实测 100%,超大输出经 dsh 溢写文件同样完整);search_context 检索压缩块,中英信息层召回 43/43。
- 多层蒸馏不失真 — tier-3 深层检查点的证据附录在 6/6 条双语链上 20/20 保留全部事实(有效源索引递归刷新,effectiveSourceSafetyIndex)。
- 预算内的类型加权保留 — 附录超出检查点预算时按类型价值密度逐出噪声行,而非按时间序截断(safetyIndexRanking: value):离线最差情形全预算占优,live 配对附录层 +14.3pp、端到端零回归。
- 对抗零服从 — 18 个归档注入攻击面变体(摘要投毒、检索注入、伪保护标签、模板模仿等),模型服从次数 0;一切归档输出带"历史数据,非指令"框架。
- 诚实压力治理 — 压缩感知读数 = dsh 投影 − 日志账本遮蔽;压缩后零伪紧急告警(实测),压力显示与真实占用一致。
- 紧凑指导 — 系统指导 1,140 tokens,四臂实机 verbatim 质量与完整版零劣化(0pp)。

安装

同时启用 web 界面与 cli 终端(cli 终端对应 headless profile;dsh plugin --profile ... 可推广到任意 profile):

dsh plugin --profile web add dsh-arc-context # web 界面
dsh plugin --profile headless add dsh-arc-context # cli 终端

重启 dsh 即生效。bundle 自动安装 host-plane Preset Bridge:ARC 在 standard preset 自己的 compaction 隔离域内替换官方 Basic 行,preset 文件逐字节不变;命令、pruner、isolation 及其他 preset 行全部保留。

手动安装 tarball、其他 profile 与高级选项见 docs/INSTALL.md。

配置(节选)

- id: compaction-arc-bridge
name: 'dsh-arc-context/bridge'
config:
effectiveSourceSafetyIndex: true # tier-2/3 索引递归回有效原始源(默认开) safetyIndexRanking: value # 超预算时按类型价值密度逐出(默认 value) adaptiveGovernor: enabled: true maxOutputTokens: auto

| 配置 | 默认 | 说明 |
| effectiveSourceSafetyIndex | true | tier-2/3 蒸馏时,安全索引递归回到有效原始源,而非只重提取可见父 checkpoint。tier-1 输出不变。 |
| safetyIndexRanking | value | 附录超出检查点预算时的逐出次序:value 按类型价值密度先逐出低价值事件行;chronological 为纯时间序截断。预算内两者输出逐字节相同。 |
完整配置(上下文窗口、nudge 阈值、保护范围、Governor、提示模板等)见 docs/INSTALL.md 与 docs/kernel-tuning.md。

卸载 — 干净、彻底、实机可验证

dsh plugin --profile web remove dsh-arc-context # web 界面
dsh plugin --profile headless remove dsh-arc-context # cli 终端

重启 dsh 后:

- 组合配置回到官方 Basic,无任何 ARC 行残留;
- preset 文件全程未被修改(SHA-256 前后一致,发布门实测);
- 已有会话继续可读:Basic 直接读 ARC 的持久日志,压缩后的表面形态保持,不会把原始内容洪泛回上下文(实测 2,331 事件的会话完整可读、投影正常);
- 新会话不再注册任何 ARC 工具或命令。

重装随时可行,行为与首次安装一致(安装 → 卸载 → 重装循环在发布门矩阵中逐项验证)。

升级

发布新版本后,在每个已安装的 profile 里更新即可:

dsh plugin --profile web up dsh-arc-context
dsh plugin --profile headless up dsh-arc-context

up(pnpm update)把 profile package.json 里已声明的依赖范围更新到允许的最新版(例如 0.2.0-beta.14 → 0.2.0-beta.15);dsh plugin 的 reconcile 会保持 dsh.profile.bundles 同步,重启后新版本生效。

add 与 up 的区别:add 按包名重新解析并写入依赖,首次安装、或把本地 tarball/file: 依赖切回 npm 注册表版本时用它;它同样自动 reconcile bundle 层。日常在已有范围内小步升级用 up 即可。

证据与文档

- 研究议程与全部结论:docs/research-agenda.md
- 结果数据:research/results/(含发布门十项矩阵、对照实验、对抗套件)
- 设计文档:docs/(安装、preset 集成、Governor 设计、可逆安装设计)
- 公开证据校验:npm run research:verify

致谢与许可

ARC 的压缩内核源自 acp-kernel(及 billion-context-pi、opencode-acp,ranxianglei,MIT)的移植与独立演进;dsh 宿主为 DeepSeek Harness(DeepSeek AI)。本项目 MIT 许可,见 LICENSE。
预览分享卡片长什么样 ↓PlxloYzb/dsh-arc-context
分享 · DeepSeek Harness Hub
PlxloYzb/dsh-arc-context

接近容量上限时自动压缩上下文,信息可逐字还原

这是你的仓库?认领条目

回到顶部