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

网页聊天模式 TJ1024yjy/dsh-webchat-mode

DeepSeek Harness
TJ1024yjy25 天前有提交已提供中文文档扫描:未发现敏感能力

切换只读聊天模式,可搜索读文件但不改项目

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/11/03·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 25 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 只读聊天模式
  • 联网搜索
  • 读取工作区文件

DeepSeek Harness 插件:网页版式聊天模式 —— 能联网搜索、能读工作区文件、能记笔记,但改不了任何东西;输入框内置 Chat / Web / Agent 三段切换控件。

README

由 DeepSeek 最新模型翻译生成
dsh-webchat-mode 给 DeepSeek Harness(DSH) 桌面版加一个「网页版式聊天模式」:能联网搜索、能读工作区文件、能记笔记,但改不了任何东西。 对照的标尺是 DeepSeek 网页版免费聊天 —— 打开就能问,能查网上的资料,但不会动你的项目。 这是一个 DSH 插件(Cordis bundle),同时包含 host 与 client 两半: host 负责按会话施加能力边界,client 负责在输入框那一行画出切换控件。 三个模式 | 模式 | 联网搜索 | 读工作区文件 | 记忆/日历 | 改文件 · 跑命令 · 委派 | | agent(默认) | ✅ | ✅ | ✅ | ✅ 完整能力 | | webchat | ✅ | ✅ | ✅ | ❌ 一律拒绝 | | chat | ❌ | ❌ | ❌ | ❌ 纯文本对话 | webchat 模式放行的工具(共 34 个): - 联网检索与抓取 10 个(web_search、web_fetch、research、advanced_search、multi_search、platform_search、video_search、domain_search、cache_search …
展开完整文档(README 剩余 1 节)
dsh-webchat-mode

给 DeepSeek Harness(DSH) 桌面版加一个「网页版式聊天模式」:能联网搜索、能读工作区文件、能记笔记,但改不了任何东西。

对照的标尺是 DeepSeek 网页版免费聊天 —— 打开就能问,能查网上的资料,但不会动你的项目。

这是一个 DSH 插件(Cordis bundle),同时包含 host 与 client 两半: host 负责按会话施加能力边界,client 负责在输入框那一行画出切换控件。

三个模式

| 模式 | 联网搜索 | 读工作区文件 | 记忆/日历 | 改文件 · 跑命令 · 委派 |
| agent(默认) | ✅ | ✅ | ✅ | ✅ 完整能力 |
| webchat | ✅ | ✅ | ✅ | ❌ 一律拒绝 |
| chat | ❌ | ❌ | ❌ | ❌ 纯文本对话 |

webchat 模式放行的工具(共 34 个):

- 联网检索与抓取 10 个(web_search、web_fetch、research、advanced_search、multi_search、platform_search、video_search、domain_search、cache_search …)
- 工作区读取 4 个(read、glob、grep、read_image)
- 交互 2 个(ask_user_question、present)
- 记忆 15 个 + 日历 4 个(memory_、calendar_)

为什么记忆工具在"只读模式"里也放行? 因为记忆/日历写的是 DSH 自己的记忆目录(~/.dsh/memory/),性质是记笔记,不是改用户的项目。而 plugin_manager、ssh_、mcp__github__ 这类会动外部世界的工具仍然禁用。

安装

本插件是一个 DSH bundle,装进某个 profile 即可(以 desktop profile 为例):

1) 把本仓库放到任意目录,例如 ~/.dsh/plugins/dsh-webchat-mode
2) 在 profile 的 package.json 里加依赖 + bundle

profile 的 package.json 需要两处:

{
"dependencies": {
"dsh-webchat-mode": "link:/absolute/path/to/dsh-webchat-mode"
},
"dsh": {
"profile": {
"bundles": [
// …其他 bundle "dsh-webchat-mode" ] } } }

然后在 DSH 桌面版 → 设置 → 插件 里确认该行已启用,重启桌面版生效。

⚠️ 改完插件代码必须重启宿主。DSH 按 URL 缓存 ESM 模块,连 package.json 的 main 解析结果都会被缓存 —— 用界面上的禁用/启用开关不会加载新代码。

使用

方式一:界面控件。 输入框那一行(「工作区内修改」右侧、模型选择器左侧)会出现分段控件:

Chat | Web | Agent

当前模式高亮,点一下即切换。

方式二:斜杠命令。

/mode agent # 完整能力 /mode webchat # 能搜能读能记,不能改 /mode chat # 纯文本

两种方式等价,都作用于当前会话。

实现要点

如果你也想写一个「给 DSH 加能力边界」的插件,这几点是我们踩出来的,可能替你省几个小时。

1. 三层防线,缺一不可

| 层 | API | 作用 |
| 工具过滤 | agent.ctx.tools.restrict(filter) | 从模型看到的工具表里裁掉 |
| 执行守卫 | agent.ctx.tools.guard(fn) | 执行前拦截,返回字符串即拒绝 |
| 提示词 | system-prompt/assemble 钩子 + 自定义 section | 裁剪工具 schema、注入行为约束 |

guard 是最后一道保险:即使 restrict 没生效(比如某类工具它管不到),调用仍会被拒。

2. ⭐ restrict 的 allow 与 deny 方向不同,会决定成败

契约原文:

restrict(filter) — "Restrict global tools for the calling agent scope. Empty filters, unknown names, scope-local names, and reserved transport names fail. Restrictions intersect; scoped registrations remain visible."

关键在于:

- { allow: [...] } 隐含"裁掉一切未列出的"。而 ctx.tools.schemas()(不带参数)只返回全局视图,由 agent preset 行注册的工具不在其中 —— 于是你没法把它们列进 allow,它们就被隐式裁掉了。名字写进 allow 也没用:不在可见集里就传不进去,调用时直接报 unknown tool。
- { deny: [...] } 只禁"明确列出的"。把 deny 名单算成「可见集里不在白名单中的那些」,白名单工具就自动获得放行 —— 包括 schemas() 里看不见的那些。

一句话:要"只允许白名单",用 deny 反着写,比用 allow 正着写更可靠。

3. 提示词必须播报"真实可用集"

模型是照着提示词规划下一步的。如果提示词里写着某工具可用、实际却被裁掉了,模型就会反复尝试调用、反复被拒,白白烧 token。
所以本插件在 system prompt 里动态列出当前会话真正的工具清单(从 host 侧记录的实际放行集生成),并明确告诉模型:

你的工具只有这些,其他工具在本模式下并不存在 —— 不要尝试调用,也不要围绕它们做计划。

4. 客户端控件怎么挂

ctx.slots.inject('conversation.input.left', () => ctx.slots.register({
name: 'conversation.input.left',
id: 'webchat-mode',
order: 50,
inject: (sessionId) => ({ /* 自定义 props */ }),
}, YourComponent));

- 只用官方声明的槽位,别去读别的插件的 DOM 来"估算位置"
- 组件会额外收到 useProjection
- 当前模式通过会话投影(ctx.sessionProjections.register({...}))暴露给界面,折叠规则与 host 内部判定同源,保证"显示的"和"生效的"永远一致
- 切换动作走 sessions.binding(sessionId).session.command('/mode xxx'),与手敲命令是同一条路径

5. link: 安装的本地包,依赖要从源目录解析

如果你用 link: 装本地插件,包内 import 'zod' 会报 Cannot find package 'zod' —— 即使 profile 的 node_modules 里已经有它(那是别的包自带的隔离依赖树)。

解法:在插件目录里自备依赖:

cd your-plugin
npm install zod --cache ./.npm-cache

(--cache 指向可写目录,避免被系统权限拦住。)

已知限制

- 仅针对 DSH 桌面版 0.2.0-rc.2 实测通过;其他版本 API 可能有变动。
- chat 模式用 { allow: [] } 实现全禁(deny 需要穷举全集才等价,不划算)。
- 本插件不改动 DSH 自身的任何文件,只通过公开 API 施加限制。

License

MIT
预览分享卡片长什么样 ↓TJ1024yjy/dsh-webchat-mode
分享 · DeepSeek Harness Hub
TJ1024yjy/dsh-webchat-mode

切换只读聊天模式,可搜索读文件但不改项目

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