DeepSeek-native terminal AI agent for digital work — DeepSeek model harness analogous to Claude Code for Claude models.
dscode exposes 19 tools with significant definition gaps. Most tools have descriptions (good), but parameter schemas are incomplete or missing type information. spawn_agent has a well-structured schema using TypeBox, but most other tools (list_agents, terminate_agent, kill_agent, suspend_agent, continue_agent, background_agent, send_agent_message) show only minimal parameter definitions in the source excerpt. Task and plan tools have complex schemas with many required fields but lack clear descriptions of interdependencies. The edit tool has an exceptionally detailed description but its operations array schema is not fully visible. Error handling guidance is absent across all tools. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present.
Move an agent process to background execution.
Resume a suspended agent process.
【PREFERRED】Use this tool for ALL file editing — do NOT use bash/sed/awk for file modifications. Edit a file using content-based hash anchors. First read the file with read_file(hashes: true) to get line hashes (format: lineNum#hash|content), then use this tool to make precise changes. After reading a file with read_file(hashes: true), apply edits to that file in the same response turn or the immediate next turn. Do not read file A, then read file B, then later edit file A — the anchors from A will be stale and cause cross-version conflicts. Process one file completely (read → edit) before reading anchors for another file. Line numbers in anchors are advisory (snapshot position); hashes are content-based identity (the guard material). Operations: replace_line, replace_range, insert_after, insert_before, delete_line, delete_range. All operations in a single call are applied atomically against the same initial file snapshot — later operations within the batch do NOT see the results of earlier operations. If any hash is invalid, ambiguous, or out of order, the entire batch is rejected and no changes are made. For duplicate-content lines, use the `occurrence` field (1-indexed) to specify which matching line to target. For ambiguous hashes, use the `line` field (advisory line number from read_file) to select the candidate closest to that line.
Kill a running agent process forcefully.
Agent process tools (list_agents, terminate_agent, kill_agent, suspend_agent, continue_agent, background_agent, send_agent_message) have minimal parameter descriptions. agentId is described only as 'Agent process ID' with no guidance on format, how to obtain it, or error cases.
No error handling guidance across any tool. Tools do not document what errors are retryable, what user-fixable errors look like, or what recovery steps an LLM should take. E.g., spawn_agent does not explain what happens if the application name is invalid or if the process fails to start.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
List all visible agent processes in the current session.
Append one bounded decision node. Set resolvesRequirementIds to one pending alignment requirement for a user-value question, or [] for a technical decision.
Validate and internally authorize the current revision and digest.
Compile selected public decisions into ordered executable Plan items.
Set the public goal and explicit constraints for this Plan.
Persist a concise public fact and its evidence references.
Report a material conflict only when successful objective tool evidence from the current bound item invalidates an actual hard constraint or selected decision. Tool failures, permission denials, unknown outcomes, and agent summaries are not material-conflict evidence.
Persist a required human decision and wait for its durable resolution.
Select a technical candidate that does not require user-value input.
Bind Main execution to one approved Plan item.
Send a message to a running agent process.
Launch a configured Agent Application as a fresh child process. Select a matching specialized Application when available; otherwise use general. Honor the Application's scheduling default unless this delegation needs an explicit override. When choosing dynamically, use foreground if later work depends on the result and background only if the parent can continue independently. Background completion is delivered automatically; do not poll for output or completion.
Suspend a running agent process.
Maintain Main's outcome-oriented TODO state. Track user-visible results, not files, implementation phases, commands, tests, or manual checks. Block only on an external dependency that Main cannot resolve.
Terminate a running agent process gracefully.
No tool annotations present. Destructive tools (kill_agent, terminate_agent, delete operations in edit) lack destructiveHint. Read-only tools (list_agents) lack readOnlyHint. Idempotent tools lack idempotentHint. This prevents clients from applying appropriate safety guards.
Plan tools (task_update, plan_* family) use optimistic concurrency control (expectedVersion, digest fields) but do not document what happens on version mismatch, how to recover, or whether the LLM should retry with a fresh read. This creates silent failure risk.
spawn_agent description mentions 'Background completion is delivered automatically' but does not explain the mechanism (callback, polling, event stream) or how the LLM will receive the result. This creates ambiguity about tool semantics.