高级搜索
搜索结果
共找到了457个结果
DeepSeek Harness 架构
English | 中文 改动 packages/ 下的任何内容之前,请先阅读本文。本文假定你已了解 Cordis;如果尚未了解,请先阅读入门或教程。 建议使用 agent(智能体)探索代码库并理解其架构。 Cordis Cordis 是 dsh 底层的框架:插件向共享上下文贡献服务、类型化事件和可逆的副作用。产品的每一部分都是插件,包括模型适配器、工具注册表、会话日志,以及 agent loop(智能体循环)本身,因此每个都可以从配置替换。 不存在需要打补丁的特权内核:扩展 dsh 的方式是把插件挂载到其他插件旁...
1. 编写第一个插件
English | 中文 在本教程使用的 loader 配置中,Cordis 插件模块通过命名导出提供 apply 函数。Cordis 加载模块时,会用一个 上下文 调用 apply;该上下文就是 ctx 对象,插件通过它注册自己贡献的所有内容。 编写插件 在 tmp/cordis-tutorial 目录中(参见环境设置)创建 hello.ts: import type { Context } from '@deepseek-ai/cordis' export const name = 'hello' expo...
2. 生命周期与 effect
English | 中文 Cordis 插件可能因修改配置、热重载、显式资源释放或所需服务消失而卸载。通过 Cordis API 建立的注册属于 effect,会在所属插件卸载时撤销;在这些 API 之外管理的资源必须包装在 ctx.effect() 中。 Effect 对于 Cordis 尚未管理的资源,例如定时器、连接或 watcher,应将其包装在 ctx.effect() 中并返回 disposer(资源释放函数): 创建 lifecycle.ts,将它放在 tmp/cordis-tutorial 中: i...
3. 服务
English | 中文 服务是一个插件提供、其他插件通过 ctx 消费的具名能力。在 harness 中,ctx.tools、ctx.llm 和 ctx.agents 都是服务。消费方只指定 'tools' 之类的能力,而不导入其提供方,因此配置可以选择提供方,无需修改消费方。 提供服务 创建 greeter.ts,将它放在 tmp/cordis-tutorial 中: import { Service, type Context } from '@deepseek-ai/cordis' declare mod...
4. 事件
English | 中文 服务支持直接调用;事件让插件无需知道有哪些插件正在监听,就能发出通知。harness 使用事件处理工具结果、模型请求和审批决定等交互。 声明、发出与监听 创建 stats.ts,将它放在 tmp/cordis-tutorial 中。它是一项负责计数并在每次变化时发出通知的服务: import { Service, type Context } from '@deepseek-ai/cordis' declare module '@deepseek-ai/cordis' { inter...
5. 配置
English | 中文 cordis.yml 中的每个 Cordis 配置项都可以携带 config 块,插件则声明一个 schema,在运行 apply 前验证该块。错误配置会导致加载失败,并给出准确的错误:插件绝不会在配置不完整时启动。 可配置插件 创建 config-demo.ts,并将其放在 tmp/cordis-tutorial 中: import type { Context } from '@deepseek-ai/cordis' import Schema from '@deepseek-ai/s...
6. 组合与 HMR(热模块替换)
English | 中文 到目前为止构建的每项能力都是插件,cordis.yml 则选择应用的插件树。本章会改变这种组合、热重载一个插件,并诊断始终无法加载的插件。 Cordis 配置项不只有名称 Cordis 配置项除了 name 和 config,还接受其他元数据: - id: greeter # stable identity for this entry name: './greeter.ts' - id: consumer name: './consumer.ts' disa...
7. 进入 harness
English | 中文 本章会向 harness 的 tools 服务注册一个可由模型调用的工具,通过 harness 工具流水线执行它,并观察结果事件。整个示例无需密钥,也不会调用模型。 工具插件 创建 greet-tool.ts,将它放在 tmp/cordis-tutorial 中: import type { Context } from '@deepseek-ai/cordis' import { brandString } from '@deepseek-ai/dsh-brand' import { d...
Cordis 教程
English | 中文 Cordis 是 DeepSeek Harness 底层的插件框架:它是一个小型运行时,其中的每项能力,包括工具、LLM(大语言模型)适配器、文件访问乃至 agent loop(智能体循环)本身,都是挂载到共享上下文中的插件。本教程通过动手实践讲解 Cordis:每一章都是一个可以运行的示例,你将在本仓库内的临时目录中逐步构建它,最后把一个插件接入真实的 harness 服务。 本教程面向 agent 开发者。你不需要深入掌握 TypeScript;下文的 TypeScript 说明会解释...
Cordis 入门
English | 中文 Cordis 是 DeepSeek Harness 底层以 vendor 方式引入的插件框架。本文介绍 harness 插件作者在阅读子系统页面上生成的服务/事件参考之前需要了解的 Cordis 核心概念;Cordis 教程则通过实践逐一讲解这些概念。vendor 源码与同步流程见 vendor/README.md。 五个核心概念 插件是实现 Service 的对象。 它可以是一个带有可选 inject 和 apply(ctx) 字段的函数,也可以是一个 Service 子类,其生命周...
Agent 轮次与步骤生命周期
English | 中文 此时序图是 architecture.md 的配套图示。持久的回放事实保存在 session/event 中,实时控制与状态则保存在 agent/* 中。 sequenceDiagram participant User participant Agent participant Driver participant Hooks as hook listeners participant Prompt as ctx.systemPrompt participant...
API Gateway
English | 中文 本文是 Typert API Gateway 的当前状态参考。它描述业务服务如何声明一元 Remote 方法、构建如何生成 Host 与 Client 约定,以及调用如何复用 Connection 的 RPC 与 /api 路由。会话事件、增量数据和其他流协议不属于本文范围;它们可以使用同一个 Connection,但不使用 Remote 方法描述符。 编程模型 业务服务通过 @Remote 或 @RemoteScope 选择对 Client 开放的方法。未标记的方法不会进入生成的 Cli...
能力 Seams 与核心服务
English | 中文 服务可以是核心主干服务、可替换的能力 seam,也可以是组合包/组合点。下图展示了拥有服务声明的包、已知实现包,以及直接消费该服务的包。 flowchart LR pkg_attachment["attachment"] svc_attachments["ctx.attachments<br/>Durable binary attachment storage"] pkg_attachment_local["attachment-local"] pkg_api_sessi...
插件配置目录
English | 中文 每个 config: 块均可由 cordis.yml 条目设置:针对每个可加载的 harness 包,原样列出其 apply 函数或服务构造函数接收的配置声明(包括 JSDoc),并附上所有引用类型——包内类型直接粘贴,其他类型则提供链接。粘贴的内容是插件声明的完整配置类型——运行时 schema 有意排除的字段是仅供运行时使用的 seam(其自身的 JSDoc 会如此说明),不能通过 cordis.yml 设置。这是以部署为轴的参考文档——插件作者所依据的连接方式请参阅各子系统页面中的...
DeepSeek 官方 LLM API 协议扩展
English | 中文 本参考文档定义 @deepseek-ai/dsh-llm-deepseek 在 deepseek-official 聊天补全请求中发送的全部 DeepSeek Harness 特有 HTTP 标头和附加 JSON 字段。本文不重复定义 DeepSeek 上游 API 持有的字段。提供方无关的 LLM(大语言模型)接口与 llm-pi-ai 均不实现这些扩展。 适配器将这些扩展发送至已解析的 baseURL,包括已配置的网关。扩展位于 messages、系统提示词和工具 schema 之外,...
防御性模式
English | 中文 来之不易的缺陷类别规则:下面每条模式都是本项目实际发布或差点发布的一类缺陷,以防止其复发的规则形式陈述。在编写生命周期、并发、子进程或清理代码之前请先阅读本文。测试层面的对应规则(真实入口路径、验证实际结果、资源归属)见 testing.md。 正交结果独立上报 一个结果可以同时具有多种性质:进程可能已经超时,却仍以退出码 0 结束,因为它捕获了终止信号。每个独立事实(timedOut、signal、exitCode)都应单独上报;切勿把一个标志的上报嵌套在另一个标志的分支中,否则调用方可...
开发指南
English | 中文 搭建教程引导新贡献者从准备前置条件开始,直到检出目录通过检查。后面的贡献者参考介绍仓库布局、日常工作流和 CI 组织方式。设计依据与实现细节属于链接的 Agent Note 和脚本。 搭建教程 前置条件 Node.js 支持 22.19+ 与 24+。CI 覆盖 22.19、24 和 26;见 Node 引擎下限 Agent Note。 启用了 Corepack 的 pnpm。仓库在 package.json 中固定使用 pnpm@11.7.0;如果 pnpm --version 无法...
事件生产方与消费方矩阵
English | 中文 本矩阵展示哪些包会派发各个 harness 自有事件,以及哪些包会监听这些事件。事件之间存在多对多关系,因此密集的关系数据以表格而非一张大型关系图呈现。接收方和事件名称类型还涵盖有意绕过 ctx.emit 的内含派发位置,例如 subagent 生命周期封装。 事件 模式 声明位置 派发方 监听方 agent-loop/config-start-failed emit packages/core/agent-loop/src/index.ts:239 agent-loop ...
术语表
English | 中文 DeepSeek Harness 的领域词汇为每个概念规定一个规范术语。各术语通过标准 Markdown 锚点链接到相应条目;实现细节留在各包的 README 与 Agent Note 中。 capability-seam seam:一种包含三种角色的可替换能力:Service Definition(拥有自身 ctx.<key> 和词汇类型的 Cordis Service——可以是 ShellExecutor 这样的抽象类,也可以是 WebRuntime 这样的具体注册表,绝不是 Ty...
文档图索引
English | 中文 这些图展示生成目录未包含的关系。可以用它们查找包之间的关系、能力 seam、事件流、面向模型的工具、应用组合和运行时生命周期路径。精确签名和类型定义仍以子系统页面(类型和生成的 cordis-surface 区域)及工具目录为准。 本索引背后的流程决策记录在文档图 Agent Note中。 图 模式 模块依赖图 generated 工具 schema 目录与包映射 generated 能力 seam 与核心服务 hybrid generated dsh 共享基础...