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

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

C

### 零 Node.js 运行时

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

ABI

### 稳定 C ABI

公开 dstalk_init、dstalk_chat、dstalk_file_read 等 C 函数，方便 C/C++、Python、Rust、C#、Go 嵌入。

AI

### 多 API 兼容

以 DeepSeek V4 为核心，同时兼容 OpenAI / Anthropic 风格接口，通过配置切换 base_url、api_key 与模型。

CLI

### 命令行优先

当前 CLI 使用 ANSI 终端 UI，支持自然语言对话、模型切换、文件读写、会话保存与恢复。

DLL

### 核心与前端解耦

CLI 和 GUI 不持有业务逻辑，统一调用 dstalk-core.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/dstalk-cli/dstalk-cli.exe，并传入 config.toml 或使用默认配置。

quickstart

    # 安装工具链
    cd tools
    setup.bat

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

    # 创建 config.toml
    [api]
    base_url = "https://api.deepseek.com/v1"
    api_key = "sk-xxxxxxxx"
    model = "deepseek-chat"

    # 运行 CLI
    build/dstalk-cli/dstalk-cli.exe config.toml

## CDLL + 多前端解耦架构

dstalk-core.dll 提供网络通讯、AI 接口适配、文件读写和会话管理；前端层只负责交互体验。GUI 目录已预留，根 CMake 当前先启用 CLI 与核心库。

architecture

    ┌─────────────────────────────────────────────┐
    │ Frontends                                    │
    │  dstalk-cli (ANSI UI)     dstalk-gui (SDL3)  │
    │  当前构建启用              路线图推进          │
    └───────────────┬─────────────────────────────┘
                    │ C ABI
    ┌───────────────▼─────────────────────────────┐
    │ dstalk-core.dll                              │
    │  API / Session / File I/O / AI Adapter       │
    └───────┬──────────────┬──────────────┬────────┘
            │              │              │
        Boost.JSON     HTTP Client     OpenSSL TLS
                      Boost.Asio / Beast

## 技术栈与工程现状

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

模块 | 当前技术 | 状态
--- | --- | ---
核心库 | C11 / C++20，dstalk-core.dll，公开 C ABI | 已启用
CLI 前端 | ANSI 终端 UI，调用 dstalk/dstalk_api.h | 已启用
GUI 前端 | SDL3 图形化前端 | 路线图
依赖管理 | Conan2，boost/1.86.0，openssl/3.4.1 | 已配置
构建系统 | CMake 3.21+，Ninja，LLVM/Clang | 已配置
许可证 | GNU GPL v3.0 | 已确认

## CLI 常用命令

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

命令 | 说明 | 示例
--- | --- | ---
/help | 显示帮助 | /help
/clear | 清空当前会话上下文 | /clear
/model <name> | 切换当前模型 | /model deepseek-chat
/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-core 通过 dstalk-core/include/dstalk/dstalk_api.h 暴露函数，前端和第三方宿主都通过同一组接口调用核心能力。

dstalk_api.h

    int  dstalk_init(const char* config_path);
    void dstalk_destroy(void);

    void dstalk_set_api_key(const char* api_key);
    void dstalk_set_base_url(const char* base_url);
    void dstalk_set_model(const char* model);

    int  dstalk_chat(const char* input, char** output);
    int  dstalk_chat_stream(const char* input, dstalk_stream_cb cb, void* userdata);
    void dstalk_free_string(char* str);

    void dstalk_session_clear(void);
    int  dstalk_session_save(const char* path);
    int  dstalk_session_load(const char* path);

    int  dstalk_file_read(const char* path, char** content);
    int  dstalk_file_write(const char* path, const char* content);

## 路线图

官网按 dstalk 当前 README 的阶段说明呈现，避免把规划功能误写成已完成能力。

阶段 | 内容 | 状态
--- | --- | ---
Phase 1 | 项目骨架、CMake 构建、DLL 导出、前端主循环 | 当前阶段
Phase 2 | HTTPS 网络层、DeepSeek API 对接、基本对话 | 推进中
Phase 3 | 流式输出、多轮会话、文件读写工具、CLI 体验对齐 | 计划中
Phase 4 | SDL3 GUI 完善、插件系统、LSP 集成 | 计划中

## 欢迎开源贡献者

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

PR

### 提交代码改进

可以从构建脚本、错误处理、CLI 交互、流式输出、文件工具和跨平台兼容性开始。

DOC

### 完善文档示例

欢迎补充安装说明、配置模板、API 调用示例和真实使用场景，降低新用户上手成本。

IDEA

### 参与路线图讨论

如果你关注 SDL3 GUI、插件系统、LSP 集成或多模型适配，欢迎提出设计建议和 issue。

前往源码仓库 提交 Issue

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

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

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