候选插件搜索 API
用于查询公开 Registry 的 CandidateFacts,帮助本地 DSH Agent 与管理器独立理解与规划。
API 版本: v1匿名低频可用限流提示: 60 次 / 小时 / IP
POST
/v1/candidates:search请求
Headers
Content-Type: application/jsonBody(JSON)
请求注意(安全边界)
请勿发送 Profile、文件路径、凭据、完整库存、对话转录或内部系统状态。
响应 200 OK
CandidateFacts(完整契约响应)
- plugin_id
- plugin.relay_dsh_plugin_codex
- exact_release
- 0.2.1
- install_ref
- relay-dsh-plugin-codex@0.2.1
- source
- yangbobo2021
- canonical_url
- http://127.0.0.1:4173/plugins/relay-dsh-plugin-codex
通过 匹配事实(能力与约束)
- matched_capabilities
- conversation.codex
session.continue
model.reasoning_selection
tool.approval
- absent_capabilities
- []
- unknown_capabilities
- []
- reason_codes
- source.profile_match
通过 适配与证据
- 声明支持(发布者声明)
- stable / next
- 观察状态(Registry 观察)
- Stable未测试NEXT未测试Dev未测试
- 证据(TestRun)
- source: not_tested
install: not_tested
boot: not_tested
smoke: not_tested
lifecycle: not_tested
composition: not_tested
permissions: not_tested
maintenance: not_tested
freshness: not_tested
- observed_at
- 2026-09-03T10:02:34.210Z
部分通过 使用边界
- prerequisites
- 本机已准备 Codex 认证,并运行受支持的 DSH Web Profile。
- permissions
- publisher.claim.1
- limitations
- 本插件不提供 Relay Events、文件浏览或终端面板。
- unknowns
- /registry_observations/advisory
/test_evidence
- advisory_state
- unknown
控制元数据
- publication_version
- public.2026-09-03.5f40e5afda
- schema_version
- 1.0.0
- freshness
- current
- withdrawn
- false
- install_approval
- false
查看完整 JSON 响应
{
"schema_version": "1.0.0",
"publication_version": "public.2026-09-03.5f40e5afda",
"data_class": "public",
"request_id": "request.search.00a734429c1d9aea",
"generated_at": "2026-09-04T12:50:45.784Z",
"candidates": [
{
"candidate_id": "candidate.relay-dsh-plugin-codex.0_2_1",
"identity": {
"authority": "control_metadata",
"object_type": "plugin",
"plugin_id": "plugin.relay_dsh_plugin_codex",
"plugin_slug": "relay-dsh-plugin-codex",
"display_name": "Codex Conversations for DSH",
"release_id": "release.relay-dsh-plugin-codex.0_2_1",
"release_version": "0.2.1",
"install_ref": {
"kind": "npm",
"spec": "relay-dsh-plugin-codex@0.2.1",
"immutable": true,
"package_name": "relay-dsh-plugin-codex",
"version": "0.2.1",
"integrity": "sha512-3v5l0LK9me2ZLDlImLcLBKCEcOV68qQXOZQ0vMHiYW2l0zbtz5JTK/vsnyR52A+H8jw26QkfMNgz3iyYLS3Mdg=="
},
"artifact_id": "artifact.relay-dsh-plugin-codex.0_2_1.npm",
"artifact_digest": "sha256:6413c4e9326da45541e609e53bffb78d34184a5c51fc53611dca4a3aeb3db67d",
"source": {
"repository_url": "https://github.com/yangbobo2021/relay-dsh-plugin-codex",
"repository_owner": "yangbobo2021",
"association_status": "confirmed",
"association_evidence_refs": [
"src_relay_dsh_plugin_codex_npm",
"src_relay_dsh_plugin_codex_repository"
]
},
"canonical_url": "http://127.0.0.1:4173/plugins/relay-dsh-plugin-codex"
},
"match": {
"authority": "registry_observations",
"rank": 1,
"reason_codes": [
{
"code": "source.profile_match",
"summary": {
"zh-CN": "该条目来自已关联 npm Release 与源码仓库的发布者资料。",
"en": "This record comes from publisher material associated with an npm Release and source repository."
},
"field_refs": [
"/publisher_content/problem",
"/match/capabilities/matched"
],
"evidence_refs": [
"src_relay_dsh_plugin_codex_npm",
"src_relay_dsh_plugin_codex_readme_en",
"src_relay_dsh_plugin_codex_readme_zh"
]
}
],
"capabilities": {
"matched": [
{
"id": "conversation.codex",
"evidence_refs": [
"claim_relay_dsh_plugin_codex_profile"
]
},
{
"id": "session.continue",
"evidence_refs": [
"claim_relay_dsh_plugin_codex_profile"
]
},
{
"id": "model.reasoning_selection",
"evidence_refs": [
"claim_relay_dsh_plugin_codex_profile"
]
},
{
"id": "tool.approval",
"evidence_refs": [
"claim_relay_dsh_plugin_codex_profile"
]
}
],
"absent": [],
"unknown": []
}
},
"publisher_content": {
"authority": "publisher_content",
"trust": "untrusted_text",
"profile_version": "profile.relay-dsh-plugin-codex.f52b34ceedee",
"problem": {
"zh-CN": "用户希望直接在 DSH 中使用 Codex,同时保留 DSH 的对话、审批和提问体验。",
"en": "Users want to use Codex inside DSH while keeping DSH conversation, approval, and question flows."
},
"outcomes": [
{
"zh-CN": "每个 DSH Session 持续绑定一个 Codex App Server Thread。",
"en": "Keep one Codex App Server Thread bound to each DSH Session."
},
{
"zh-CN": "在原生 DSH 对话中使用模型选择、reasoning、图片、中断和工具。",
"en": "Use model selection, reasoning, images, interruption, and tools in the native DSH conversation."
}
],
"operating_approach": {
"zh-CN": "插件通过 Codex App Server 提供对话后端,并把工具执行保留在拥有该 Agent 的 DSH 工具运行时中。",
"en": "The plugin provides a conversation backend through the Codex App Server while tool execution remains in the owning Agent's DSH tool runtime."
},
"prerequisites": [
{
"zh-CN": "本机已准备 Codex 认证,并运行受支持的 DSH Web Profile。",
"en": "Codex authentication is prepared locally and a supported DSH Web Profile is running."
}
],
"required_services": [
{
"zh-CN": "需要可用的 Codex 账户与本地 Codex 运行环境。",
"en": "An available Codex account and local Codex runtime are required."
}
],
"permissions_claimed": [
{
"zh-CN": "工具通过 DSH 工具运行时执行,并继续受 DSH 权限与 Codex 审批约束。",
"en": "Tools execute through the DSH tool runtime and remain subject to DSH permissions and Codex approvals."
}
],
"limitations": [
{
"zh-CN": "本插件不提供 Relay Events、文件浏览或终端面板。",
"en": "This plugin does not provide Relay Events, file browsing, or a terminal panel."
}
],
"non_fit_conditions": [
{
"zh-CN": "只使用 DSH 标准 Agent 时不需要安装。",
"en": "It is not needed when only DSH standard agents are used."
}
],
"declared_compatibility": [
{
"claim_id": "claim.relay-dsh-plugin-codex.compatibility.1",
"dsh_range": "0.1.1-rc.2 || 0.1.2-alpha.2 || 0.1.2-alpha.3",
"channels": [
"stable",
"next"
],
"source_ref": "claim_relay_dsh_plugin_codex_compatibility",
"claimed_at": "2026-09-01T06:49:44.000Z"
}
],
"quick_start": [
{
"zh-CN": "安装并重启 DSH Web 后,新建 Codex 对话。",
"en": "Install and restart DSH Web, then start a Codex conversation."
}
],
"readme_excerpt": {
"zh-CN": "每个 DSH Session 持续绑定一个 Codex App Server Thread。",
"en": "One persistent Codex App Server Thread per DSH Session."
}
},
"registry_observations": {
"authority": "registry_observations",
"source_association": {
"status": "confirmed",
"method": "package_metadata",
"evidence_refs": [
"src_relay_dsh_plugin_codex_npm",
"src_relay_dsh_plugin_codex_repository"
],
"observed_at": "2026-09-03T10:02:34.210Z"
},
"prerequisites": [
{
"code": "publisher.claim.1",
"status": "claimed_only",
"evidence_refs": [
"claim_relay_dsh_plugin_codex_profile"
]
}
],
"permissions": [
{
"code": "publisher.claim.1",
"status": "claimed_only",
"evidence_refs": [
"claim_relay_dsh_plugin_codex_profile"
]
}
],
"risks": [],
"advisory": {
"state": "unknown",
"maximum_severity": "unknown",
"advisory_ids": []
},
"maintenance": {
"state": "active",
"observed_at": "2026-09-01T06:49:44.000Z",
"source_refs": [
"src_relay_dsh_plugin_codex_repository"
]
},
"unknowns": [
{
"field": "/registry_observations/advisory",
"reason": "not_observed"
},
{
"field": "/test_evidence",
"reason": "not_observed"
}
]
},
"test_evidence": {
"authority": "test_evidence",
"compatibility_observations": [
{
"channel": "stable",
"status": "not_tested",
"dsh_target": null,
"environment": null,
"testrun_ids": [],
"observed_at": null
},
{
"channel": "next",
"status": "not_tested",
"dsh_target": null,
"environment": null,
"testrun_ids": [],
"observed_at": null
},
{
"channel": "developer",
"status": "not_tested",
"dsh_target": null,
"environment": null,
"testrun_ids": [],
"observed_at": null
}
],
"dimensions": [
{
"evidence_id": "evd_relay_dsh_plugin_codex_source",
"dimension": "source",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前公开数据没有该精确 Release 的 source TestRun。",
"en": "The current public data has no source TestRun for this exact Release."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
},
{
"evidence_id": "evd_relay_dsh_plugin_codex_install",
"dimension": "install",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前 TestRun 集合没有覆盖 install。",
"en": "The current TestRun set does not cover install."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
},
{
"evidence_id": "evd_relay_dsh_plugin_codex_boot",
"dimension": "boot",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前 TestRun 集合没有覆盖 boot。",
"en": "The current TestRun set does not cover boot."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
},
{
"evidence_id": "evd_relay_dsh_plugin_codex_smoke",
"dimension": "smoke",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前 TestRun 集合没有覆盖 smoke。",
"en": "The current TestRun set does not cover smoke."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
},
{
"evidence_id": "evd_relay_dsh_plugin_codex_lifecycle",
"dimension": "lifecycle",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前 TestRun 集合没有覆盖 lifecycle。",
"en": "The current TestRun set does not cover lifecycle."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
},
{
"evidence_id": "evd_relay_dsh_plugin_codex_composition",
"dimension": "composition",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前 TestRun 集合没有覆盖 composition。",
"en": "The current TestRun set does not cover composition."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
},
{
"evidence_id": "evd_relay_dsh_plugin_codex_permissions",
"dimension": "permissions",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前 TestRun 集合没有覆盖 permissions。",
"en": "The current TestRun set does not cover permissions."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
},
{
"evidence_id": "evd_relay_dsh_plugin_codex_maintenance",
"dimension": "maintenance",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前公开数据没有该精确 Release 的 maintenance TestRun。",
"en": "The current public data has no maintenance TestRun for this exact Release."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
},
{
"evidence_id": "evd_relay_dsh_plugin_codex_freshness",
"dimension": "freshness",
"status": "not_tested",
"scope_summary": {
"zh-CN": "当前公开数据没有该精确 Release 的 freshness TestRun。",
"en": "The current public data has no freshness TestRun for this exact Release."
},
"tested_identity": null,
"evidence_refs": [],
"observed_at": null
}
]
},
"control_metadata": {
"authority": "control_metadata",
"schema_version": "1.0.0",
"publication_version": "public.2026-09-03.5f40e5afda",
"data_class": "public",
"freshness": {
"status": "current",
"as_of": "2026-09-03T10:02:34.210Z",
"expires_at": "2026-09-10T10:02:34.210Z",
"source_last_success_at": "2026-09-03T10:02:34.210Z"
},
"availability": "available",
"withdrawn": false,
"withdrawal_reason": null,
"is_final_recommendation": false,
"grants_install_approval": false
}
}
],
"page": {
"limit": 10,
"returned": 1,
"next_cursor": null
},
"provider_failures": [],
"is_final_recommendation": false,
"grants_install_approval": false
}本 API 只返回事实,不返回安装批准DSH Agent 理解任务管理器读取本地事实Registry 返回 CandidateFacts管理器本地 inspect / plan / confirm / execute