• LLM 适配器

    English | 中文 本文介绍如何为 Harness 接入新的模型提供方。 概述 LLM 适配器是一个继承 LlmAdapter 并实现 stream() 方法的类,它会将 Harness 的提供方无关请求转换为具体提供方的 API 调用,并将响应转换回 Harness 分片。 最小实现 imp

  • 能力的三种角色设计

    English | 中文 本文分为两部分:先参考三种角色能力模式的概念,再通过高级教程构建一项能力。请先完成基础插件路径和服务教程。 概念参考 当一项能力足够通用,需要支持可替换的提供方时(例如 Bash 执行),harness 会区分三种角色:Service Definition、Service

  • 通过提示词配置持久化插件

    English | 中文 创造模式提供 Plugin Manager 和只读运行时检查。插件配置属于当前 profile,影响其会话,并在进程重启后保留。 连接 MCP 服务器 启动 Web profile 并选择创造模式。准备一个可访问且提供 ping 的 Streamable HTTP MCP

  • 服务与依赖

    English | 中文 服务是一个插件向其他插件公开的能力。inject 声明插件需要哪些服务。 什么是服务 在 Harness 中,tools、llm、agents 都是服务。服务是挂载在 ctx 上的命名能力: ctx.tools // ToolRuntime service ctx.l

  • 插件与生命周期

    English | 中文 本页介绍 Cordis 插件模型和生命周期状态机。 Fiber 状态机 每个被加载的插件都拥有一个 Fiber 作用域,其状态如下: PENDING → LOADING → ACTIVE ↘ FAILED ACTIVE → UNLOADIN

  • 事件系统

    English | 中文 事件是 Cordis 插件间通信的核心机制。Harness 大量使用事件来实现松耦合的扩展点。 基本用法 监听事件 ctx.on('event-name', (payload) => { // Handle the event. }) 触发事件 ctx.emit('e

  • 开发一个工具

    English | 中文 本教程会在 Web UI 中添加一个 greet 工具。请先完成第一个插件,并保留其中的 scratch-plugin 目录。 创建工具插件 将 scratch-plugin/src/my-plugin.ts 替换为: import type { Context } fro

  • 打包与安装插件

    English | 中文 前几篇教程通过 --patch overlay 加载本地插件。本教程把它打包成可安装的组合包(bundle),用 dsh plugin add 安装进一个 profile,并解释决定组合后配置的层顺序。本文假设 dsh CLI 已安装。请先完成插件配置。 如果改用全新的源码

  • 第一个插件

    English | 中文 本教程会创建一个最小的 Harness 插件,并将其加载到 Web UI 中。请从已完成从源码运行路径的仓库检出开始。 创建本地项目 在仓库根目录创建本教程使用的临时项目: mkdir -p scratch-plugin/src 插件是什么 在 Harness 中,插件是

  • 插件配置

    English | 中文 让你的插件接受用户在 cordis.yml 中传入的配置。 定义 Config 类型 在插件中导出一个 Config 类型和同名的 Schemastery schema;默认值直接写在 schema 中: import type { Context } from '@dee