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

消息锻造台 anweat/dsh-assistant-message-forge

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

解析会话上下文为卡片,动态编辑并应用到会话

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 74 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件
查看扫描证据(共 10 处,展示前 10 条)
  • 写入本地文件
    src/context.ts:455
    mkdirSync(this.dir, { recursive: true })
  • 读取本地文件
    src/context.ts:465
    raw = readFileSync(this.file(sessionId), 'utf8')
  • 写入本地文件
    src/context.ts:481
    writeFileSync(tmp, `${JSON.stringify(record, null, 2)}\n`, 'utf8')
  • 写入本地文件
    src/context.ts:483
    renameSync(tmp, file)
  • 写入本地文件
    src/context.ts:485
    writeFileSync(file, `${JSON.stringify(record, null, 2)}\n`, 'utf8')
  • 写入本地文件
    src/store.ts:44
    mkdirSync(dirname(this.file), { recursive: true })
  • 读取本地文件
    src/store.ts:87
    raw = readFileSync(this.file, 'utf8')
  • 写入本地文件
    src/store.ts:108
    writeFileSync(tmp, body, 'utf8')
  • 写入本地文件
    src/store.ts:110
    renameSync(tmp, this.file)
  • 写入本地文件
    src/store.ts:114
    writeFileSync(this.file, body, 'utf8')
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope@deepseek-ai/dsh-session
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 解析会话上下文为卡片
  • 动态编辑卡片
  • 应用到会话

已弃用:由 dsh-context-console 取代;0.1.1 仍可安装用于回滚

README

由 DeepSeek 最新模型翻译生成
dsh-assistant-message-forge(消息锻造台) [!IMPORTANT] 维护状态:已停止功能更新。 本插件由 dsh-context-console 完整继承;新插件保留消息锻造、上下文卡片、sessionlog 导入与保守修复能力,并新增轨迹墙、Prompt / Skill / MCP / Tools 管理和缓存观察。现有 0.1.1 版本继续保留供回滚使用,新部署请迁移到 dsh-context-console。 双面(Host + Client)DSH 插件:在会话区新增一个 消息锻造台 页签,核心是详细上下文解析 → 记录 → 卡片化 → 动态编辑 → 开放修改: DSH 消息锻造台 1. context/refresh 把当前会话完整解析成一张张 ContextCard (turn/step 边界、user/assistant 消息、tool call/result、request header、其他 log-only 事件;assistant/chunk 按轮折叠计数); 2. 解析结果连同卡片 overrides 一起 记录 到 $DSH_HOME/assistant-message-forge/context-.json; 3. 页签内按轮分组 卡片化 展示,含 surface 折叠状态(原始被替换 / 替换生效中);
展开完整文档(README 剩余 1 节)
dsh-assistant-message-forge(消息锻造台)

[!IMPORTANT]
维护状态:已停止功能更新。 本插件由 dsh-context-console 完整继承;新插件保留消息锻造、上下文卡片、sessionlog 导入与保守修复能力,并新增轨迹墙、Prompt / Skill / MCP / Tools 管理和缓存观察。现有 0.1.1 版本继续保留供回滚使用,新部署请迁移到 dsh-context-console。

双面(Host + Client)DSH 插件:在会话区新增一个 消息锻造台 页签,核心是详细上下文解析 → 记录 → 卡片化 → 动态编辑 → 开放修改:

DSH 消息锻造台

1. context/refresh 把当前会话完整解析成一张张 ContextCard (turn/step 边界、user/assistant 消息、tool call/result、request header、其他 log-only 事件;assistant/chunk 按轮折叠计数);
2. 解析结果连同卡片 overrides 一起 记录 到 $DSH_HOME/assistant-message-forge/context-.json;
3. 页签内按轮分组 卡片化 展示,含 surface 折叠状态(原始被替换 / 替换生效中);
4. 卡片可 动态编辑:文本/reasoning/provider/model/usage、工具名与 arguments、工具结果文本;编辑先保存为记录,也可 保存并应用到会话(surface replace 直接改写当前会话中的原消息)。

此外保留 v1 能力:创建/修改/删除/注入 assistant 草稿、上传识别
session.jsonl(.zstd);导入区还会做完整性预览,并可把安全可解释的损坏
恢复为新的 session-repaired- 会话。

能力

| 能力 | 入口 | 说明 |
| 上下文解析+记录 | 会话上下文 → 刷新解析 | 全事件分类解析并落盘为 context 记录 |
| 上下文卡片化 | 会话上下文卡片流 | 按轮分组,边界/消息/工具/请求/其他卡片 + surface 状态 |
| 卡片动态编辑 | 卡片 → 编辑 → 保存记录 | 修改只写入记录 override,刷新解析不丢 |
| 应用到会话 | 卡片 → 保存并应用到会话 / 应用到会话 | user/assistant/tool-result 用 surface replace 替换原消息,模型上下文即时生效 |
| 添加/修改/删除草稿 | 草稿区按钮 | 草稿持久化在 drafts.json |
| 注入到会话 | 草稿行 → 注入到当前会话 | 完整合成轮 + flush |
| 导入识别 sessionlog | 底部文件选择 → 导入并识别 | zstd/JSONL 解码 + packed chunk 展开 + 事件识别 |
| 修复损坏 sessionlog | 完整性预览 → 创建修复会话 | 后写分支覆盖 + 官方 crash closer + 官方 seed 校验;原日志只读 |
| 复用识别结果 | 识别行 → 存为草稿 / 注入 | 保留 reasoning+text/provider/model/usage |

架构

浏览器客户端 DSH host (Node) ForgeView(conversation.view 页签) ├─ ContextPanel:解析记录卡片流 + 动态编辑 ├─ 草稿区:添加/修改/删除/注入按钮 ├─ sessionlog 文件选择 + 识别/修复预览 └── connection.rpc.call(AMF_RPC_CHANNEL) ──▶ /dsh-assistant-message-forge ├─ DraftStore(drafts.json) ├─ ContextRecordStore(context-.json + overrides) ├─ parseContext / surface replace apply ├─ parse/repairSessionLogBytes(node:zlib zstd) └─ injectMessage(session.append + flush)

- Host 半通过 ctx.connection.rpc.handle() 注册通用 Connection RPC 通道(loopback 信任边界),不修改 apiproxy 允许列表。
- Client 半注册 conversation.view 页签(scope: session),组件经 sessionId 标准 prop 拿到当前会话。

RPC 端点

通道:/dsh-assistant-message-forge

| endpoint | payload | 返回 |
| drafts/list | {} | AssistantDraft[] |
| drafts/save | { draft: { id?, title?, content, reasoning?, provider?, model? } } | 保存后的 AssistantDraft |
| drafts/delete | { id } | boolean |
| session/inject | { sessionId, message: { content, reasoning?, provider?, model?, usage? } } | { sessionId, turn, step, seq, messageId, flushed } |
| context/load | { sessionId } | 已记录的 ContextSnapshot 或 null |
| context/refresh | { sessionId } | 重新解析并记录后的 ContextSnapshot |
| records/update | { sessionId, key, patch } | 合并卡片 override 后的 ContextSnapshot |
| records/reset | { sessionId } | 丢弃全部 override 后的 ContextSnapshot 或 null |
| context/apply | { sessionId, key } | { sessionId, replacedSeq, newSeq, type, turn?, step?, flushed } |
| sessionlog/parse | { name, dataBase64 } | SessionLogParseResponse |
| sessionlog/repair-preview | { name, dataBase64 } | SessionLogRepairReport |
| sessionlog/repair-create | { name, dataBase64 } | { sessionId, flushed, report } |

错误统一走 RpcResult 的 { ok:false, error:{ code:'internal', ... } } 分支;参数校验失败、会话不存在、当前会话存在未闭合 turn 时都会返回可读 message。

卡片与修改语义

- 卡片解析覆盖:turn/start|end、step/start|end、user/message、 assistant/message(reasoning/text/provider/model/usage)、tool/call、 tool/result、request/header、request/context、其余 log-only 事件。
assistant/chunk 不逐条成卡,按轮统计 chunkCount。
- 记录优先:records/update 只改 override;之后 context/refresh 重新解析时会合并 override,不会丢。records/reset 丢弃全部记录修改。
- 应用到会话 = surface replace:对 user/message、assistant/message、 tool/result 追加一个 surfaceOp: {op:'replace', start:seq, end:seq} 事件,原节点被 shadow(模型 deriveMessages 用新内容),原始 append 事件仍保留在日志与官方对话流中;卡片流会同时显示「原始已被替换」和「替换生效」两张卡。
- tool/result 特殊限制:DSH surface 校验只允许改写 tool-result 的 content;message id/source/isError/error wrapper 必须保持原值,因此 isError 在记录里可改,但应用时按原值写回。
- 会话正在运行(存在未闭合 turn)时注入和应用都会拒绝,避免破坏执行边界。
- 导入识别的投影:识别结果把 content 块投影为 text + reasoning 两条; tool-call、image 等非文本块计数为 unsupportedBlocks,注入时不会携带。
- 传输上限:上传 base64 ≤ 128 MiB;解压后 ≤ 128 MiB;识别列表每批最多 200 条(truncated 标记)。

会话修复语义与边界

- 后写分支覆盖:物理日志出现 seq dsh web 是 --profile web 的硬别名;给自定义 profile 启动 Web 应用要用
pnpm dsh --profile --port ,并保证该 profile 的 dsh.profile.bundles
依次包含 @deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app、dsh-assistant-message-forge。

开发期热更

- Client 半:client-hmr 会 watch 所有已挂载 bundle 的 lib/client.js。改完 src/client/** 后
pnpm run build,浏览器自动拉取新 rev(本插件构建约 1 秒)。
- Host 半:web profile 的 loader HMR 关闭;改 src/index.ts / src/store.ts / src/sessionlog.ts 后需重启 dsh web。

E2E 冒烟

对运行中的实例执行按钮级验证(创建一次性会话 → 上下文刷新解析 → 助手卡片记录编辑/应用 → 丢弃记录修改 → 草稿添加/修改/注入 → 导入识别 → 损坏日志预览/创建修复会话 → 删除草稿):

$env:AMF_URL='http://127.0.0.1:3090'
$env:SESSION_LOG=$env:DSH_SESSION_JSONL
node scripts/e2e-smoke.mjs

脚本用 D:/codeproject/dsh-browser/node_modules/playwright(可用 PLAYWRIGHT_ROOT 覆盖),先经 RPC 创建一个 workspace-attached 的一次性会话再逐项点击中文 UI,避免污染真实会话;
PLAYWRIGHT_CHANNEL=chrome 可显式使用本机 Chrome,AMF_HEADED=1 可打开可见浏览器窗口。
预览分享卡片长什么样 ↓anweat/dsh-assistant-message-forge
分享 · DeepSeek Harness Hub
anweat/dsh-assistant-message-forge

解析会话上下文为卡片,动态编辑并应用到会话

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部