oldwinter / oldwinter/hctl

架构:Desired 没有 endpoint,Hermes sync 复制不了 base_url

Open
#34 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
0
Forks
0
Avg merge
10m
Merged PRs (30d)
12

Description

现状

#33 让 Hermes 拒绝不存在的 provider(写入与观察一致)。但 model.Desired 只有 model / provider / secretRefSnapshot 只有 baseUrlHost(hostname,不是完整 URL)。

sync --fields provider 因此只能改 provider 名,不能把源 home 的 providers.<id>.base_url 写到目标。mba/box 上同一个 custom provider 指向不同网关时,sync 之后观察层 host 仍是旧的。

为何值得单独跟

这不是 adapter 小修补:要在 Desired / apply / diff / sync 加 endpoint 字段,并决定明文 URL 是否进 -f 文档。Hermes 是最明显的缺口;OpenCode / Codex custom provider 有同样的字段缺口。

建议改动

  • Desired 增加可选 baseUrl(或等价字段)
  • Hermes WriteFields 在 provider 已存在时写入该 provider 的 base_url / api
  • Snapshot 继续只暴露 host;完整 URL 只走写路径
  • sync 从源 adapter 读出完整 endpoint 填进 Desired(不要只抄 host)

不在范围

  • 不把完整 URL 打进 doctor/get 人表(继续 host)
  • 不改 secret 同步
  • describe -o wide、droid reasoningEffort、cursor probe hang 另说

发现自 #33 E2E swarm 的刻意未做 gap。

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing model.Desired and Snapshot through apply, diff, and sync, then inspect the Hermes WriteFields path and the source adapters. Verify how an optional complete endpoint can flow through Desired without changing Snapshot's host-only output. Done means sync can copy the source provider's base URL or api to an existing target provider while secrets and human-facing host displays remain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.