Add experimental Parallel Responses subagent for DeepSeek Harness - #42
Draft
georgeatparallel wants to merge 1 commit into
Draft
Add experimental Parallel Responses subagent for DeepSeek Harness#42georgeatparallel wants to merge 1 commit into
georgeatparallel wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why we built this
We wanted to see if Parallel Responses could work as a research subagent inside DeepSeek Harness. The idea is simple: the parent hands off one complete research question, Responses works independently, and the parent gets back a cited answer.
If it worked well, the parent could delegate a substantial research job instead of managing many Search calls itself.
What this PR adds
This adds the opt-in
@parallel-web/dsh-responses-subagentpackage and aparallel_researchtool.The parent sends one self-contained text prompt. The plugin makes one medium-effort Responses call and returns the final answer with citations. It does not send parent history, files, workspace state, tools, or ambient environment.
We kept v1 deliberately small: one-shot foreground research, cancellation, a two-request concurrency limit, a fixed timeout, and no retries or extra configuration.
How we tested it
We verified the package with unit tests, type checking, linting, builds, manifest and packed-artifact checks, a secret scan, installation and removal in a fresh Harness profile, live Responses calls, and cancellation coverage.
We then ran a matched evaluation against the unchanged Search plugin. Both arms used the same six research-heavy prompts, parent model, permissions, and time limit. The prompts covered:
Search could make as many calls as it needed. Responses had to make exactly one complete research call. We scored correctness, coverage, citations, synthesis, and directness, then manually checked five important claims from every answer against primary sources.
What we saw
Three prompts had no winner: one was a tie, and two contained serious errors in both answers.
Responses clearly simplified orchestration, but it did not improve answer quality or speed. It often returned incomplete evidence from its single call, and it made serious mistakes around the Responses API timeline, Harness compatibility, and hosted-research pricing. Two of eight attempts failed and needed the only two allowed reruns.
Search was not perfect either. It made serious mistakes on Harness version history and Parallel pricing. The result is not that Search is always reliable. It is that parent-managed Search covered more of these research tasks and gave the parent more chances to repair missing evidence.
Known Responses spend for the six selected runs was $0.30 plus parent-model usage. Search provider cost was not exposed, so we do not have an honest total-cost comparison.
Recommendation
My recommendation is no-go for publishing this as a default tool or positioning it as a research-quality improvement over Search.
The implementation shape is still useful: it is small, private by default, and uses far fewer parent turns. I would keep it as an opt-in experiment only if that is cheap to maintain.
Before reconsidering, the Responses worker needs more reliable primary-source retrieval, especially for repositories and pricing pages, plus better provider reliability. Then we should rerun the same frozen prompts and require Responses to clearly beat Search without serious errors.