DeepSeek Harness 集成

August 16, 2026 · View on GitHub

一、定位

DeepSeek Harness 负责模型调用、Agent Loop、工具调度、会话日志和运行时;AgentNavi 负责项目的物理图、语义图、历史任务和上下文路由。

DeepSeek Harness
  模型、工具、会话、权限、运行循环


AgentNavi 插件组合
  Local Provider、四个工具、pre-step 路由、L3 事件桥


AgentNavi Python 内核
  L1 / L2 / L3、SQLite、events.jsonl、semantic-overlays.jsonl

两边的数据职责不同:

  • Harness 会话日志是完整运行轨迹;
  • AgentNavi L3 是面向未来检索的项目任务索引;
  • 不复制模型思维流和完整对话正文。

二、目录

integrations/deepseek-harness/
├── package.json
├── cordis.patch.yml
├── README.md
├── src/
│   ├── service.js
│   ├── provider.js
│   ├── tools.js
│   ├── context.js
│   ├── events.js
│   ├── protocol.js
│   └── index.js
└── test/
    └── protocol.test.js

三、服务边界

LocalAgentNaviProvider 把能力发布为 ctx.agentNavi

context
impact
history
scan
ingestHook
startSession
startTurn
finishTurn
endSession

工具和事件插件不直接启动 Python,也不读取 AgentNavi 数据库。未来替换 Provider 时,消费层不需要重写。

四、自动路由

agent/pre-step 在模型请求生成前运行。插件只读取真实用户消息,忽略其他插件注入内容,避免把 AgentNavi 自己的上下文再次当作新任务。

同一 session + turn 的任务创建由 Local Provider 幂等缓存保护;即使 agent/pre-stepsession/event 都观察到用户输入,也只会创建一次 AgentNavi 任务。

五、事件顺序

Harness 的 session/event 是 fire-and-forget 观察流。AgentNavi 写入可能涉及磁盘、扫描和 SQLite,因此事件桥不会在监听器中无序启动多个子进程,而是按 session 建立 Promise 串行链:

任务建立
  → 工具结果 1
  → 工具结果 2
  → turn/end 关闭任务
  → session/disposed 结束会话

不同会话使用不同链,可以并行运行。

六、任务状态

Harness 的 turn 结束原因被收敛为 AgentNavi 终态:

Harness 原因AgentNavi 状态
completedcompleted
用户触发的 abortedcancelled
父任务、Hook 或运行时触发的 abortedinterrupted
interruptedinterrupted
blockederrormax-tokensfailed

Python Hook 适配层同时接受显式 task_status 和结构化 turn_end_reason。其他 Agent 不传这些字段时保持原来的 completed 默认行为。

七、兼容策略

当前适配基线:

DeepSeek Harness commit 47f943859bef60e4160492346772ded9b24f765a

依赖的正式扩展点包括:

  • Cordis Serviceinject
  • ctx.subprocess.spawn()
  • ctx.tools.register(defineTool())
  • agent/pre-step waterfall;
  • session/createdsession/eventsession/disposed
  • createUserMessage() 的 plugin snapshot source。

Harness 升级时,优先运行本目录测试,再核对 context.jsevents.js 的事件形状。插件尚未声称兼容所有未来预览版本。

八、当前边界

  • 仅实现本地 Provider,要求 Harness 与项目文件处于同一文件系统;
  • 暂无图形化语义审查面板;
  • 暂不自动读取 Harness 的供应商 Token 账单;
  • 没有把 Harness 完整会话日志导入 AgentNavi;
  • 远程沙箱和多机部署留给后续 HTTP/MCP Provider。