- Revised meta description and Open Graph tags to reflect compatibility with OpenAI and Anthropic APIs. - Changed references from `dstalk.dll` to `dstalk_core.dll` throughout the documentation. - Updated lead paragraph to clarify the core functionality and plugin architecture. - Adjusted plugin list to accurately represent the current AI providers. - Modified example commands and configuration settings to align with the new core structure.
469 lines
36 KiB
HTML
469 lines
36 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 compatible with OpenAI-style APIs and 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="OpenAI-compatible / Anthropic 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%22Layer%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 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 compatible with OpenAI-style APIs and 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>openai · 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/bin/dstalk_cli.exe config.toml
|
|
|
|
dstalk v0.1.0 | OpenAI-compatible / Anthropic | /help for help
|
|
|
|
> 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.
|
|
|
|
> /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>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 host functions such as dstalk_init and dstalk_service_query, plus 8 service vtables (AI, session, HTTP, file I/O, LSP, and more) 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: OpenAI-compatible and Anthropic. Switch between OpenAI-style APIs and Anthropic APIs 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/bin/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>
|
|
ai.provider = "ai_openai"
|
|
api.base_url = "https://api.openai.com/v1"
|
|
api.api_key = "sk-xxxxxxxx"
|
|
api.model = "gpt-4o"
|
|
|
|
<span class="cmd"># Run 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>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 │
|
|
├───────────────┬───────────────┬─────────────────────┤
|
|
│ openai (ai) │ anthropic (ai)│ 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>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_host.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="todo">Optional build</span></td></tr>
|
|
<tr><td>Plugins</td><td>9 functional plugins (openai · 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>10 test targets covering plugin host, event bus, service registry, plugin loader, and AI plugins, integrated with CTest</td><td><span class="ok">Enabled</span></td></tr>
|
|
<tr><td>Docs</td><td>docs/tutorial, docs/reference (commands, plugin-abi), docs/explanation (architecture, plugin-lifecycle, security-logging)</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 <name></td><td>Switch the current model</td><td>/model gpt-4o</td></tr>
|
|
<tr><td>/file read <path></td><td>Read file content and print it to the terminal</td><td>/file read README.md</td></tr>
|
|
<tr><td>/file write <path> <content></td><td>Write content to a file</td><td>/file write note.txt hello</td></tr>
|
|
<tr><td>/save <path> / /load <path></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 exposes its capabilities through four public headers: dstalk_host.h manages the host lifecycle and plugins, dstalk_services.h defines 8 service vtables, dstalk_lsp.h provides a standalone LSP client, and dstalk_types.h shares message and event types. Frontends call dstalk_service_query() to obtain a service pointer, then invoke capabilities through function pointers.</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 — host API</span></div>
|
|
<pre><code><span class="dim">// Lifecycle</span>
|
|
int dstalk_init(const char* config_path);
|
|
void dstalk_shutdown(void);
|
|
|
|
<span class="dim">// Plugin management</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">// Event system</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">// Config / memory / diagnostics</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 — service vtable example</span></div>
|
|
<pre><code><span class="dim">// AI service: dstalk_service_query("ai.openai", 0)</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">// Same pattern: dstalk_session_service_t, dstalk_http_service_t,</span>
|
|
<span class="dim">// dstalk_file_io_service_t, dstalk_config_service_t,</span>
|
|
<span class="dim">// dstalk_tools_service_t, dstalk_lsp_service_t</span></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 (openai · 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, OpenAI-compatible / 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), an optional frontend sharing the same plugin host as the CLI</td><td><span class="todo">Optional build</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 © 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>
|