Add AI chat with skills management and model provider settings

- Model providers for OpenAI and Anthropic message formats (e.g. via
  Sub2API), with API keys encrypted at rest and never returned
- Skills tree with markdown editing, priorities, drafts, publishing and
  rollback; only published skills enter the chat prompt
- Chat page with tool calls over collected news and Binance USD-M
  klines, a persisted CONTEXT.md, reset, and stop-generation support
- Chat may only create skill drafts and update CONTEXT.md; publishing,
  deleting, moving and priority changes stay with the user
This commit is contained in:
eezd committed 2026-10-14 13:11:45 +08:00
1 parent f042f27013
commit 5db3ead883
34 files changed
+3196 -12

No files matched your search

+67
View File
@@ -8,3 +8,70 @@ body,
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}
/* Markdown 渲染(Chat 回复、skill 预览、CONTEXT.md 预览) */
.markdown-body {
font-size: 14px;
line-height: 1.7;
word-break: break-word;
}
.markdown-body > :first-child {
margin-top: 0;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4 {
margin: 1em 0 0.5em;
font-weight: 600;
}
.markdown-body h1 {
font-size: 1.5em;
}
.markdown-body h2 {
font-size: 1.3em;
}
.markdown-body h3 {
font-size: 1.1em;
}
.markdown-body p,
.markdown-body ul,
.markdown-body ol,
.markdown-body pre,
.markdown-body table,
.markdown-body blockquote {
margin: 0.5em 0;
}
.markdown-body ul,
.markdown-body ol {
padding-left: 1.5em;
}
.markdown-body code {
padding: 0.1em 0.3em;
border-radius: 3px;
background: var(--el-fill-color);
font-size: 0.9em;
}
.markdown-body pre {
padding: 0.6em 0.8em;
overflow: auto;
border-radius: 4px;
background: var(--el-fill-color-light);
}
.markdown-body pre code {
padding: 0;
background: none;
}
.markdown-body blockquote {
padding-left: 0.8em;
border-left: 3px solid var(--el-border-color);
color: var(--el-text-color-secondary);
}
.markdown-body table {
border-collapse: collapse;
}
.markdown-body th,
.markdown-body td {
padding: 0.3em 0.6em;
border: 1px solid var(--el-border-color);
}