dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
一个「退出 Bash」按钮 + /exit-bash 命令,用来解决:会话里已经跑过持久 bash 后无法切换沙箱模式(cannot change sandbox mode ... while persistent terminal sessions are open or being created)。
bash 工具(dsh-tool-bash-persistent)的 PTY shell 在任务结束后仍存活;dsh-terminal-bash 在每次 sandbox/mode 事件提交前检查该 agent 是否还有活的 PTY(hasOwnerActivity),有就拒绝切换;/exit-bash 命令:先给 shell 发 exit(宽限 graceMs 毫秒),再 terminals.kill 移除 PTY 记录,并中止仍在创建中的 spawn;remote.commands.execute 执行 /exit-bash(不经过 commandUi,避免 commandUi 内部拿不到 remote.commands 导致按钮无效)。命令结果以流程节点显示在对话里。dsh plugin --profile web add /path/to/dsh-exit-bash
# 重启 profile 使新的 bundle 层与客户端插件清单生效:
dsh web # 重新启动你的 web profile
客户端插件清单(
dsh.client扫描)在启动时缓存,必须重启进程;宿主命令本身在 cordis 层支持热重载,但一次重启即可两者兼得。
/exit-bash);dsh-tool-bash-persistent 会缓存每个 agent 的 PTY id;外部用 /exit-bash 直接 terminals.kill 后,工具缓存仍指向旧 id,下一次 bash 调用会先报一次 unknown PTY session ... 再自愈。为了让「退出 Bash」后下一次调用直接成功,需要给 @deepseek-ai/dsh-tool-bash-persistent 打上本包附带的补丁:
# 在 web profile 目录执行(请先确保该目录可写)
cd ~/.dsh/profiles/web
cp /path/to/dsh-exit-bash/patches/@deepseek-ai__dsh-tool-bash-persistent.patch patches/
然后在 pnpm-workspace.yaml 的 patchedDependencies 中加入:
patchedDependencies:
'@deepseek-ai/dsh-tool-bash-persistent': patches/@deepseek-ai__dsh-tool-bash-persistent.patch
再执行:
pnpm install
dsh web
补丁会让 persistentShells.get() 在复用缓存的 PTY id 前先确认该 id 仍存在于 terminals 注册表;已被 /exit-bash 关闭时自动丢弃旧缓存并创建新终端,不再把 unknown PTY session 暴露给模型。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。