Files
dstalk.top/en.html
XiuChengWu ee56dbb753 Sync site with current dstalk repo structure
Reflect the plugin-host architecture: dstalk-core.dll now hosts 9
functional plugins (deepseek, anthropic, network, lsp, session,
context, config, file-io, tools), with dstalk-cli + SDL3 dstalk-gui
both consuming the same C ABI. Update badges, hero stats, terminal
demo, features, architecture diagram, tech-stack table, roadmap, and
contributor section across index.html and en.html accordingly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 08:57:30 +08:00

449 lines
34 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="dstalk is a C/C++ AI coding CLI powered by DeepSeek V4 and compatible with OpenAI / Anthropic APIs, built around a dstalk-core.dll plugin host and decoupled multi-frontends.">
<meta name="theme-color" content="#0b1020">
<meta property="og:title" content="dstalk — C/C++ AI Coding CLI">
<meta property="og:description" content="DeepSeek V4 powered, C ABI embeddable. dstalk-core.dll is a plugin host with 9 functional plugins covering AI, networking, sessions, LSP, and tools.">
<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 — DeepSeek V4 AI Coding 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="Main navigation">
<div class="container nav-inner">
<a class="brand" href="#top" aria-label="dstalk home"><svg class="brand-mark" aria-hidden="true" focusable="false" id="b8933227-ee10-4b8b-aa3f-4d0252add8f0" data-name="Layer 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">Features</a>
<a href="#quickstart">Quick Start</a>
<a href="#architecture">Architecture</a>
<a href="#commands">Commands</a>
<a href="#roadmap">Roadmap</a>
<a href="#contribute">Contribute</a>
<a href="index.html" lang="zh-CN">中文</a>
</div>
</div>
</nav>
<header id="top" class="container hero">
<div>
<div class="eyebrow">dstalk.top is the official website for the dstalk project</div>
<h1><span>ds</span>talk</h1>
<p class="lead">An AI coding CLI powered by DeepSeek V4 and compatible with OpenAI / Anthropic APIs. The core is written in C11 / C++20 and ships dstalk-core.dll as a plugin host that exposes a stable C ABI. Nine functional plugins (AI, networking, LSP, sessions, files, tools, and more) compile to standalone DLLs and plug into the CLI, the SDL3 GUI, and any third-party host.</p>
<div class="actions">
<a class="btn btn-primary" href="#quickstart">Get Started</a>
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk">View Source</a>
</div>
<div class="badges" aria-label="Project tags">
<span class="badge">v0.1.0</span>
<span class="badge">C11 / C++20</span>
<span class="badge">Plugin host + C ABI</span>
<span class="badge">9 plugins</span>
<span class="badge">GPL v3.0</span>
</div>
<div class="stats" aria-label="Project status">
<span class="stat"><strong>Core</strong>dstalk-core.dll (plugin host)</span>
<span class="stat"><strong>Frontends</strong>CLI + SDL3 GUI</span>
<span class="stat"><strong>Plugins</strong>deepseek · anthropic · network · lsp · session · context · config · file-io · tools</span>
</div>
</div>
<div class="terminal" aria-label="dstalk command-line example">
<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/dstalk-cli/dstalk-cli.exe config.toml
dstalk v0.1.0 | DeepSeek V4 | /help for help
&gt; Explain the role of dstalk-core
<span class="dim">thinking...</span>
AI: dstalk-core is the plugin host. It handles plugin
loading, service registry, the event bus, and
configuration. AI, networking, sessions, LSP, and
file I/O are provided by standalone plugin DLLs;
frontends only deal with input and rendering.
&gt; /file read dstalk-core/include/dstalk/dstalk_api.h
<span class="dim">--- dstalk-core/include/dstalk/dstalk_api.h ---</span></code></pre>
</div>
</header>
<main>
<section id="features" class="container section">
<div class="section-head">
<h2>Why rebuild an AI coding assistant in C/C++?</h2>
<p>dstalk is positioned alongside tools like Claude Code, OpenCode, and KiloCode, but uses a systems-language implementation and a plugin-host architecture to optimize startup time, runtime footprint, embeddability, and long-running terminal workflows.</p>
</div>
<div class="cards">
<article class="card"><div class="icon">C</div><h3>No Node.js runtime</h3><p>The core is built with C11 / C++20 for fast startup and lower memory usage in long-lived terminal sessions.</p></article>
<article class="card"><div class="icon">ABI</div><h3>Stable C ABI</h3><p>Public functions such as dstalk_init, dstalk_chat, and dstalk_file_read make it easy to embed from C/C++, Python, Rust, C#, and Go.</p></article>
<article class="card"><div class="icon">AI</div><h3>Compatible AI APIs</h3><p>Two AI plugins ship in the box: DeepSeek and Anthropic, with OpenAI-style compatibility. Switch providers via ai.provider in config.toml.</p></article>
<article class="card"><div class="icon">CLI</div><h3>CLI and GUI frontends</h3><p>dstalk-cli is an ANSI terminal UI; dstalk-gui is a cross-platform SDL3 window. Both share the same plugin host and core capabilities.</p></article>
<article class="card"><div class="icon">PLG</div><h3>Plugin host</h3><p>The core only handles plugin loading, service registry, event bus, and configuration. AI, networking, LSP, and sessions are independent DLLs you can replace or extend.</p></article>
<article class="card"><div class="icon">OSS</div><h3>Open source and hackable</h3><p>Released under GNU GPL v3.0, with example plugins, unit tests, and tutorial docs. Suitable for learning, customization, and local workflow extensions.</p></article>
</div>
</section>
<section id="quickstart" class="container section">
<div class="split">
<div class="section-head">
<h2>Quick Start</h2>
<p>dstalk provides an automated toolchain script and a one-command build script. Keep API keys in local config.toml or a secure environment, and never commit them to the repository.</p>
<div class="steps">
<div class="step"><div class="step-num">1</div><div><h3>Install the local toolchain</h3><p>Run setup.bat inside the tools directory to download CMake, Ninja, LLVM/Clang, and Conan2.</p></div></div>
<div class="step"><div class="step-num">2</div><div><h3>Build dstalk</h3><p>Run build.bat to install Conan dependencies, configure CMake, and build with Ninja.</p></div></div>
<div class="step"><div class="step-num">3</div><div><h3>Start the CLI</h3><p>Run build/dstalk-cli/dstalk-cli.exe with config.toml, or let it use the default config lookup.</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"># Install toolchain</span>
cd tools
setup.bat
<span class="cmd"># Return to repo root and build</span>
cd ..
build.bat
<span class="cmd"># Create config.toml</span>
[api]
base_url = "https://api.deepseek.com/v1"
api_key = "sk-xxxxxxxx"
model = "deepseek-chat"
<span class="cmd"># Run CLI</span>
build/dstalk-cli/dstalk-cli.exe config.toml</code></pre>
</div>
</div>
</section>
<section id="architecture" class="container section">
<div class="section-head">
<h2>Plugin host + decoupled multi-frontend architecture</h2>
<p>dstalk-core.dll acts as a plugin host responsible for plugin loading, service registry, event bus, and configuration. Nine functional plugins — AI, networking, LSP, sessions, files, tools, and more — compile to standalone DLLs, while frontends reach the core only through the C ABI. The GUI is opt-in via the CMake option DSTALK_BUILD_GUI.</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 UI) dstalk-gui (SDL3) │
└───────────────────────┬─────────────────────────────┘
│ C ABI
┌───────────────────────▼─────────────────────────────┐
│ dstalk-core.dll — Plugin Host │
│ Plugin Loader · Service Registry · Event Bus · │
│ Config Manager │
└──┬───────┬───────┬───────┬───────┬───────┬──────────┘
▼ ▼ ▼ ▼ ▼ ▼
deepseek anthropic network lsp session context
(ai) (ai) (http) client
▼ ▼ ▼
config file-io tools
│ │ │
└── Boost.JSON / Boost.Asio / Beast / OpenSSL TLS ──┘</code></pre>
</div>
</section>
<section class="container section">
<div class="section-head">
<h2>Tech stack and project status</h2>
<p>The following is based on dstalk's CMake files, Conan configuration, and public API header.</p>
</div>
<div class="panel table-wrap">
<table>
<tr><th>Module</th><th>Current technology</th><th>Status</th></tr>
<tr><td>Core library</td><td>C11 / C++20, dstalk-core.dll, plugin host, public C ABI</td><td><span class="ok">Enabled</span></td></tr>
<tr><td>CLI frontend</td><td>ANSI terminal UI using dstalk/dstalk_api.h</td><td><span class="ok">Enabled</span></td></tr>
<tr><td>GUI frontend</td><td>SDL3 graphical frontend, enabled via CMake option DSTALK_BUILD_GUI</td><td><span class="ok">In place</span></td></tr>
<tr><td>Plugins</td><td>9 functional plugins (deepseek · anthropic · network · lsp · session · context · config · file-io · tools), standalone DLLs</td><td><span class="ok">Enabled</span></td></tr>
<tr><td>Tests</td><td>tests/ ships host_api_test and smoke_test, integrated with CTest</td><td><span class="ok">Enabled</span></td></tr>
<tr><td>Docs</td><td>docs/tutorial, docs/reference (commands, plugin-abi)</td><td><span class="ok">Published</span></td></tr>
<tr><td>Examples</td><td>examples/example_plugin shows a plugin template</td><td><span class="ok">Available</span></td></tr>
<tr><td>Dependencies</td><td>Conan2, boost/1.86.0, openssl/3.4.1</td><td><span class="ok">Configured</span></td></tr>
<tr><td>Build system</td><td>CMake 3.21+, Ninja, LLVM/Clang, CMakePresets</td><td><span class="ok">Configured</span></td></tr>
<tr><td>License</td><td>GNU GPL v3.0</td><td><span class="ok">Confirmed</span></td></tr>
</table>
</div>
</section>
<section id="commands" class="container section">
<div class="section-head">
<h2>Common CLI commands</h2>
<p>In addition to natural-language prompts, dstalk-cli provides commands for files, models, and session management.</p>
</div>
<div class="panel table-wrap">
<table>
<tr><th>Commands</th><th>Description</th><th>Example</th></tr>
<tr><td>/help</td><td>Show help</td><td>/help</td></tr>
<tr><td>/clear</td><td>Clear the current conversation context</td><td>/clear</td></tr>
<tr><td>/model &lt;name&gt;</td><td>Switch the current model</td><td>/model deepseek-chat</td></tr>
<tr><td>/file read &lt;path&gt;</td><td>Read file content and print it to the terminal</td><td>/file read README.md</td></tr>
<tr><td>/file write &lt;path&gt; &lt;content&gt;</td><td>Write content to a file</td><td>/file write note.txt hello</td></tr>
<tr><td>/save &lt;path&gt; / /load &lt;path&gt;</td><td>Save or restore a session</td><td>/save session.json</td></tr>
</table>
</div>
</section>
<section id="api" class="container section">
<div class="section-head">
<h2>Public C API</h2>
<p>dstalk-core exposes functions through dstalk-core/include/dstalk/dstalk_api.h, so frontends and third-party hosts call the same core interface.</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_api.h</span></div>
<pre><code>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);</code></pre>
</div>
</section>
<section id="roadmap" class="container section">
<div class="section-head">
<h2>Roadmap</h2>
<p>The plugin host, CLI, SDL3 GUI, nine core plugins, tests, and documentation are already in place. Future work focuses on deeper capabilities and ecosystem expansion.</p>
</div>
<div class="panel table-wrap">
<table>
<tr><th>Phase</th><th>Scope</th><th>Status</th></tr>
<tr><td>Skeleton</td><td>Project skeleton, CMake/Ninja build, Conan dependencies, DLL exports, frontend main loop</td><td><span class="ok">Done</span></td></tr>
<tr><td>Plugin host</td><td>Plugin loader, service registry, event bus, configuration; 9 core plugins (deepseek · anthropic · network · lsp · session · context · config · file-io · tools)</td><td><span class="ok">Done</span></td></tr>
<tr><td>Chat capability</td><td>HTTPS networking, DeepSeek / Anthropic API adapters, streaming output, multi-turn sessions, file I/O tools</td><td><span class="ok">Available</span></td></tr>
<tr><td>GUI frontend</td><td>SDL3 graphical window (DSTALK_BUILD_GUI), sharing the same plugin host as the CLI</td><td><span class="todo">In progress</span></td></tr>
<tr><td>Next phase</td><td>Deeper LSP integration, third-party plugin SDK, cross-platform distribution, ongoing documentation</td><td><span class="todo">Planned</span></td></tr>
</table>
</div>
</section>
<section id="contribute" class="container section">
<div class="section-head">
<h2>Open source contributors welcome</h2>
<p>dstalk is an open project. Developers interested in C/C++, terminal UX, AI API adapters, GUI, documentation, and testing are welcome to participate.</p>
</div>
<div class="cards">
<article class="card"><div class="icon">PR</div><h3>Improve the codebase</h3><p>The core, CLI, SDL3 GUI, and nine plugins (AI, networking, LSP, sessions, files, tools, and more) all welcome patches; build scripts and cross-platform compatibility have headroom too.</p></article>
<article class="card"><div class="icon">PLG</div><h3>Build new plugins</h3><p>Use examples/example_plugin and docs/reference/plugin-abi.md as a starting point — register new services through the C ABI to bring your own models, tools, or data sources into dstalk.</p></article>
<article class="card"><div class="icon">DOC</div><h3>Improve docs and tests</h3><p>docs/tutorial and docs/reference are taking shape; help expand tutorials, command references, plugin-ABI notes, and the coverage of host_api_test / smoke_test.</p></article>
</div>
<div class="actions">
<a class="btn btn-primary" href="https://git.pulsareon.com/pulsareon/dstalk">Go to source repository</a>
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk/issues">Open an Issue</a>
</div>
</section>
<section class="container cta">
<h2>Start in the terminal, embed dstalk everywhere</h2>
<p>dstalk is more than a CLI. It is a local AI coding core that can be reused by multiple frontends. dstalk.top will keep tracking project progress, build instructions, and available capabilities.</p>
<div class="actions" style="justify-content:center">
<a class="btn btn-primary" href="#quickstart">View Quick Start</a>
<a class="btn btn-secondary" href="https://git.pulsareon.com/pulsareon/dstalk">Visit Source Repository</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">Back to top</a>
<a href="https://dstalk.top">dstalk.top</a>
<a href="https://git.pulsareon.com/pulsareon/dstalk">Source</a>
</div>
</footer>
</body>
</html>