docs: fix release smoke test failures

This commit is contained in:
Turtle
2026-08-13 13:43:43 +08:00
parent be96840412
commit 62080d49c2
66 changed files with 1150 additions and 124 deletions

View File

@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/user/develop/practice/index.md
index.md: 56ca7249b8b156ceb78327b547413dbf65726dcc
index.zh.md: aec5980ea45cfd5f8f7408877743920e68e15cbd
index.md: cc6bd7a234305f6fa193341f15354b40855f72e9
index.zh.md: aed13b00f9bc74946aace614953bed30705c8281

View File

@@ -23,7 +23,7 @@ The Bash execution capability consists of:
└─────────────┘ └──────────────────┘ └──────────────┘
▲ │
└────────────────────────────────────────────┘
inject: ['bash']
inject: ['shell']
```
## Benefits of the split

View File

@@ -23,7 +23,7 @@
└─────────────┘ └──────────────────┘ └──────────────┘
▲ │
└────────────────────────────────────────────┘
inject: ['bash']
inject: ['shell']
```
## 拆分的好处

View File

@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/user/develop/practice/llm-adapter.md
llm-adapter.md: aba4a6d0c8ee42e78ca5a804d9a0dd9b31c1e240
llm-adapter.zh.md: 5c7a6483e29a28871257df6a31e13d859a245097
llm-adapter.md: 882e82d880ac622cf886c6c24e75a1987e1c6702
llm-adapter.zh.md: 27c480af2a19a68ac35900a2ce1b5e9dbdc85bf8

View File

@@ -32,12 +32,12 @@ class MyAdapter extends LlmAdapter {
export interface Config {
apiKey: string
models: string[]
providers: string[]
}
export const Config: Schema<Config> = Schema.object({
apiKey: Schema.string().required(),
models: Schema.array(Schema.string()).required(),
providers: Schema.array(Schema.string()).required(),
})
export const name = 'my-llm-adapter'
@@ -45,7 +45,7 @@ export const inject = ['llm']
export function apply(ctx: Context, config: Config) {
const adapter = new MyAdapter(config.apiKey)
ctx.llm.registerAdapter(config.models, adapter)
ctx.llm.registerAdapter(config.providers, adapter)
}
```
@@ -117,10 +117,10 @@ Override `resolveModel(provider, model, signal?)` to return exact provider/model
## Register an adapter
```ts ignore-check
ctx.llm.registerAdapter(['model-name-1', 'model-name-2'], adapter)
ctx.llm.registerAdapter(['my-provider'], adapter)
```
The first argument lists the model names handled by the adapter. If `cordis.yml` selects `model: model-name-1`, the service routes that request to this adapter.
The first argument lists provider routes handled by the adapter. `GenerateOptions.provider` selects the registered adapter, while `GenerateOptions.model` passes an adapter-owned model id without lifecycle registration. Override `listModels()` when the adapter can advertise model choices to selectors.
## Use it from cordis.yml
@@ -129,18 +129,16 @@ The first argument lists the model names handled by the adapter. If `cordis.yml`
name: './src/my-llm-adapter.ts'
config:
apiKey: !!js process.env.MY_API_KEY
models:
- my-model-v1
- my-model-v2
providers:
- my-provider
- id: agent-loop
name: '@deepseek-ai/dsh-agent-loop'
config:
agents:
- id: main
provider: my-llm
model: my-model-v1 # References the model registered above.
workspaceContext: false
provider: my-provider
model: my-model-v1
```
## Reference implementations

View File

@@ -32,12 +32,12 @@ class MyAdapter extends LlmAdapter {
export interface Config {
apiKey: string
models: string[]
providers: string[]
}
export const Config: Schema<Config> = Schema.object({
apiKey: Schema.string().required(),
models: Schema.array(Schema.string()).required(),
providers: Schema.array(Schema.string()).required(),
})
export const name = 'my-llm-adapter'
@@ -45,7 +45,7 @@ export const inject = ['llm']
export function apply(ctx: Context, config: Config) {
const adapter = new MyAdapter(config.apiKey)
ctx.llm.registerAdapter(config.models, adapter)
ctx.llm.registerAdapter(config.providers, adapter)
}
```
@@ -117,10 +117,10 @@ async function* exampleChunks(): AsyncIterable<StreamChunk> {
## 注册适配器
```ts ignore-check
ctx.llm.registerAdapter(['model-name-1', 'model-name-2'], adapter)
ctx.llm.registerAdapter(['my-provider'], adapter)
```
第一个参数是该适配器支持的模型名列表。当用户在 `cordis.yml` 中配置 `model: model-name-1` 时,框架会将请求路由到该适配器
第一个参数是该适配器处理的提供方路由列表。`GenerateOptions.provider` 选择已注册的适配器,`GenerateOptions.model` 则传入由适配器拥有、无需在生命周期启动时注册的模型 id。适配器能够向选择器公布模型选项时请覆写 `listModels()`
## 在 cordis.yml 中使用
@@ -129,18 +129,16 @@ ctx.llm.registerAdapter(['model-name-1', 'model-name-2'], adapter)
name: './src/my-llm-adapter.ts'
config:
apiKey: !!js process.env.MY_API_KEY
models:
- my-model-v1
- my-model-v2
providers:
- my-provider
- id: agent-loop
name: '@deepseek-ai/dsh-agent-loop'
config:
agents:
- id: main
provider: my-llm
model: my-model-v1 # References the model registered above.
workspaceContext: false
provider: my-provider
model: my-model-v1
```
## 实战参考