deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:WLV-ZEDD/dsh-chatgpt-web
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
Zero-cost conversational AI model provider for DeepSeek Harness powered by free ChatGPT Web (GPT 5.6 Luna).
dsh-chatgpt-web turns your local browser session of ChatGPT into a seamless, $0.00 API-free conversational model provider directly inside DeepSeek Harness (DSH).
It connects via headless or visible Chrome/Chromium browser automation to chatgpt.com, streaming real-time Markdown responses, code solutions, explanations, and reasoning back to your DSH chats without consuming API credits.
Small conversational web models (like GPT 5.6 Luna) excel at explanations, dialogue, Q&A, brainstorming, code snippet generation, and side-assistant tasks. By running in Pure Chat Mode, the bridge eliminates prompt overhead, tool hallucinations, and syntax errors of autonomous multi-tool execution loops, providing a fast, rock-solid, zero-cost LLM provider.
ctx.effect. DeepSeek Harness starts the background sidecar automatically on launch and shuts it down on exit.chatgpt-web/luna (gpt-5-6-luna).gpt-4o, o1).>=22.19.0 or Bun >=1.3.0 (both are supported; the CLI runs on either).>=0.2.0-rc.2.Install the plugin directly from this GitHub repository:
dsh plugin --profile <profile> add github:lordraiden/dsh-chatgpt-web
This registers the plugin in the profile's package.json bundles, so its Cordis entries are composed automatically — no manual insert is needed.
Authenticate your ChatGPT account once. The plugin binary lives in the profile's node_modules/.bin:
~/.dsh/profiles/<profile>/node_modules/.bin/dsh-chatgpt-web setup
A dedicated Chrome/Chromium window will open. Log into your OpenAI / ChatGPT account. Once the ChatGPT composer is visible, the setup captures the session and writes the config and browser state to the plugin's storage directory (default ~/.dsh/storages/chatgpt-web/).
If your browser is not at the default path, pass it explicitly:
~/.dsh/profiles/<profile>/node_modules/.bin/dsh-chatgpt-web setup --chrome /path/to/chrome
Snap-confined browsers can only write to non-hidden paths in $HOME. The plugin's default storage directory (~/.dsh/storages/chatgpt-web/) is hidden, so a snap browser cannot create its profile lock there and setup fails with:
Failed to create .../login-profile-XXXX/SingletonLock: Permission denied (13)
The fix is to point the plugin's storage home at a non-hidden directory using the DSH_CHATGPT_WEB_HOME environment variable.
How the variable works: VAR=value command is standard shell syntax — it sets the environment variable only for that one command and does not persist it. The plugin reads DSH_CHATGPT_WEB_HOME on startup; when set, every file it owns (config, browser profile, storage state) lives under that directory instead of ~/.dsh/storages/chatgpt-web/.
Step by step:
Run the one-time setup with the variable applied to the command:
DSH_CHATGPT_WEB_HOME="$HOME/dsh-chatgpt-web" \
~/.dsh/profiles/<profile>/node_modules/.bin/dsh-chatgpt-web setup --chrome /snap/bin/chromium
The browser window opens; log in to ChatGPT. The session is saved under ~/dsh-chatgpt-web/.
Persist the variable for the shell that starts DSH. The background sidecar is started by DeepSeek Harness and inherits DSH's environment — it does not inherit a one-off VAR=value prefix from your terminal. So export the variable in your shell (e.g. ~/.bashrc), then start DSH from that shell:
# add to ~/.bashrc (or ~/.zshrc):
export DSH_CHATGPT_WEB_HOME="$HOME/dsh-chatgpt-web"
# reload, then start DSH in that shell:
source ~/.bashrc
dsh --profile <profile> web
The sidecar now finds the same config.json and browser state that setup created.
Verify with the doctor (run it in the same environment):
~/.dsh/profiles/<profile>/node_modules/.bin/dsh-chatgpt-web doctor
Important: every command that touches the plugin state —
setup,login,doctor, and the DSH process that runs the sidecar — must see the sameDSH_CHATGPT_WEB_HOME. If some of them use the hidden default path and others use the non-hidden one, the sidecar will reportConfiguration is missing.
Provider configuration lives in the profile's Cordis patch layer (~/.dsh/profiles/<profile>/cordis.patch.yml), not in a global settings file. Add the chatgpt-web provider under the existing providers map of the llm-pi-ai entry:
- id: llm-pi-ai
name: "@deepseek-ai/dsh-llm-pi-ai"
config:
providers:
# ...your existing providers...
chatgpt-web:
displayName: "ChatGPT Web (Free)"
api: openai-responses
baseURL: http://127.0.0.1:17841/v1
headers:
Authorization: "Bearer chatgpt-web-free"
streamIdleTimeoutMs: 300000
models:
- id: chatgpt-web/luna
name: "ChatGPT Web — Luna (Free)"
contextWindow: 1050000
maxTokens: 32768
input:
- text
- image
Optionally, make it the agent's default model in the agent-default-model entry:
- id: agent-default-model
name: "@deepseek-ai/dsh-agent-default-model"
config:
provider: chatgpt-web
model: chatgpt-web/luna
Now start DeepSeek Harness with the profile:
dsh --profile <profile> web
DSH will automatically start the background sidecar process, connect to your authenticated ChatGPT session, and accept prompts!
Verify your setup at any time with the built-in diagnostic doctor:
~/.dsh/profiles/<profile>/node_modules/.bin/dsh-chatgpt-web doctor
Example healthy output:
✓ Configuration is valid (~/.dsh/storages/chatgpt-web/config.json)
✓ Chrome executable found
✓ ChatGPT login state has authenticated browser evidence
✓ Responses proxy is healthy on 127.0.0.1:17841
Doctor result: ready
See TROUBLESHOOTING.md for common issues: browser executable paths, snap confinement, missing configuration, and runtime (Node/Bun) notes.
chatgpt.com. Not affiliated with or endorsed by OpenAI.CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。