Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 39 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,44 @@ go run ./cmd/neocode
- `/provider` — 切换内建模型提供商
- `/model` — 切换模型

## Provider 配置

NeoCode 当前将运行时全局配置与自定义 provider 定义拆开管理:

- `~/.neocode/config.yaml` 只保存 `selected_provider`、`current_model`、`shell`、工具与上下文等全局配置
- 内建 provider 继续由代码提供,不写入 `config.yaml`
- 自定义 provider 统一放在 `~/.neocode/providers/<provider-name>/` 目录中

目录结构示例:

```text
~/.neocode/
config.yaml
providers/
company-gateway/
provider.yaml
```

`provider.yaml` 用来描述连接与驱动信息;custom provider 的模型列表只允许来自远程发现,不会读取目录中的 `models.yaml`。例如:

```yaml
# ~/.neocode/providers/company-gateway/provider.yaml
name: company-gateway
driver: openaicompat
api_key_env: COMPANY_GATEWAY_API_KEY

openai_compatible:
base_url: https://llm.example.com/v1
api_style: chat_completions
```

说明:

- 自定义 provider 名称不能与内建 provider 或其他自定义 provider 重复
- 自定义 provider 的旧 `driver: openai` 命名已不再接受
- custom provider 不允许声明 `default_model`
- custom provider 的模型列表仅来自远程发现;目录中的 `models.yaml` 不会被读取

## 架构概览

```
Expand Down Expand Up @@ -191,7 +229,7 @@ MIT

## Manual Compact

NeoCode 支持通过 `/compact` 手动压缩当前会话上下文。配置项见 `docs/guides/configuration.md`,流程和摘要约定见 `docs/context-compact.md`。
NeoCode 支持通过 `/compact` 手动压缩当前会话上下文。当前相关迁移背景与摘要生成设计可参考 `docs/phase2-runtime-migration.md`。

## CLI Workdir

Expand Down
44 changes: 0 additions & 44 deletions docs/session-persistence-design.md

This file was deleted.

29 changes: 0 additions & 29 deletions docs/tools-and-tui-integration.md

This file was deleted.

2 changes: 1 addition & 1 deletion internal/app/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func BuildRuntime(ctx context.Context, opts BootstrapOptions) (RuntimeBundle, er
return RuntimeBundle{}, err
}
modelCatalogs := providercatalog.NewService(manager.BaseDir(), providerRegistry, nil)
providerSelection := config.NewSelectionService(manager, providerRegistry, providerRegistry, modelCatalogs)
providerSelection := config.NewSelectionService(manager, providerRegistry, modelCatalogs)
if _, err := providerSelection.EnsureSelection(ctx); err != nil {
return RuntimeBundle{}, err
}
Expand Down
4 changes: 4 additions & 0 deletions internal/config/builtin_providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func OpenAIProvider() ProviderConfig {
BaseURL: OpenAIDefaultBaseURL,
Model: OpenAIDefaultModel,
APIKeyEnv: OpenAIDefaultAPIKeyEnv,
Source: ProviderSourceBuiltin,
}
}

Expand All @@ -41,6 +42,7 @@ func GeminiProvider() ProviderConfig {
BaseURL: GeminiDefaultBaseURL,
Model: GeminiDefaultModel,
APIKeyEnv: GeminiDefaultAPIKeyEnv,
Source: ProviderSourceBuiltin,
}
}

Expand All @@ -52,6 +54,7 @@ func OpenLLProvider() ProviderConfig {
BaseURL: OpenLLDefaultBaseURL,
Model: OpenLLDefaultModel,
APIKeyEnv: OpenLLDefaultAPIKeyEnv,
Source: ProviderSourceBuiltin,
}
}

Expand All @@ -63,6 +66,7 @@ func QiniuProvider() ProviderConfig {
BaseURL: QiniuDefaultBaseURL,
Model: QiniuDefaultModel,
APIKeyEnv: QiniuDefaultAPIKeyEnv,
Source: ProviderSourceBuiltin,
}
}

Expand Down
Loading
Loading