- New plugins_upper/ai_common/ static library: shared PluginConfig, ToolCallAccum, StreamContext, secure_zero, extract_host_port, serialize_tool_calls, free_chat_result - Refactored openai/anthropic plugins to use dstalk_ai:: namespace from ai_common - Fixed anthropic g_config raw pointer → std::atomic (data race) - Added SSE parse error counter with threshold abort (kMaxSseParseErrors=5) - Fixed missing closing brace in both plugins' error-body catch block - Updated test targets: ai_common include path + link, using namespace dstalk_ai - plugin_loader_test: added stub_unreg + service_registry.cpp for unregister_service - Includes pre-existing uncommitted changes from prior waves Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.1 KiB
3.1 KiB
dstalk 模块目录和功能说明
一、核心网关模块
| 目录 | 功能说明 |
|---|---|
dstalk_core/ |
核心网关库(dstalk.dll / libdstalk.so),提供插件加载、服务注册、事件总线、配置存储、日志、内存管理 |
二、前端模块
| 目录 | 功能说明 |
|---|---|
dstalk_cli/ |
命令行前端:ANSI 终端交互、命令解析、流式对话、工具调用、批处理/管道模式 |
dstalk_gui/ |
图形界面前端:SDL3 窗口化界面、暗色主题、流式对话(默认关闭) |
dstalk_web/ |
Web 前端:Boost.Beast HTTP + SSE 流式推送、内嵌 HTML/CSS/JS 聊天界面(默认关闭) |
三、插件模块
插件按依赖层级分布在三个目录下,通过 C ABI 与核心网关通信。
3.1 基础插件(无依赖)
不依赖任何其他插件,可独立加载运行。
| 目录 | 服务名 | 功能说明 |
|---|---|---|
plugins_base/config/ |
"config" |
TOML 配置文件解析、键值读写 |
plugins_base/file_io/ |
"file_io" |
文件读写服务 |
plugins_base/lsp/ |
"lsp" |
语言服务器协议 JSON-RPC 客户端(诊断、悬停、补全),自行管理子进程 |
3.2 只依赖基础插件的插件
仅依赖 3.1 中的基础插件,不依赖同级或上层插件。
| 目录 | 服务名 | 功能说明 | 依赖 |
|---|---|---|---|
plugins_middle/network/ |
"http" |
HTTP/HTTPS POST 和流式请求(Boost.Beast + OpenSSL) | config |
plugins_middle/session/ |
"session" |
会话消息历史管理、保存/加载、Token 计数 | file_io |
plugins_middle/tools/ |
"tools" |
工具注册、Schema 管理、执行分发(内置 file_read/file_write) | file_io |
3.3 依赖其他插件的插件
依赖 3.2 或更多层级的插件。
| 目录 | 服务名 | 功能说明 | 依赖 |
|---|---|---|---|
plugins_upper/context/ |
"context" |
Token 计数(UTF-8 字节估算)、上下文窗口裁剪 | session |
plugins_upper/openai/ |
"ai_openai" |
OpenAI 兼容格式 AI 接入(chat/stream/tools、SSE 解析) | http、config |
plugins_upper/anthropic/ |
"ai_anthropic" |
Anthropic Claude Messages API 接入(chat/stream、SSE 解析) | http、config |
3.4 规划中的插件(尚未实现)
| 模块 | 服务名(建议) | 功能说明 | 分类 |
|---|---|---|---|
| Anthropic↔OpenAI 格式转换 | "format.convert" |
双向请求/响应/SSE 流格式转换 | 依赖其他插件 |
| AI 自动识别接口 | "ai.auto" |
自动检测可用 AI 提供者并统一路由 | 依赖其他插件 |
| 数据库 | "database" |
数据库连接和查询服务 | 基础插件 |
四、插件依赖关系图
第一层(基础插件,无依赖):
config file_io lsp
第二层(只依赖基础插件):
network ← config
session ← file_io
tools ← file_io
第三层(依赖其他插件):
context ← session
openai ← http, config
anthropic ← http, config
加载顺序由 Kahn 拓扑排序自动计算。