Skip to content

feat: Add DeepSeek Harness plugin - #2370

Merged
Luca Forstner (lforst) merged 7 commits into
mainfrom
lforst/dum-e/dublin-0d300bdaa9
Aug 19, 2026
Merged

Luca Forstner (lforst) merged 7 commits into
mainfrom
lforst/dum-e/dublin-0d300bdaa9

Conversation

@lforst

@lforst Luca Forstner (lforst) commented Aug 17, 2026 •

Copy link
Copy Markdown
Member

Adds a @braintrust/deepseek-harness package.

The package can be installe as a plugin via the deepseek harness cli (seems to be the canonical way for now) to trace everything that the deepseek harness does.

Reports each user turn as a separate trace with nested spans for model calls, tool executions, and delegated child sessions. It captures model inputs and outputs, token usage, reasoning, tool calls, errors, and relevant Harness metadata.

Installation

dsh plugin --profile web add @braintrust/deepseek-harness

Optional settings can be configured through the Harness plugin UI or cordis.patch.yml:

- id: braintrust
  config:
    apiKey: <your-api-key>
    projectName: DeepSeek Harness

The API key is declared as a secret setting. When omitted, the plugin uses BRAINTRUST_API_KEY.

@@ -0,0 +1,83 @@
{
"name": "@braintrust/deepseek-harness",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are we publishing a new package?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's deepseek harnesses recommended way of distributing things. You're supposed to run dsh plugin --profile web add @braintrust/deepseek-harness and it will install the package from npm.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah would be useful to have in PR description!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry very true!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

Comment thread integrations/deepseek-harness/src/index.ts
? {
tools: options.tools.map((tool) => ({
type: "function",
function: tool,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

doesn't this blindly forward the tool? Is that okay?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good catch actually, we should narrow down

...(block.isError ? { is_error: true } : {}),
};
case "image":
return { type: "image", attachment: block.attachment };

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we make into a braintrust attachment?

appUrl: z.string(),
});

interface BraintrustEvent {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can't we get these types from the braintrust package?

@lforst
Luca Forstner (lforst) merged commit 7023cc2 into main Aug 19, 2026
48 checks passed
@lforst
Luca Forstner (lforst) deleted the lforst/dum-e/dublin-0d300bdaa9 branch August 19, 2026 13:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants