Introduction¶
DeepSeek Harness (DSH) uses a plugin-based architecture, aiming to decouple decision logic from execution capabilities. When developing agents, a common problem is that prompts make it difficult to strictly constrain “when to search the web,” which can lead models to answer from memory or generate hallucinations.
dsh-see-world is a DSH decision-layer plugin. The core problem it solves is: enforcing “search before answering”. It does not perform searches; it only determines whether a message requires web access and injects the decision result into the conversation flow.
Plugin Positioning¶
This plugin is maintained by windygo123 and is released under the MIT open-source license. It sits at the decision layer, responsible for deciding “whether this message needs fresh information” rather than “how to search.” It converts a self-directed search strategy into mechanism-enforced execution, while ensuring local tasks (code, files, computations) are not disturbed.
Core Features¶
Based on the verified feature list, the plugin provides the following capabilities:
- Search before answering: Determines messages that require web access, enforces a search before answering, and cites sources. If no result is found, it explicitly marks the response as “uncertain.”
- Zero interruption: Pure local tasks (code, chitchat, etc.) are allowed to pass by default in milliseconds, without network access, UI flicker, or decision-resource consumption.
- Current information priority: For time-sensitive queries (such as market data, versions, and policies), it verifies on the web by default first.
- Failure resilience: If the search plugin is not installed, the decision engine errors, or a timeout (8 seconds) occurs, the plugin silently degrades without interrupting the conversation flow.
- Observable decisions: Provides local JSONL logs recording decision rationale, duration, cost, and whether a search was performed.
- Privacy-friendly: Decision-making reuses the session model by default; supports local Ollama models for decisions, and data does not leave the local machine.
Installation and Activation¶
Installing this plugin requires administrator privileges. After installation, it is recommended to restart the DSH GUI to ensure the settings card and status bar are loaded and take effect.
dsh plugin --profile web add dsh-see-world
Typical Usage¶
The plugin works out of the box. The default trigger threshold is “prefer more triggers than misses” (trigger when uncertain). Users can precisely control behavior with message prefixes or natural-language instructions:
- Force no search: If a message starts with
不搜, that message skips the search decision. - Force search: If a message starts with
先搜, that message must be searched before answering. - Natural language: Using
这个不用搜or先查一下also works.
In a turn where a search is triggered, the end of the reply automatically includes the marker 🔍 已搜索 N 个来源.
Configuration and Ecosystem¶
Visual Configuration¶
The plugin supports visual configuration on the DSH GUI settings page (namespace open-eyes), including decision model selection, search budget, whitelist/blacklist, and more. Configuration changes take effect immediately on the next turn.
Dependency Notes¶
This plugin does not bundle a search engine. It relies on DSH’s search-capability layer plugins (such as Tavily, a SearXNG provider, or built-in web_search) to perform the actual search actions. If no search-capability plugin is installed, this plugin silently degrades and only records logs without performing a search.
Privacy and Logs¶
Decision logs are stored by default in the local ~/.dsh/dsh-open-eyes/decisions/ directory in JSON Lines format. By default, only summaries are saved; after enabling log_input_verbatim, the raw decision input is saved. These logs are not uploaded to servers.
Use Cases¶
Suitable for DSH workflow development scenarios that require strict control over information freshness. With this plugin, developers can force the model to verify on the web before handling tasks involving news, technical documentation updates, real-time data, and similar content, avoiding the use of outdated information.