# dstalk — OpenAI-compatible / Anthropic AI 编程 CLI
dstalk 是兼容 OpenAI 风格接口与 Anthropic API 的 C/C++ AI 编程 CLI，采用 dstalk_core.dll 插件宿主 + 多前端解耦架构。

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

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

C

### 零 Node.js 运行时

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

ABI

### 稳定 C ABI

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

AI

### 多 API 兼容

内置 OpenAI-compatible 与 Anthropic 两个 AI 插件；通过 config.toml 中的 ai.provider 在 OpenAI 风格接口与 Anthropic API 之间切换。

CLI

### CLI 与 GUI 双前端

dstalk-cli 提供 ANSI 终端 UI，dstalk-gui 基于 SDL3 跨平台窗口，共享同一组核心能力。

PLG

### 插件化宿主

核心仅做插件加载、服务注册、事件总线和配置管理；AI、网络、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

    # 创建 config.toml
    ai.provider = "ai_openai"
    api.base_url = "https://api.openai.com/v1"
    api.api_key = "sk-xxxxxxxx"
    api.model = "gpt-4o"

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

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

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

architecture

    ┌─────────────────────────────────────────────────────┐
    │ Frontends                                            │
    │  dstalk-cli (ANSI UI)        dstalk-gui (SDL3)       │
    └───────────────────────┬─────────────────────────────┘
                            │ C ABI
    ┌───────────────────────▼─────────────────────────────┐
    │ dstalk_core.dll — 插件宿主                        │
    │  插件加载 · 服务注册 · 事件总线 · 配置管理           │
    ├───────────────┬───────────────┬─────────────────────┤
    │ openai  (ai) │ anthropic (ai)│ 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 启用 | 可选构建
插件 | 9 个功能插件 (openai · anthropic · network · lsp · session · context · config · file-io · tools)，独立 DLL | 已启用
测试 | 10 个测试目标覆盖插件宿主、事件总线、服务注册、插件加载及各 AI 插件，CTest 集成 | 已启用
文档 | docs/tutorial、docs/reference (commands、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 | 显示帮助 | /help
/clear | 清空当前会话上下文 | /clear
/model <name> | 切换当前模型 | /model gpt-4o
/file read <path> | 读取文件内容并输出到终端 | /file read README.md
/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 定义 8 种服务 vtable，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", 0)
    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;

    // 同模式: 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、9 个核心插件、测试与文档已经就位；后续聚焦在能力深化与生态扩展。

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

## 欢迎开源贡献者

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

PR

### 提交代码改进

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

PLG

### 开发新插件

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

DOC

### 完善文档与测试

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

前往源码仓库 提交 Issue

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

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

查看快速开始 访问源码仓库