codexhost-add-harness

Featured

为 codexhost 新增 Harness 插件,或规划、审查、补全现有 Harness Adapter。按当前公共契约实现原生能力,区分插件后端、预装发行和 Desktop 产品接入;不用于单纯添加 Model、Provider 或账号。

AI & Automation 2,629 stars 229 forks Updated today LGPL-3.0

Install

View on GitHub

Quality Score: 90/100

Stars 20%
100
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# 新增 codexhost Harness 插件 目标:交付一个通过公共契约工作的独立插件,而不是在 Host 中增加一套 Harness 专用流程。插件是交付与加载单元,`HarnessAdapter` / `HarnessSession` 是运行时接口;不要求继承基类,也不要求使用 ACP。 本文代码路径以仓库根目录为基准,`references/` 链接相对于本 Skill。接口签名、字段限制和当前行为以源码为准;参考文档是实现与验收清单,不是第二份接口定义。 ## 当前架构边界 ```text Host ├─ 发现 Manifest、读取显式启用配置、调用插件工厂 ├─ 通过 HarnessAdapter / HarnessSession 执行业务 └─ 拥有 Thread 映射、持久化事务、委派和 Desktop 协议投影 │ 公共契约 ▼ 插件 ├─ Manifest:身份、版本、展示信息、入口 ├─ 工厂:把 Host Context 转成原生构造参数 ├─ HarnessAdapter:检查、打开 Session、关闭共享资源 └─ HarnessSession:执行、输出、状态、历史、关闭 │ 插件内部 ▼ 原生 SDK / RPC / 服务 / CLI ``` - 七个既有 Harness 和用户插件共用动态加载器,Host 不静态依赖具体 Adapter 包。新 ID 使用共享插件路由。 - 公共工具仍可复用:例如 `harness-discovery` 实现搜索机制,插件声明命令名、环境变量和安装目录策略。 - **完整产品去专属化尚未完成**:Renderer 仍有固定 Agent 名单、配置字段和展示接线;旧路由、部分恢复策略、Credits、导入、Broker 与远程配置仍有历史特例。插件加载成功不等于自动出现在 Desktop。 - 既有特例是兼容负担,不是新 Harness 的实现模板。公共契约无法表达真实需求时,记录缺口并在当前任务范围内设计公共扩展;不得通过新 Harness 专用 Host 分支绕过契约。 ## 1. 确定交付范围和能力 从用户请求判断范围;只有会影响实现边界的歧义才询问,不默认扩展为全产品改造。 | 交付范围 | 必须完成 | 不自动包含 | |---|---|---| | 插件后端 | 原生适配、Manifest/工厂、可运行依赖、隔离目录加载、公共行为测试 | 仓库预装、Desktop UI | | 预装发行 | 插件后端 + Workspace 构建、预装清单、独立 Bundle、许可与发行验收 | Renderer 自动发现 | | Desktop 产品接入 | 插件后端 + Picker、配置、恢复、展示及 UI 验收 | 必须成为预装插件 | 普通持久化 Thread 和完整委派要求可写 resume。原生系统不支持时,可以交付明确受限的后端,但不能把它称为完整产品接入;当前没有自动 ephemeral Thread 降级。 先读取以下权威入口: - `packages/harness-adapter/src/text-session.ts`:Adapter、Session、命令、事件和可选接口。 - `packages/harness-adapter/src/plugin.ts`:工厂和 Context。 - `packages/shared-con...

Details

Author
BytePioneer-AI
Repository
BytePioneer-AI/codex-host
Created
2 months ago
Last Updated
today
Language
TypeScript
License
LGPL-3.0

Similar Skills

Semantically similar based on skill content — not just same category