零 Node.js 运行时
核心以 C11 / C++20 构建,目标是毫秒级启动和更低内存占用,适合终端长期交互。
基于 DeepSeek V4 大模型、兼容 OpenAI / Anthropic API 的 AI 编程 CLI。核心采用 C11 / C++20 编写,以 dstalk-core.dll 作为插件宿主暴露稳定 C ABI,9 个功能插件 (AI、网络、LSP、会话、文件、工具等) 编译为独立 DLL,通过统一接口接入 CLI、SDL3 GUI 与第三方宿主。
$ build/dstalk-cli/dstalk-cli.exe config.toml
dstalk v0.1.0 | DeepSeek V4 | /help 查看帮助
> 帮我解释 dstalk-core 的职责
思考中...
AI: dstalk-core 是插件宿主,负责插件加载、服务注册、
事件总线和配置管理;AI、网络、会话、LSP、文件 IO
等能力都由独立插件提供,前端只处理输入与渲染。
> /file read dstalk-core/include/dstalk/dstalk_api.h
--- dstalk-core/include/dstalk/dstalk_api.h ---
dstalk 对标 Claude Code、OpenCode、KiloCode,但选择系统级实现和插件宿主架构,重点优化启动速度、运行时依赖、可嵌入能力和长期驻留体验。
核心以 C11 / C++20 构建,目标是毫秒级启动和更低内存占用,适合终端长期交互。
公开 dstalk_init、dstalk_chat、dstalk_file_read 等 C 函数,方便 C/C++、Python、Rust、C#、Go 嵌入。
内置 DeepSeek 与 Anthropic 两个 AI 插件,兼容 OpenAI 风格接口;通过 config.toml 中的 ai.provider 一键切换。
dstalk-cli 提供 ANSI 终端 UI,dstalk-gui 基于 SDL3 跨平台窗口,共享同一组核心能力。
核心仅做插件加载、服务注册、事件总线和配置管理;AI、网络、LSP、会话等能力均为独立 DLL,可以替换或扩展。
项目采用 GNU GPL v3.0,附带示例插件、单元测试与教程文档,适合学习、二次开发和本地工作流定制。
dstalk 已提供自动工具链脚本和一键构建脚本。API Key 请只保存在本地 config.toml 或安全的环境中,不要提交到仓库。
进入 tools 目录运行 setup.bat,下载 CMake、Ninja、LLVM/Clang、Conan2。
运行 build.bat,完成 Conan 依赖、CMake 配置和 Ninja 编译。
使用 build/dstalk-cli/dstalk-cli.exe,并传入 config.toml 或使用默认配置。
# 安装工具链
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
dstalk-core.dll 作为插件宿主,负责插件加载、服务注册、事件总线和配置管理;AI、网络、LSP、会话、文件 IO、工具等 9 个功能插件编译为独立 DLL,前端只通过 C ABI 触达核心能力。GUI 通过 CMake 选项 DSTALK_BUILD_GUI 启用。
┌─────────────────────────────────────────────────────┐
│ Frontends │
│ dstalk-cli (ANSI UI) dstalk-gui (SDL3) │
└───────────────────────┬─────────────────────────────┘
│ C ABI
┌───────────────────────▼─────────────────────────────┐
│ dstalk-core.dll — 插件宿主 │
│ 插件加载 · 服务注册 · 事件总线 · 配置管理 │
├───────────────┬───────────────┬─────────────────────┤
│ deepseek (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_api.h | 已启用 |
| GUI 前端 | SDL3 图形化前端,CMake 选项 DSTALK_BUILD_GUI 启用 | 已就位 |
| 插件 | 9 个功能插件 (deepseek · anthropic · network · lsp · session · context · config · file-io · tools),独立 DLL | 已启用 |
| 测试 | 8 个测试文件覆盖插件宿主、事件总线、服务注册、插件加载及各 AI 插件,CTest 集成 | 已启用 |
| 文档 | docs/tutorial、docs/reference (commands、plugin-abi) | 已发布 |
| 示例 | examples/example_plugin 展示插件开发模板 | 已提供 |
| 依赖管理 | Conan2,boost/1.86.0,openssl/3.4.1 | 已配置 |
| 构建系统 | CMake 3.21+,Ninja,LLVM/Clang,CMakePresets | 已配置 |
| 许可证 | GNU GPL v3.0 | 已确认 |
除了直接输入自然语言问题,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 |
dstalk-core 通过 dstalk-core/include/dstalk/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);
插件宿主、CLI、SDL3 GUI、9 个核心插件、测试与文档已经就位;后续聚焦在能力深化与生态扩展。
| 阶段 | 内容 | 状态 |
|---|---|---|
| 骨架 | 项目骨架、CMake/Ninja 构建、Conan 依赖、DLL 导出、前端主循环 | 已完成 |
| 插件宿主 | 插件加载、服务注册、事件总线、配置管理;9 个核心插件 (deepseek · anthropic · network · lsp · session · context · config · file-io · tools) | 已完成 |
| 对话能力 | HTTPS 网络层、DeepSeek / Anthropic API 适配、流式输出、多轮会话、文件读写工具 | 已可用 |
| GUI 前端 | SDL3 图形化窗口 (DSTALK_BUILD_GUI),与 CLI 共享插件宿主 | 推进中 |
| 下一阶段 | LSP 集成深化、第三方插件 SDK、跨平台分发与文档持续完善 | 计划中 |
dstalk 是开放项目,欢迎对 C/C++、命令行体验、AI API 适配、GUI、文档和测试感兴趣的开发者一起参与。
核心、CLI、SDL3 GUI 与 9 个插件 (AI、网络、LSP、会话、文件、工具等) 都欢迎补丁,跨平台兼容与构建脚本也有空间。
参考 examples/example_plugin 和 docs/reference/plugin-abi.md,通过 C ABI 注册新服务,把自己的模型、工具或数据源接入 dstalk。
docs/tutorial、docs/reference 已经成形,欢迎补充教程、命令速查、插件 ABI 说明,以及 host_api_test / smoke_test 的覆盖面。
dstalk 的核心价值不只是一个 CLI,而是一个可被多前端复用的本地 AI 编程核心。dstalk.top 会持续同步项目进展、构建方式和可用能力。