Files
dstalk.top/index.html
XiuChengWu 431ef92284 Update meta descriptions and enhance documentation for dstalk project
- Revised meta description to include multi-endpoint routing and decoupled frontends.
- Updated Open Graph description to reflect the addition of endpoint management in plugins.
- Changed lead paragraph to highlight the new ten functional plugins and their capabilities.
- Adjusted project statistics to indicate the inclusion of Web frontend and endpoint management plugin.
- Enhanced architecture section to clarify the role of ten functional plugins and the new web frontend.
- Updated command list to include new commands for multi-endpoint management and file operations.
- Revised public C API documentation to reflect the addition of the ai_endpoint_mgr service.
- Expanded roadmap to include the Boost.Beast Web frontend and multi-endpoint capabilities.
- Improved contribution guidelines to reflect the current state of the project and encourage community involvement.
2026-06-03 21:42:48 +08:00

485 lines
37 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="dstalk 是兼容 OpenAI 风格接口与 Anthropic API 的 C/C++ AI 编程 CLI采用 dstalk_core.dll 插件宿主、多 endpoint 路由和 CLI/GUI/Web 多前端解耦架构。">
<meta name="theme-color" content="#0b1020">
<meta property="og:title" content="dstalk — C/C++ AI 编程 CLI">
<meta property="og:description" content="OpenAI-compatible / Anthropic 驱动C ABI 可嵌入dstalk_core.dll 作为插件宿主10 个功能插件覆盖 AI、endpoint 管理、网络、会话、LSP 与工具。">
<meta property="og:type" content="website">
<link rel="alternate" hreflang="zh-CN" href="https://dstalk.top/">
<link rel="alternate" hreflang="en" href="https://dstalk.top/en.html">
<link rel="icon" href="data:image/svg+xml,%3Csvg%20id%3D%22b8933227-ee10-4b8b-aa3f-4d0252add8f0%22%20data-name%3D%22%E5%9B%BE%E5%B1%82%201%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20467.49%20156.25%22%3E%3Cdefs%3E%3Cstyle%3E.b2b6d799-07c9-401d-bf7c-05fa2b138761%7Bfill%3A%23036eb8%3B%7D.a1ce0134-56a6-4bb1-8507-28f21bc08e8e%7Bfill%3A%23fff%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M71.66%2C440.73S69.51%2C430%2C69.83%2C423.44s1.23-16.87%2C7.9-25.76%2C8.76-10.53%2C15-14.84%2C14.79-8.38%2C23.65-8.86%2C16.53-.14%2C23.22%2C2.3%2C12.77%2C5.54%2C17.88%2C14.77S162%2C406.69%2C162%2C406.69s.72%2C12.93-1.73%2C19.8-3.74%2C7.61-5.61%2C10.53-9.5%2C8.69-10.35%2C10.8-1%2C13.92-3.26%2C13.77-6.87-8.47-10.53-10.07-9.53-.3-14.58-.91a34.86%2C34.86%2C0%2C0%2C1-12-3.37c-3.86-1.83-7.08-3.8-9.17-6.39s-3.74-4.78-5.95-7.78-2.56-4.19-3.32-7.75a37.21%2C37.21%2C0%2C0%2C1-1-7.71%2C23.43%2C23.43%2C0%2C0%2C1%2C.71-7.27c.49-1.9%2C2.34-6.88%2C2.34-6.88.17%2C0%2C3.57-8.11%2C3.24-8.88s-3.81%2C3.1-5.73%2C6.05-4.78%2C7-6%2C10.78-2.54%2C6.74-2.68%2C12%2C0%2C12.58%2C2%2C17.56A41.48%2C41.48%2C0%2C0%2C0%2C86.9%2C454.2a41.46%2C41.46%2C0%2C0%2C0%2C12.34%2C7.95c3.65%2C1.35%2C6.05%2C2.48%2C10.2%2C3.12s5.28.68%2C9%2C1%2C10.56.25%2C10.56.25l12.79%2C13.25a4.08%2C4.08%2C0%2C0%2C0%2C2.86%2C1.5c1.7%2C0%2C2.49-2%2C2.49-2L153.05%2C460s7.18-4.13%2C10.34-7.58%2C5.24-4.95%2C9.17-12.29%2C6.05-19.23%2C6-19.6c.19-.78%2C0-34.45%2C0-34.45l-.35-53.83a23.52%2C23.52%2C0%2C0%2C0-1.89-3.67%2C14.51%2C14.51%2C0%2C0%2C0-4.35-3%2C8.32%2C8.32%2C0%2C0%2C0-6%2C0%2C8.49%2C8.49%2C0%2C0%2C0-3.32%2C2.63%2C45.13%2C45.13%2C0%2C0%2C0-2.15%2C4.2l.27%2C36.93s-2.22-2.91-8.85-5.91a55%2C55%2C0%2C0%2C0-19.51-5.14%2C77.52%2C77.52%2C0%2C0%2C0-22.39.9%2C60.73%2C60.73%2C0%2C0%2C0-14.38%2C4.36%2C69.24%2C69.24%2C0%2C0%2C0-11.38%2C6.76%2C75.69%2C75.69%2C0%2C0%2C0-9.54%2C9.19c-2%2C2.49-5.41%2C6.3-8.46%2C15.93s-2.35%2C18.16-1.76%2C23.81.64%2C5.69%2C2.42%2C11.63A32.73%2C32.73%2C0%2C0%2C0%2C71.66%2C440.73Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Ccircle%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20cx%3D%2245.84%22%20cy%3D%2289.15%22%20r%3D%228.17%22%2F%3E%3Ccircle%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20cx%3D%2270.14%22%20cy%3D%2289.15%22%20r%3D%228.17%22%2F%3E%3Cpath%20class%3D%22a1ce0134-56a6-4bb1-8507-28f21bc08e8e%22%20d%3D%22M423.12%2C414.19%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M210.43%2C418c0-19.47%2C12.16-31.23%2C24.69-31.23%2C6.57%2C0%2C10.58%2C2.45%2C14.6%2C6.21l-.64-9V363.69h17.64v84.07H252.33l-1.27-5.9h-.44c-4.2%2C4.2-10.09%2C7.34-15.84%2C7.34C220%2C449.2%2C210.43%2C437.45%2C210.43%2C418Zm38.65%2C11.42V405a14.45%2C14.45%2C0%2C0%2C0-9.85-3.76c-5.71%2C0-10.72%2C5.27-10.72%2C16.59%2C0%2C11.69%2C4%2C16.95%2C10.86%2C16.95C243.13%2C434.76%2C246.16%2C433.34%2C249.08%2C429.43Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M277%2C440.88l7.94-11c5.39%2C4.08%2C10.37%2C6.26%2C15.35%2C6.26%2C5.25%2C0%2C7.52-2%2C7.52-5.12%2C0-3.93-5.9-5.7-12-8.1-7.3-2.83-15.76-7.67-15.76-17.51%2C0-11.08%2C9-18.64%2C22.75-18.64%2C9.12%2C0%2C15.91%2C3.69%2C21%2C7.54l-7.89%2C10.59c-4.24-3.07-8.42-5.08-12.54-5.08-4.56%2C0-6.8%2C1.79-6.8%2C4.76%2C0%2C3.79%2C5.57%2C5.25%2C11.74%2C7.49%2C7.54%2C2.79%2C16%2C7%2C16%2C17.92s-8.5%2C19.2-24.45%2C19.2A38.65%2C38.65%2C0%2C0%2C1%2C277%2C440.88Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M335.4%2C426.11V402.06h-8.13V388.9l9.12-.68%2C2.06-15.81H353v15.81h14.27v13.84H353V425.9c0%2C6.75%2C3.06%2C9.46%2C7.71%2C9.46a17.85%2C17.85%2C0%2C0%2C0%2C5.66-1.13L369.19%2C447A42.05%2C42.05%2C0%2C0%2C1%2C356%2C449.2C341.25%2C449.2%2C335.4%2C439.91%2C335.4%2C426.11Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M373.84%2C431.25c0-12.55%2C10-19.34%2C33.52-21.82-.35-5.21-2.95-8.61-9.41-8.61-5%2C0-10%2C2.1-15.75%2C5.38l-6.27-11.58c7.55-4.62%2C16.06-7.84%2C25.42-7.84%2C15.22%2C0%2C23.65%2C8.7%2C23.65%2C26.94v34H410.61l-1.27-6.1h-.44c-5%2C4.4-10.63%2C7.54-17.32%2C7.54C380.73%2C449.2%2C373.84%2C441.27%2C373.84%2C431.25Zm33.52-.79v-10.4c-12.54%2C1.69-16.63%2C5.28-16.63%2C9.78%2C0%2C3.84%2C2.64%2C5.71%2C6.83%2C5.71C401.55%2C435.55%2C404.23%2C433.58%2C407.36%2C430.46Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M439.81%2C429.26V363.69h17.64V430c0%2C3.78%2C1.75%2C5%2C3.19%2C5a7.68%2C7.68%2C0%2C0%2C0%2C2.16-.24l2.11%2C13a22.9%2C22.9%2C0%2C0%2C1-8.86%2C1.47C444%2C449.2%2C439.81%2C441.3%2C439.81%2C429.26Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3Cpath%20class%3D%22b2b6d799-07c9-401d-bf7c-05fa2b138761%22%20d%3D%22M474.13%2C363.69h17.25v48.16h.44l18.88-23.63h19.15L509%2C412.76l22.43%2C35H512.32l-13.39-23.22-7.55%2C8.56v14.66H474.13Z%22%20transform%3D%22translate%28-63.94%20-325.04%29%22%2F%3E%3C%2Fsvg%3E" type="image/svg+xml">
<title>dstalk — OpenAI-compatible / Anthropic AI 编程 CLI</title>
<style>
:root {
--bg:#070b15;
--card:#111827cc;
--panel:#0d1324;
--border:#263247;
--text:#dbe7ff;
--muted:#8ea2c4;
--subtle:#5f7396;
--cyan:#58a6ff;
--green:#39d98a;
--purple:#a78bfa;
--warning:#facc15;
--shadow:0 24px 80px rgba(0,0,0,.35);
}
* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
min-height:100vh;
background:
radial-gradient(circle at 10% 0%, rgba(88,166,255,.24), transparent 34rem),
radial-gradient(circle at 92% 6%, rgba(167,139,250,.18), transparent 30rem),
linear-gradient(180deg, #070b15 0%, #0a1020 48%, #070b15 100%);
color:var(--text);
font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
}
body::before {
content:"";
position:fixed;
inset:0;
pointer-events:none;
background-image:linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
background-size:48px 48px;
mask-image:linear-gradient(to bottom, #000, transparent 72%);
}
a { color:inherit; text-decoration:none; }
.container { width:min(1120px, calc(100% - 40px)); margin:0 auto; }
.nav {
position:sticky;
top:0;
z-index:10;
border-bottom:1px solid rgba(142,162,196,.16);
background:rgba(7,11,21,.74);
backdrop-filter:blur(18px);
}
.nav-inner { display:flex; align-items:center; justify-content:space-between; min-height:68px; gap:24px; }
.brand { display:flex; align-items:center; gap:10px; font-weight:800; letter-spacing:-.03em; }
.brand-mark {
display:block;
width:108px;
height:36px;
filter:drop-shadow(0 0 22px rgba(88,166,255,.28));
}
.nav-links { display:flex; align-items:center; gap:22px; color:var(--muted); font-size:.94rem; }
.nav-links a:hover, .footer a:hover { color:#fff; }
.hero { display:grid; grid-template-columns:minmax(0, 1.06fr) minmax(320px, .94fr); align-items:center; gap:52px; padding:84px 0 72px; }
.hero > *, .split > *, .terminal, .panel { min-width:0; }
.eyebrow {
display:inline-flex;
align-items:center;
gap:8px;
margin-bottom:18px;
padding:7px 12px;
border:1px solid rgba(88,166,255,.32);
border-radius:999px;
color:#b9d8ff;
background:rgba(88,166,255,.09);
font-size:.88rem;
}
.eyebrow::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--green); box-shadow:0 0 18px var(--green); }
h1 { max-width:760px; color:#fff; font-size:clamp(3.2rem, 8vw, 6.4rem); line-height:.95; letter-spacing:-.075em; }
h1 span { color:transparent; background:linear-gradient(135deg, var(--cyan), var(--green)); -webkit-background-clip:text; background-clip:text; }
h2 { color:#fff; font-size:clamp(1.8rem, 4vw, 2.7rem); line-height:1.1; letter-spacing:-.045em; }
h3 { color:#fff; }
.lead { max-width:720px; margin-top:24px; color:#b8c7e6; font-size:clamp(1.05rem, 2vw, 1.34rem); }
.actions { display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }
.btn {
display:inline-flex;
align-items:center;
justify-content:center;
min-height:46px;
padding:0 20px;
border-radius:12px;
border:1px solid transparent;
font-weight:700;
transition:transform .2s ease, border-color .2s ease, background .2s ease;
}
.btn:hover { transform:translateY(-2px); }
.btn-primary { color:#06111f; background:linear-gradient(135deg, var(--cyan), var(--green)); box-shadow:0 16px 40px rgba(88,166,255,.22); }
.btn-secondary { color:#d7e7ff; background:rgba(17,24,39,.72); border-color:rgba(142,162,196,.3); }
.badges, .stats { display:flex; flex-wrap:wrap; gap:10px; margin-top:30px; }
.badge, .stat { padding:7px 12px; border-radius:999px; color:#cfe1ff; background:rgba(17,24,39,.72); border:1px solid rgba(142,162,196,.22); font-size:.88rem; }
.stat { display:flex; gap:7px; border-radius:14px; }
.stat strong { color:#fff; }
.terminal {
position:relative;
overflow:hidden;
border:1px solid rgba(88,166,255,.28);
border-radius:22px;
background:linear-gradient(180deg, rgba(17,24,39,.94), rgba(8,13,25,.96));
box-shadow:var(--shadow);
}
.terminal::before {
content:"";
position:absolute;
inset:-1px;
pointer-events:none;
background:linear-gradient(135deg, rgba(88,166,255,.24), transparent 42%, rgba(57,217,138,.16));
}
.terminal-top { position:relative; display:flex; align-items:center; gap:8px; padding:16px 18px; border-bottom:1px solid rgba(142,162,196,.18); }
.dot { width:11px; height:11px; border-radius:50%; background:#ff5f56; }
.dot:nth-child(2) { background:#ffbd2e; }
.dot:nth-child(3) { background:#27c93f; }
.terminal-title { margin-left:8px; color:var(--subtle); font-size:.84rem; }
pre { position:relative; overflow-x:auto; padding:24px; color:#cfe1ff; font-size:.92rem; line-height:1.8; }
code { font-family:"Cascadia Code","Fira Code","JetBrains Mono",Consolas,monospace; }
.cmd { color:var(--green); }
.dim { color:var(--subtle); }
.section { padding:50px 0; }
.section-head { max-width:760px; margin-bottom:26px; }
.section-head p { margin-top:12px; color:var(--muted); font-size:1.04rem; }
.cards { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:16px; }
.card {
position:relative;
overflow:hidden;
min-height:178px;
padding:24px;
border:1px solid rgba(142,162,196,.2);
border-radius:18px;
background:linear-gradient(180deg, rgba(17,24,39,.86), rgba(13,19,36,.78));
}
.card::after {
content:"";
position:absolute;
right:-36px;
top:-36px;
width:110px;
height:110px;
border-radius:50%;
background:rgba(88,166,255,.12);
}
.card h3 { margin-bottom:10px; font-size:1.08rem; }
.card p { color:var(--muted); font-size:.95rem; }
.icon { display:grid; place-items:center; width:40px; height:40px; margin-bottom:18px; border-radius:12px; color:#06111f; background:linear-gradient(135deg, var(--cyan), var(--green)); font-weight:900; }
.split { display:grid; grid-template-columns:.92fr 1.08fr; gap:28px; align-items:start; }
.panel { overflow:hidden; border:1px solid rgba(142,162,196,.2); border-radius:20px; background:rgba(17,24,39,.64); box-shadow:var(--shadow); }
.panel-pad { padding:24px; }
.steps { display:grid; gap:14px; }
.step { display:flex; gap:14px; padding:16px; border:1px solid rgba(142,162,196,.18); border-radius:14px; background:rgba(7,11,21,.34); }
.step-num { flex:0 0 auto; display:grid; place-items:center; width:28px; height:28px; border-radius:9px; color:#06111f; background:var(--green); font-weight:800; font-size:.86rem; }
.step p { color:var(--muted); font-size:.92rem; }
.table-wrap { overflow-x:auto; }
table { width:100%; min-width:720px; border-collapse:collapse; }
th,td { padding:15px 18px; text-align:left; border-bottom:1px solid rgba(142,162,196,.16); vertical-align:top; }
th { color:#fff; font-weight:700; background:rgba(88,166,255,.08); }
td { color:var(--muted); font-size:.95rem; }
tr:last-child td { border-bottom:0; }
.ok { color:var(--green); font-weight:700; }
.todo { color:var(--warning); font-weight:700; }
.architecture { color:#cfe1ff; }
.cta { margin-top:54px; margin-bottom:24px; padding:34px; border:1px solid rgba(88,166,255,.28); border-radius:24px; background:linear-gradient(135deg, rgba(88,166,255,.16), rgba(57,217,138,.09)); text-align:center; }
.cta p { max-width:720px; margin:12px auto 0; color:var(--muted); }
.footer { display:flex; justify-content:space-between; gap:20px; padding:32px 0 44px; color:var(--subtle); font-size:.9rem; border-top:1px solid rgba(142,162,196,.16); }
.footer-links { display:flex; gap:18px; flex-wrap:wrap; }
@media (max-width: 860px) {
.nav-links { display:none; }
.hero, .split { grid-template-columns:1fr; }
.hero { padding-top:56px; }
.cards { grid-template-columns:1fr; }
.footer { flex-direction:column; }
}
@media (max-width: 560px) {
.container { width:min(100% - 28px, 1120px); }
.actions, .footer-links { flex-direction:column; }
.btn { width:100%; }
pre { padding:18px; font-size:.82rem; }
th,td { padding:12px; }
.cta { padding:24px 18px; }
}
</style>
</head>
<body>
<nav class="nav" aria-label="主导航">
<div class="container nav-inner">
<a class="brand" href="#top" aria-label="dstalk 首页"><svg class="brand-mark" aria-hidden="true" focusable="false" id="b8933227-ee10-4b8b-aa3f-4d0252add8f0" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 467.49 156.25"><defs><style>.b2b6d799-07c9-401d-bf7c-05fa2b138761{fill:#036eb8;}.a1ce0134-56a6-4bb1-8507-28f21bc08e8e{fill:#fff;}</style></defs><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M71.66,440.73S69.51,430,69.83,423.44s1.23-16.87,7.9-25.76,8.76-10.53,15-14.84,14.79-8.38,23.65-8.86,16.53-.14,23.22,2.3,12.77,5.54,17.88,14.77S162,406.69,162,406.69s.72,12.93-1.73,19.8-3.74,7.61-5.61,10.53-9.5,8.69-10.35,10.8-1,13.92-3.26,13.77-6.87-8.47-10.53-10.07-9.53-.3-14.58-.91a34.86,34.86,0,0,1-12-3.37c-3.86-1.83-7.08-3.8-9.17-6.39s-3.74-4.78-5.95-7.78-2.56-4.19-3.32-7.75a37.21,37.21,0,0,1-1-7.71,23.43,23.43,0,0,1,.71-7.27c.49-1.9,2.34-6.88,2.34-6.88.17,0,3.57-8.11,3.24-8.88s-3.81,3.1-5.73,6.05-4.78,7-6,10.78-2.54,6.74-2.68,12,0,12.58,2,17.56A41.48,41.48,0,0,0,86.9,454.2a41.46,41.46,0,0,0,12.34,7.95c3.65,1.35,6.05,2.48,10.2,3.12s5.28.68,9,1,10.56.25,10.56.25l12.79,13.25a4.08,4.08,0,0,0,2.86,1.5c1.7,0,2.49-2,2.49-2L153.05,460s7.18-4.13,10.34-7.58,5.24-4.95,9.17-12.29,6.05-19.23,6-19.6c.19-.78,0-34.45,0-34.45l-.35-53.83a23.52,23.52,0,0,0-1.89-3.67,14.51,14.51,0,0,0-4.35-3,8.32,8.32,0,0,0-6,0,8.49,8.49,0,0,0-3.32,2.63,45.13,45.13,0,0,0-2.15,4.2l.27,36.93s-2.22-2.91-8.85-5.91a55,55,0,0,0-19.51-5.14,77.52,77.52,0,0,0-22.39.9,60.73,60.73,0,0,0-14.38,4.36,69.24,69.24,0,0,0-11.38,6.76,75.69,75.69,0,0,0-9.54,9.19c-2,2.49-5.41,6.3-8.46,15.93s-2.35,18.16-1.76,23.81.64,5.69,2.42,11.63A32.73,32.73,0,0,0,71.66,440.73Z" transform="translate(-63.94 -325.04)"/><circle class="b2b6d799-07c9-401d-bf7c-05fa2b138761" cx="45.84" cy="89.15" r="8.17"/><circle class="b2b6d799-07c9-401d-bf7c-05fa2b138761" cx="70.14" cy="89.15" r="8.17"/><path class="a1ce0134-56a6-4bb1-8507-28f21bc08e8e" d="M423.12,414.19" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M210.43,418c0-19.47,12.16-31.23,24.69-31.23,6.57,0,10.58,2.45,14.6,6.21l-.64-9V363.69h17.64v84.07H252.33l-1.27-5.9h-.44c-4.2,4.2-10.09,7.34-15.84,7.34C220,449.2,210.43,437.45,210.43,418Zm38.65,11.42V405a14.45,14.45,0,0,0-9.85-3.76c-5.71,0-10.72,5.27-10.72,16.59,0,11.69,4,16.95,10.86,16.95C243.13,434.76,246.16,433.34,249.08,429.43Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M277,440.88l7.94-11c5.39,4.08,10.37,6.26,15.35,6.26,5.25,0,7.52-2,7.52-5.12,0-3.93-5.9-5.7-12-8.1-7.3-2.83-15.76-7.67-15.76-17.51,0-11.08,9-18.64,22.75-18.64,9.12,0,15.91,3.69,21,7.54l-7.89,10.59c-4.24-3.07-8.42-5.08-12.54-5.08-4.56,0-6.8,1.79-6.8,4.76,0,3.79,5.57,5.25,11.74,7.49,7.54,2.79,16,7,16,17.92s-8.5,19.2-24.45,19.2A38.65,38.65,0,0,1,277,440.88Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M335.4,426.11V402.06h-8.13V388.9l9.12-.68,2.06-15.81H353v15.81h14.27v13.84H353V425.9c0,6.75,3.06,9.46,7.71,9.46a17.85,17.85,0,0,0,5.66-1.13L369.19,447A42.05,42.05,0,0,1,356,449.2C341.25,449.2,335.4,439.91,335.4,426.11Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M373.84,431.25c0-12.55,10-19.34,33.52-21.82-.35-5.21-2.95-8.61-9.41-8.61-5,0-10,2.1-15.75,5.38l-6.27-11.58c7.55-4.62,16.06-7.84,25.42-7.84,15.22,0,23.65,8.7,23.65,26.94v34H410.61l-1.27-6.1h-.44c-5,4.4-10.63,7.54-17.32,7.54C380.73,449.2,373.84,441.27,373.84,431.25Zm33.52-.79v-10.4c-12.54,1.69-16.63,5.28-16.63,9.78,0,3.84,2.64,5.71,6.83,5.71C401.55,435.55,404.23,433.58,407.36,430.46Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M439.81,429.26V363.69h17.64V430c0,3.78,1.75,5,3.19,5a7.68,7.68,0,0,0,2.16-.24l2.11,13a22.9,22.9,0,0,1-8.86,1.47C444,449.2,439.81,441.3,439.81,429.26Z" transform="translate(-63.94 -325.04)"/><path class="b2b6d799-07c9-401d-bf7c-05fa2b138761" d="M474.13,363.69h17.25v48.16h.44l18.88-23.63h19.15L509,412.76l22.43,35H512.32l-13.39-23.22-7.55,8.56v14.66H474.13Z" transform="translate(-63.94 -325.04)"/></svg></a>
<div class="nav-links">
<a href="#features">特性</a>
<a href="#quickstart">快速开始</a>
<a href="#architecture">架构</a>
<a href="#commands">命令</a>
<a href="#roadmap">路线图</a>
<a href="#contribute">贡献</a>
<a href="en.html" lang="en">English</a>
</div>
</div>
</nav>
<header id="top" class="container hero">
<div>
<div class="eyebrow">dstalk.top 是 dstalk 项目的官方网站</div>
<h1><span>ds</span>talk</h1>
<p class="lead">兼容 OpenAI 风格接口与 Anthropic API 的 AI 编程 CLI。核心采用 C11 / C++20 编写,以 dstalk_core.dll 作为插件宿主暴露稳定 C ABI10 个功能插件AI、endpoint 管理、网络、LSP、会话、文件、工具等编译为独立 DLL通过统一接口接入 CLI、SDL3 GUI、Boost.Beast Web 前端与第三方宿主。</p>
<div class="actions">
<a class="btn btn-primary" href="#quickstart">开始使用</a>
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk">查看源代码</a>
</div>
<div class="badges" aria-label="项目标签">
<span class="badge">v0.1.0</span>
<span class="badge">C11 / C++20</span>
<span class="badge">插件宿主 + C ABI</span>
<span class="badge">10 个插件</span>
<span class="badge">GPL v3.0</span>
</div>
<div class="stats" aria-label="项目状态">
<span class="stat"><strong>核心</strong>dstalk_core.dll (插件宿主)</span>
<span class="stat"><strong>前端</strong>CLI + SDL3 GUI + Web</span>
<span class="stat"><strong>插件</strong>openai · anthropic · endpoint_mgr · network · lsp · session · context · config · file-io · tools</span>
</div>
</div>
<div class="terminal" aria-label="dstalk 命令行示例">
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">dstalk-cli</span></div>
<pre><code><span class="cmd">$</span> build/bin/dstalk_cli.exe config.toml
dstalk v0.1.0 | OpenAI-compatible / Anthropic | /help 查看帮助
&gt; 帮我解释 dstalk-core 的职责
<span class="dim">思考中...</span>
AI: dstalk-core 是插件宿主,负责插件加载、服务注册、
事件总线和配置管理AI、网络、会话、LSP、文件 IO
等能力都由独立插件提供,前端只处理输入与渲染。
&gt; /file read dstalk-core/include/dstalk/dstalk_host.h
<span class="dim">--- dstalk-core/include/dstalk/dstalk_host.h ---</span></code></pre>
</div>
</header>
<main>
<section id="features" class="container section">
<div class="section-head">
<h2>为什么 dstalk 用 C/C++ 重新做 AI 编程助手?</h2>
<p>dstalk 对标 Claude Code、OpenCode、KiloCode但选择系统级实现和插件宿主架构重点优化启动速度、运行时依赖、可嵌入能力和长期驻留体验。</p>
</div>
<div class="cards">
<article class="card"><div class="icon">C</div><h3>零 Node.js 运行时</h3><p>核心以 C11 / C++20 构建,目标是毫秒级启动和更低内存占用,适合终端长期交互。</p></article>
<article class="card"><div class="icon">ABI</div><h3>稳定 C ABI</h3><p>公开 dstalk_init、dstalk_service_query 等宿主函数和 9 种服务 vtableAI、endpoint 管理、会话、HTTP、文件、LSP 等),方便 C/C++、Python、Rust、C#、Go 嵌入。</p></article>
<article class="card"><div class="icon">AI</div><h3>多 endpoint 路由</h3><p>内置 OpenAI-compatible 与 Anthropic 两个 AI 插件,并通过 ai_endpoint_mgr 管理多个命名 endpoint前端优先按 active endpoint 路由,/status 可查看脱敏状态。</p></article>
<article class="card"><div class="icon">CLI</div><h3>CLI、GUI 与 Web 三前端</h3><p>dstalk-cli 提供 ANSI 终端 UIdstalk-gui 基于 SDL3 跨平台窗口dstalk-web 基于 Boost.Beast + SSE三者共享同一组核心能力。</p></article>
<article class="card"><div class="icon">PLG</div><h3>插件化宿主</h3><p>核心仅做插件加载、服务注册、事件总线和配置管理AI、endpoint 管理、网络、LSP、会话等能力均为独立 DLL可以替换或扩展。</p></article>
<article class="card"><div class="icon">OSS</div><h3>开源可改造</h3><p>项目采用 GNU GPL v3.0,附带示例插件、单元测试与教程文档,适合学习、二次开发和本地工作流定制。</p></article>
</div>
</section>
<section id="quickstart" class="container section">
<div class="split">
<div class="section-head">
<h2>快速开始</h2>
<p>dstalk 已提供自动工具链脚本和一键构建脚本。API Key 请只保存在本地 config.toml 或安全的环境中,不要提交到仓库。</p>
<div class="steps">
<div class="step"><div class="step-num">1</div><div><h3>安装本地工具链</h3><p>进入 tools 目录运行 setup.bat下载 CMake、Ninja、LLVM/Clang、Conan2。</p></div></div>
<div class="step"><div class="step-num">2</div><div><h3>构建 dstalk</h3><p>运行 build.bat完成 Conan 依赖、CMake 配置和 Ninja 编译。</p></div></div>
<div class="step"><div class="step-num">3</div><div><h3>启动 CLI</h3><p>使用 build/bin/dstalk_cli.exe并传入 config.toml 或使用默认配置。</p></div></div>
</div>
</div>
<div class="terminal">
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">quickstart</span></div>
<pre><code><span class="cmd"># 安装工具链</span>
cd tools
setup.bat
<span class="cmd"># 回到项目根目录并编译</span>
cd ..
build.bat
<span class="cmd"># 单 Provider 模式 / legacy single provider</span>
ai.provider = "ai_openai"
api.base_url = "https://api.openai.com/v1"
api.api_key = "sk-xxxxxxxx"
api.model = "gpt-4o"
<span class="cmd"># 多 Endpoint 模式 / multi-endpoint</span>
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"
<span class="cmd"># 运行 CLI</span>
build/bin/dstalk_cli.exe config.toml</code></pre>
</div>
</div>
</section>
<section id="architecture" class="container section">
<div class="section-head">
<h2>插件宿主 + 多前端解耦架构</h2>
<p>dstalk_core.dll 作为插件宿主负责插件加载、服务注册、事件总线和配置管理AI、endpoint 管理、网络、LSP、会话、文件 IO、工具等 10 个功能插件编译为独立 DLL前端只通过 C ABI 触达核心能力。GUI 与 Web 分别通过 CMake 选项 DSTALK_BUILD_GUI / DSTALK_BUILD_WEB 启用。</p>
</div>
<div class="terminal architecture">
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">architecture</span></div>
<pre><code>┌─────────────────────────────────────────────────────┐
│ 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</code></pre>
</div>
</section>
<section class="container section">
<div class="section-head">
<h2>技术栈与工程现状</h2>
<p>以下内容根据 dstalk 的 CMake、Conan 配置和公开头文件整理。</p>
</div>
<div class="panel table-wrap">
<table>
<tr><th>模块</th><th>当前技术</th><th>状态</th></tr>
<tr><td>核心库</td><td>C11 / C++20dstalk_core.dll插件宿主公开 C ABI</td><td><span class="ok">已启用</span></td></tr>
<tr><td>CLI 前端</td><td>ANSI 终端 UI调用 dstalk/dstalk_host.h</td><td><span class="ok">已启用</span></td></tr>
<tr><td>GUI 前端</td><td>SDL3 图形化前端CMake 选项 DSTALK_BUILD_GUI 启用</td><td><span class="todo">可选构建</span></td></tr>
<tr><td>Web 前端</td><td>Boost.Beast HTTP + SSE 流式前端CMake 选项 DSTALK_BUILD_WEB 启用</td><td><span class="todo">可选构建</span></td></tr>
<tr><td>前端公共库</td><td>dstalk_frontend_common 复用配置发现、初始化和服务查询逻辑</td><td><span class="ok">已启用</span></td></tr>
<tr><td>插件</td><td>10 个功能插件openai · anthropic · endpoint_mgr · network · lsp · session · context · config · file-io · tools独立 DLL</td><td><span class="ok">已启用</span></td></tr>
<tr><td>测试</td><td>11 个测试目标覆盖插件宿主、事件总线、服务注册、插件加载、endpoint manager 及各 AI 插件CTest 集成</td><td><span class="ok">已启用</span></td></tr>
<tr><td>文档</td><td>docs/tutorial、docs/referencecommands、config、plugin-abi、docs/explanationarchitecture、plugin-lifecycle、security-logging</td><td><span class="ok">已发布</span></td></tr>
<tr><td>示例</td><td>examples/example_plugin 展示插件开发模板</td><td><span class="ok">已提供</span></td></tr>
<tr><td>依赖管理</td><td>Conan2boost/1.86.0openssl/3.4.1</td><td><span class="ok">已配置</span></td></tr>
<tr><td>构建系统</td><td>CMake 3.21+NinjaLLVM/ClangCMakePresets</td><td><span class="ok">已配置</span></td></tr>
<tr><td>许可证</td><td>GNU GPL v3.0</td><td><span class="ok">已确认</span></td></tr>
</table>
</div>
</section>
<section id="commands" class="container section">
<div class="section-head">
<h2>CLI 常用命令</h2>
<p>除了直接输入自然语言问题dstalk-cli 还提供文件、模型和会话相关命令。</p>
</div>
<div class="panel table-wrap">
<table>
<tr><th>命令</th><th>说明</th><th>示例</th></tr>
<tr><td>/help / /h</td><td>显示命令列表</td><td>/help</td></tr>
<tr><td>/quit / /q</td><td>退出程序</td><td>/quit</td></tr>
<tr><td>/clear</td><td>清空当前会话上下文</td><td>/clear</td></tr>
<tr><td>/context</td><td>显示当前 Token 数和消息条数</td><td>/context</td></tr>
<tr><td>/status</td><td>显示当前运行状态(脱敏,不打印完整 API Key</td><td>/status</td></tr>
<tr><td>/model &lt;name&gt;</td><td>切换当前模型;多 endpoint 模式下作用于 active endpoint</td><td>/model gpt-4o</td></tr>
<tr><td>/file list [path]</td><td>列出目录内容,不填 path 列出当前目录</td><td>/file list src/</td></tr>
<tr><td>/file show &lt;path&gt;</td><td>查看文件内容</td><td>/file show README.md</td></tr>
<tr><td>/file read &lt;path&gt;</td><td>读取文件内容(同 /file show</td><td>/file read config.toml</td></tr>
<tr><td>/file write &lt;path&gt; &lt;content&gt;</td><td>写入文件内容</td><td>/file write note.txt hello</td></tr>
<tr><td>/save &lt;path&gt; / /load &lt;path&gt;</td><td>保存或恢复会话</td><td>/save session.json</td></tr>
</table>
</div>
</section>
<section id="api" class="container section">
<div class="section-head">
<h2>公开 C API</h2>
<p>dstalk 通过 4 个公开头文件暴露能力dstalk_host.h 管理宿主生命周期与插件dstalk_services.h 定义 9 种服务 vtable含 ai_endpoint_mgrdstalk_lsp.h 提供独立 LSP 客户端dstalk_types.h 共享消息与事件类型。前端通过 dstalk_service_query() 获取服务指针,再经函数指针调用具体能力。</p>
</div>
<div class="terminal">
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">dstalk_host.h — 宿主 API</span></div>
<pre><code><span class="dim">// 生命周期</span>
int dstalk_init(const char* config_path);
void dstalk_shutdown(void);
<span class="dim">// 插件管理</span>
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);
<span class="dim">// 事件系统</span>
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);
<span class="dim">// 配置 / 内存 / 诊断</span>
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);</code></pre>
</div>
<div class="terminal" style="margin-top:16px">
<div class="terminal-top"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="terminal-title">dstalk_services.h — 服务 vtable 示例</span></div>
<pre><code><span class="dim">// AI 服务: dstalk_service_query("ai_openai", 1)</span>
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;
<span class="dim">// endpoint manager: dstalk_service_query("ai_endpoint_mgr", 1)</span>
<span class="dim">// 同模式: dstalk_ai_endpoint_mgr_t, dstalk_session_service_t,</span>
<span class="dim">// dstalk_http_service_t, dstalk_file_io_service_t,</span>
<span class="dim">// dstalk_config_service_t, dstalk_tools_service_t, dstalk_lsp_service_t</span></code></pre>
</div>
</section>
<section id="roadmap" class="container section">
<div class="section-head">
<h2>路线图</h2>
<p>插件宿主、CLI、SDL3 GUI、Boost.Beast Web、10 个核心插件、测试与文档已经就位;后续聚焦在能力深化与生态扩展。</p>
</div>
<div class="panel table-wrap">
<table>
<tr><th>阶段</th><th>内容</th><th>状态</th></tr>
<tr><td>骨架</td><td>项目骨架、CMake/Ninja 构建、Conan 依赖、DLL 导出、前端主循环</td><td><span class="ok">已完成</span></td></tr>
<tr><td>插件宿主</td><td>插件加载、服务注册、事件总线、配置管理10 个核心插件openai · anthropic · endpoint_mgr · network · lsp · session · context · config · file-io · tools</td><td><span class="ok">已完成</span></td></tr>
<tr><td>对话能力</td><td>HTTPS 网络层、OpenAI-compatible / Anthropic API 适配、流式输出、多轮会话、工具调用与文件读写</td><td><span class="ok">已可用</span></td></tr>
<tr><td>多 endpoint</td><td>ai_endpoint_mgr 管理多个命名 AI endpoint前端优先按 active endpoint 路由,/status 输出脱敏状态</td><td><span class="ok">已可用</span></td></tr>
<tr><td>GUI / Web 前端</td><td>SDL3 图形化窗口与 Boost.Beast Web + SSE作为可选前端与 CLI 共享插件宿主</td><td><span class="todo">可选构建</span></td></tr>
<tr><td>下一阶段</td><td>LSP 集成深化、第三方插件 SDK、跨平台分发与文档持续完善</td><td><span class="todo">计划中</span></td></tr>
</table>
</div>
</section>
<section id="contribute" class="container section">
<div class="section-head">
<h2>欢迎开源贡献者</h2>
<p>dstalk 是开放项目,欢迎对 C/C++、命令行体验、AI API 适配、GUI、文档和测试感兴趣的开发者一起参与。</p>
</div>
<div class="cards">
<article class="card"><div class="icon">PR</div><h3>提交代码改进</h3><p>核心、CLI、SDL3 GUI、Web 前端与 10 个插件AI、endpoint 管理、网络、LSP、会话、文件、工具等都欢迎补丁跨平台兼容与构建脚本也有空间。</p></article>
<article class="card"><div class="icon">PLG</div><h3>开发新插件</h3><p>参考 examples/example_plugin 和 docs/reference/plugin-abi.md通过 C ABI 注册新服务,把自己的模型、工具或数据源接入 dstalk。</p></article>
<article class="card"><div class="icon">DOC</div><h3>完善文档与测试</h3><p>docs/tutorial、docs/reference 已经成形,欢迎补充教程、命令速查、插件 ABI 说明,以及 host_api_test / smoke_test 的覆盖面。</p></article>
</div>
<div class="actions">
<a class="btn btn-primary" href="https://git.pulsareon.com/pulsareon/dstalk">前往源码仓库</a>
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk/issues">提交 Issue</a>
</div>
</section>
<section class="container cta">
<h2>从终端开始,把 dstalk 嵌入更多工具</h2>
<p>dstalk 的核心价值不只是一个 CLI而是一个可被多前端复用的本地 AI 编程核心。dstalk.top 会持续同步项目进展、构建方式和可用能力。</p>
<div class="actions" style="justify-content:center">
<a class="btn btn-primary" href="#quickstart">查看快速开始</a>
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk">访问源码仓库</a>
</div>
</section>
</main>
<footer class="container footer">
<p>dstalk &copy; 2026. GNU GPL v3.0. Website: dstalk.top.</p>
<div class="footer-links">
<a href="#top">返回顶部</a>
<a href="https://dstalk.top">dstalk.top</a>
<a href="https://git.pulsareon.com/pulsareon/dstalk">源代码</a>
</div>
</footer>
</body>
</html>