dsh-doctor
asdf17128
Find what your DeepSeek Harness (dsh) patches silently broke — dead patches, config fields dropped by whole-config repla…
PROJECT TOPICS
PROJECT README
A multi-agent workbench for DeepSeek Harness.
Run Pi, OpenAI Codex, Claude Code, or the native DeepSeek Agent Loop in one local Web UI.
简体中文 · DeepSeek Harness · Quick start
LoopWithAI turns DeepSeek Harness into a local multi-agent coding workbench. It keeps Harness's native Cordis plugin architecture and makes its Agent Loop replaceable, so you can switch between Pi Coding Agent, OpenAI Codex, Claude Code, and the original DeepSeek Agent Loop without adding an ACP gateway or a separate driver layer.
Pi is the default Agent. Every runtime keeps its native model access, tools, approvals, MCP configuration, skills/extensions, and local authentication.
DeepSeek Harness is currently a developer preview. LoopWithAI follows its plugin APIs closely, so breaking upstream changes may require an update.
codex app-server, Claude Code uses the Agent SDK, and DeepSeek uses Harness's original Agent Loop.~/.lwa/workspace.| Agent | Integration | Authentication | Native capabilities retained |
|---|---|---|---|
| Pi (default) | @earendil-works/pi-coding-agent SDK |
Accounts panel, pi /login, or ~/.pi/agent |
models/providers, tools, skills, extensions, sessions, Thinking levels |
| DeepSeek | original @deepseek-ai/dsh-agent-loop |
DEEPSEEK_API_KEY and normal Harness settings |
original Harness Agent Loop and DeepSeek models |
| OpenAI Codex | codex app-server --stdio |
existing codex login session |
tools, MCP, sandbox, approvals, threads, models, reasoning effort |
| Claude Code | @anthropic-ai/claude-agent-sdk |
existing Claude Code login or Anthropic environment | Claude Code tool preset, settings, skills, plugins, MCP, permissions |
LoopWithAI replaces the single process-wide Agent Loop transactionally through Cordis Loader. A blank conversation switches immediately. If the current conversation already has history, the UI asks for confirmation and opens a new conversation in the same Workspace, preventing a silent mid-session runtime change.
Requirements:
Clone, install, and start:
git clone https://github.com/loopwithai/LoopWithAI.git
cd LoopWithAI
npm install
npm run dev
Or use one shell command:
git clone https://github.com/loopwithai/LoopWithAI.git && cd LoopWithAI && npm install && npm run dev
Open http://127.0.0.1:3210. npm run dev also starts the Vite HMR server on port 5174.
For a production-style local start without the Vite development server:
npm start
Select Pi, then open Accounts beside the composer. The Web flow supports the OAuth providers exposed by Pi, including ChatGPT/OpenAI Codex and Anthropic. You can also authenticate in the terminal:
pi
# then run /login
Pi continues to own its configuration and credentials under ~/.pi/agent. LoopWithAI never returns raw tokens to the browser.
Install and sign in with the official OpenAI Codex CLI, then select Codex in LoopWithAI:
npm install -g @openai/codex
codex login
LoopWithAI starts codex app-server --stdio when needed and reuses the CLI's existing local login. Set CODEX_BINARY only if your codex executable is not on PATH.
Authenticate with Claude Code normally, then select Claude Code:
npm install -g @anthropic-ai/claude-code
claude
The runtime uses the Claude Agent SDK and your normal Claude Code settings. Standard Anthropic environment credentials also continue to work.
Export your DeepSeek key before starting LoopWithAI:
export DEEPSEEK_API_KEY="your-api-key"
npm run dev
Harness also supports its normal credential/settings layers. DEEPSEEK_BASE_URL can override the public DeepSeek endpoint when required.
~/.lwa/workspace using the operating system's home directory.Runtime, provider, model, and reasoning provenance are kept separately in assistant records so the source remains clear when work is replayed.
Open Settings → Proxy:
LOOPWITHAI_PROXY, then HTTPS_PROXY, HTTP_PROXY, ALL_PROXY and their lowercase variants. On macOS, it also detects the current system HTTP/HTTPS proxy, including a Clash system proxy.http:// or https:// proxy URL entered in the UI and overrides automatic detection. Example: http://127.0.0.1:7897.Changes apply to subsequent requests without restarting Harness. NO_PROXY/no_proxy is preserved. Proxy passwords are treated as write-only secrets and are never returned to the browser. SOCKS and PAC URLs are not supported yet; use the HTTP or mixed port exposed by Clash.
npm run dev # DeepSeek Harness + Vite HMR; Pi is the default Agent
npm start # build plugins and run Harness without Vite
npm run build # build all Agent plugins and validate the Harness profile
npm test # run unit and integration tests with fake/local providers
npm run typecheck # strict TypeScript checks
npm run check # vendor checks + tests + typecheck + production build
The generated Harness patch uses checkout-relative file URLs, so the repository can be cloned into any directory, including paths containing spaces. Host-side TypeScript changes require restarting Harness; changes to packages/agent-loop-selector/src/client.ts are hot-replaced by Vite.
DeepSeek Harness Web + Cordis
└── agent-loop-runtime (transactional Loader entry)
├── Pi Agent Loop — direct Pi TypeScript SDK
├── DeepSeek Agent Loop — original Harness plugin
├── Codex Agent Loop — codex app-server protocol
└── Claude Code Agent Loop — Claude Agent SDK
apps/harness-web/ portable Harness profile and local launcher
packages/agent-loop-selector/ runtime/model/Thinking controls and Loader switch
packages/agent-loop-pi/ Pi SDK AgentFactory and Harness event bridge
packages/agent-loop-codex/ Codex app-server AgentFactory
packages/agent-loop-claude/ Claude Agent SDK AgentFactory
packages/network-proxy/ process-wide proxy service and Settings UI
The older event-sourced Loop prototype remains parked under apps/web and packages/core; it is not the default product surface and is not part of the current development focus.
Issues and pull requests are welcome. Please run npm run check before opening a pull request and keep new Agent integrations inside the native DeepSeek Harness/Cordis Agent Loop plugin boundary.
The project owner has not selected a license for LoopWithAI yet. Until a LICENSE file is added, do not assume reuse or redistribution rights beyond applicable copyright law. Third-party components retain their own licenses; see THIRD_PARTY_NOTICES.md.
LoopWithAI is an independent project and is not affiliated with DeepSeek, OpenAI, Anthropic, or the Pi maintainers.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。