Candidate plugin search API
Query public CandidateFacts so the local DSH Agent and manager can interpret and plan independently.
API Version: v1Anonymous low-volume access限流提示: 60 次 / 小时 / IP
POST
/v1/candidates:searchRequest
Headers
Content-Type: application/jsonBody(JSON)
Request safety boundary
Do not send profiles, file paths, credentials, full inventory, conversation transcripts, or internal system state.
Response 200 OK
CandidateFacts(完整契约Response)
- 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
通过 Match facts (capabilities and constraints)
- matched_capabilities
- conversation.codex
session.continue
model.reasoning_selection
tool.approval
- absent_capabilities
- []
- unknown_capabilities
- []
- reason_codes
- source.profile_match
Passed Compatibility and evidence
- 声明支持(发布者声明)
- stable / next
- 观察Status(Registry observations)
- StableNot testedNEXTNot testedDevNot tested
- 证据(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
Partial Usage boundaries
- prerequisites
- Codex authentication is prepared locally and a supported DSH Web Profile is running.
- permissions
- publisher.claim.1
- limitations
- This plugin does not provide Relay Events, file browsing, or a terminal panel.
- unknowns
- /registry_observations/advisory
/test_evidence
- advisory_state
- unknown
Control metadata
- publication_version
- public.2026-09-03.5f40e5afda
- schema_version
- 1.0.0
- freshness
- current
- withdrawn
- false
- install_approval
- false
View full JSON response
{
"schema_version": "1.0.0",
"publication_version": "public.2026-09-03.5f40e5afda",
"data_class": "public",
"request_id": "request.search.21eb11a0a558fc94",
"generated_at": "2026-09-04T13:47:57.094Z",
"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": "Plugin通过 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 Permissions与 Codex 审批约束。",
"en": "Tools execute through the DSH tool runtime and remain subject to DSH permissions and Codex approvals."
}
],
"limitations": [
{
"zh-CN": "本Plugin不提供 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
}This API returns facts, not installation approvalDSH Agent interprets the taskManager reads local factsRegistry 返回 CandidateFactsManager inspects locally / plan / confirm / execute