dstalk.top 是 dstalk 项目的官方网站

dstalk

兼容 OpenAI 风格接口与 Anthropic API 的 AI 编程 CLI。核心采用 C11 / C++20 编写,以 dstalk_core.dll 作为插件宿主暴露稳定 C ABI,10 个功能插件(AI、endpoint 管理、网络、LSP、会话、文件、工具等)编译为独立 DLL,通过统一接口接入 CLI、SDL3 GUI、Boost.Beast Web 前端与第三方宿主。

v0.1.0 C11 / C++20 插件宿主 + C ABI 10 个插件 GPL v3.0
核心dstalk_core.dll (插件宿主) 前端CLI + SDL3 GUI + Web 插件openai · anthropic · endpoint_mgr · network · lsp · session · context · config · file-io · tools
dstalk-cli
$ build/bin/dstalk_cli.exe config.toml

dstalk v0.1.0  |  OpenAI-compatible / Anthropic  |  /help 查看帮助

> 帮我解释 dstalk-core 的职责
思考中...
AI: dstalk-core 是插件宿主,负责插件加载、服务注册、
    事件总线和配置管理;AI、网络、会话、LSP、文件 IO
    等能力都由独立插件提供,前端只处理输入与渲染。

> /file read dstalk-core/include/dstalk/dstalk_host.h
--- dstalk-core/include/dstalk/dstalk_host.h ---

为什么 dstalk 用 C/C++ 重新做 AI 编程助手?

dstalk 对标 Claude Code、OpenCode、KiloCode,但选择系统级实现和插件宿主架构,重点优化启动速度、运行时依赖、可嵌入能力和长期驻留体验。

C

零 Node.js 运行时

核心以 C11 / C++20 构建,目标是毫秒级启动和更低内存占用,适合终端长期交互。

ABI

稳定 C ABI

公开 dstalk_init、dstalk_service_query 等宿主函数和 9 种服务 vtable(AI、endpoint 管理、会话、HTTP、文件、LSP 等),方便 C/C++、Python、Rust、C#、Go 嵌入。

AI

多 endpoint 路由

内置 OpenAI-compatible 与 Anthropic 两个 AI 插件,并通过 ai_endpoint_mgr 管理多个命名 endpoint;前端优先按 active endpoint 路由,/status 可查看脱敏状态。

CLI

CLI、GUI 与 Web 三前端

dstalk-cli 提供 ANSI 终端 UI,dstalk-gui 基于 SDL3 跨平台窗口,dstalk-web 基于 Boost.Beast + SSE;三者共享同一组核心能力。

PLG

插件化宿主

核心仅做插件加载、服务注册、事件总线和配置管理;AI、endpoint 管理、网络、LSP、会话等能力均为独立 DLL,可以替换或扩展。

OSS

开源可改造

项目采用 GNU GPL v3.0,附带示例插件、单元测试与教程文档,适合学习、二次开发和本地工作流定制。

快速开始

dstalk 已提供自动工具链脚本和一键构建脚本。API Key 请只保存在本地 config.toml 或安全的环境中,不要提交到仓库。

1

安装本地工具链

进入 tools 目录运行 setup.bat,下载 CMake、Ninja、LLVM/Clang、Conan2。

2

构建 dstalk

运行 build.bat,完成 Conan 依赖、CMake 配置和 Ninja 编译。

3

启动 CLI

使用 build/bin/dstalk_cli.exe,并传入 config.toml 或使用默认配置。

quickstart
# 安装工具链
cd tools
setup.bat

# 回到项目根目录并编译
cd ..
build.bat

# 单 Provider 模式 / legacy single provider
ai.provider = "ai_openai"
api.base_url = "https://api.openai.com/v1"
api.api_key = "sk-xxxxxxxx"
api.model = "gpt-4o"

# 多 Endpoint 模式 / multi-endpoint
endpoints.names = "openai_main, anthropic_alt"
endpoints.active = "openai_main"
endpoint.openai_main.provider = "ai_openai"
endpoint.openai_main.api_key = "sk-xxxxxxxx"
endpoint.openai_main.model = "gpt-4o"
endpoint.anthropic_alt.provider = "ai_anthropic"
endpoint.anthropic_alt.api_key = "sk-ant-xxxx"
endpoint.anthropic_alt.model = "claude-sonnet"

# 运行 CLI
build/bin/dstalk_cli.exe config.toml

插件宿主 + 多前端解耦架构

dstalk_core.dll 作为插件宿主,负责插件加载、服务注册、事件总线和配置管理;AI、endpoint 管理、网络、LSP、会话、文件 IO、工具等 10 个功能插件编译为独立 DLL,前端只通过 C ABI 触达核心能力。GUI 与 Web 分别通过 CMake 选项 DSTALK_BUILD_GUI / DSTALK_BUILD_WEB 启用。

architecture
┌─────────────────────────────────────────────────────┐
│ Frontends                                            │
│  dstalk-cli (ANSI)   dstalk-gui (SDL3)   dstalk-web (SSE) │
└───────────────────────┬─────────────────────────────┘
                        │ C ABI
┌───────────────────────▼─────────────────────────────┐
│ dstalk_core.dll — 插件宿主                        │
│  插件加载 · 服务注册 · 事件总线 · 配置管理           │
├───────────────┬───────────────┬─────────────────────┤
│ openai  (ai) │ anthropic (ai)│ endpoint_mgr       │
│ network(http)│ lsp (client)  │ session            │
│ context       │ config        │ file-io · tools    │
└───────────────┴───────────────┴─────────────────────┘
   Boost.JSON · Boost.Asio / Beast · OpenSSL TLS

技术栈与工程现状

以下内容根据 dstalk 的 CMake、Conan 配置和公开头文件整理。

模块当前技术状态
核心库C11 / C++20,dstalk_core.dll,插件宿主,公开 C ABI已启用
CLI 前端ANSI 终端 UI,调用 dstalk/dstalk_host.h已启用
GUI 前端SDL3 图形化前端,CMake 选项 DSTALK_BUILD_GUI 启用可选构建
Web 前端Boost.Beast HTTP + SSE 流式前端,CMake 选项 DSTALK_BUILD_WEB 启用可选构建
前端公共库dstalk_frontend_common 复用配置发现、初始化和服务查询逻辑已启用
插件10 个功能插件(openai · anthropic · endpoint_mgr · network · lsp · session · context · config · file-io · tools),独立 DLL已启用
测试11 个测试目标覆盖插件宿主、事件总线、服务注册、插件加载、endpoint manager 及各 AI 插件,CTest 集成已启用
文档docs/tutorial、docs/reference(commands、config、plugin-abi)、docs/explanation(architecture、plugin-lifecycle、security-logging)已发布
示例examples/example_plugin 展示插件开发模板已提供
依赖管理Conan2,boost/1.86.0,openssl/3.4.1已配置
构建系统CMake 3.21+,Ninja,LLVM/Clang,CMakePresets已配置
许可证GNU GPL v3.0已确认

CLI 常用命令

除了直接输入自然语言问题,dstalk-cli 还提供文件、模型和会话相关命令。

命令说明示例
/help / /h显示命令列表/help
/quit / /q退出程序/quit
/clear清空当前会话上下文/clear
/context显示当前 Token 数和消息条数/context
/status显示当前运行状态(脱敏,不打印完整 API Key)/status
/model <name>切换当前模型;多 endpoint 模式下作用于 active endpoint/model gpt-4o
/file list [path]列出目录内容,不填 path 列出当前目录/file list src/
/file show <path>查看文件内容/file show README.md
/file read <path>读取文件内容(同 /file show)/file read config.toml
/file write <path> <content>写入文件内容/file write note.txt hello
/save <path> / /load <path>保存或恢复会话/save session.json

公开 C API

dstalk 通过 4 个公开头文件暴露能力:dstalk_host.h 管理宿主生命周期与插件,dstalk_services.h 定义 9 种服务 vtable(含 ai_endpoint_mgr),dstalk_lsp.h 提供独立 LSP 客户端,dstalk_types.h 共享消息与事件类型。前端通过 dstalk_service_query() 获取服务指针,再经函数指针调用具体能力。

dstalk_host.h — 宿主 API
// 生命周期
int  dstalk_init(const char* config_path);
void dstalk_shutdown(void);

// 插件管理
int  dstalk_plugin_load(const char* path);
int  dstalk_plugin_unload(int plugin_id);
int  dstalk_plugin_list(char** output_json);
void*dstalk_service_query(const char* name, int min_version);

// 事件系统
int  dstalk_event_subscribe(int type, dstalk_event_handler_fn fn, void* ud);
int  dstalk_event_emit(int type, const void* data);
void dstalk_event_unsubscribe(int sub_id);

// 配置 / 内存 / 诊断
const char* dstalk_config_get(const char* key);
int  dstalk_config_set(const char* key, const char* value);
void*dstalk_alloc(size_t size);
void dstalk_free(void* ptr);
char*dstalk_strdup(const char* s);
void dstalk_set_diag_callback(dstalk_diag_cb cb);
dstalk_services.h — 服务 vtable 示例
// AI 服务: dstalk_service_query("ai_openai", 1)
typedef struct {
    int  (*configure)(const char* provider, const char* base_url,
                      const char* api_key, const char* model,
                      int max_tokens, double temperature);
    dstalk_chat_result_t (*chat)(const dstalk_message_t* history,
                      int len, const char* input, const char* tools_json);
    dstalk_chat_result_t (*chat_stream)(...);
    void (*free_result)(dstalk_chat_result_t* result);
} dstalk_ai_service_t;

// endpoint manager: dstalk_service_query("ai_endpoint_mgr", 1)
// 同模式: dstalk_ai_endpoint_mgr_t, dstalk_session_service_t,
//   dstalk_http_service_t, dstalk_file_io_service_t,
//   dstalk_config_service_t, dstalk_tools_service_t, dstalk_lsp_service_t

路线图

插件宿主、CLI、SDL3 GUI、Boost.Beast Web、10 个核心插件、测试与文档已经就位;后续聚焦在能力深化与生态扩展。

阶段内容状态
骨架项目骨架、CMake/Ninja 构建、Conan 依赖、DLL 导出、前端主循环已完成
插件宿主插件加载、服务注册、事件总线、配置管理;10 个核心插件(openai · anthropic · endpoint_mgr · network · lsp · session · context · config · file-io · tools)已完成
对话能力HTTPS 网络层、OpenAI-compatible / Anthropic API 适配、流式输出、多轮会话、工具调用与文件读写已可用
多 endpointai_endpoint_mgr 管理多个命名 AI endpoint,前端优先按 active endpoint 路由,/status 输出脱敏状态已可用
GUI / Web 前端SDL3 图形化窗口与 Boost.Beast Web + SSE,作为可选前端与 CLI 共享插件宿主可选构建
下一阶段LSP 集成深化、第三方插件 SDK、跨平台分发与文档持续完善计划中

欢迎开源贡献者

dstalk 是开放项目,欢迎对 C/C++、命令行体验、AI API 适配、GUI、文档和测试感兴趣的开发者一起参与。

PR

提交代码改进

核心、CLI、SDL3 GUI、Web 前端与 10 个插件(AI、endpoint 管理、网络、LSP、会话、文件、工具等)都欢迎补丁,跨平台兼容与构建脚本也有空间。

PLG

开发新插件

参考 examples/example_plugin 和 docs/reference/plugin-abi.md,通过 C ABI 注册新服务,把自己的模型、工具或数据源接入 dstalk。

DOC

完善文档与测试

docs/tutorial、docs/reference 已经成形,欢迎补充教程、命令速查、插件 ABI 说明,以及 host_api_test / smoke_test 的覆盖面。

从终端开始,把 dstalk 嵌入更多工具

dstalk 的核心价值不只是一个 CLI,而是一个可被多前端复用的本地 AI 编程核心。dstalk.top 会持续同步项目进展、构建方式和可用能力。