Skip to content

Commit 0c39853

Browse files
committed
docs(site): restructure into book-style chapters with custom nav theme
- Split index into 11 ordered chapters aligned with README content - Add custom VitePress theme: home TOC cards + chapter Prev/Next nav bar - Rewrite nav/sidebar to book-style single TOC entry - Remove getting-started.md (content merged into quick-start + start-here)
1 parent df2c298 commit 0c39853

16 files changed

Lines changed: 590 additions & 197 deletions

site/.vitepress/config.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,26 @@ export default {
88
lastUpdated: true,
99
themeConfig: {
1010
nav: [
11-
{ text: "快速开始", link: "/guide/getting-started" },
12-
{ text: "核心工作流", link: "/guide/workflow" },
13-
{ text: "GitHub Pages", link: "/guide/github-pages" },
11+
{ text: "目录", link: "/" },
12+
{ text: "从这里开始", link: "/guide/start-here" },
13+
{ text: "架构", link: "/guide/architecture" },
1414
{ text: "GitHub", link: "https://github.com/SakuraByteCore/codexmate" }
1515
],
1616
sidebar: [
1717
{
18-
text: "使用指南",
18+
text: "目录",
1919
items: [
20-
{ text: "快速开始", link: "/guide/getting-started" },
20+
{ text: "从这里开始", link: "/guide/start-here" },
21+
{ text: "它能做什么", link: "/guide/capabilities" },
22+
{ text: "快速开始", link: "/guide/quick-start" },
2123
{ text: "核心工作流", link: "/guide/workflow" },
22-
{ text: "GitHub Pages", link: "/guide/github-pages" }
24+
{ text: "Web UI 集中管理", link: "/guide/web-ui" },
25+
{ text: "会话管理", link: "/guide/sessions" },
26+
{ text: "Skills 与提示词", link: "/guide/skills-prompt" },
27+
{ text: "任务编排", link: "/guide/tasks" },
28+
{ text: "架构总览", link: "/guide/architecture" },
29+
{ text: "设计边界", link: "/guide/limits" },
30+
{ text: "GitHub Pages 部署", link: "/guide/github-pages" }
2331
]
2432
}
2533
],

site/.vitepress/theme/Layout.vue

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<script setup>
2+
import { computed } from "vue";
3+
import DefaultTheme from "vitepress/theme";
4+
import { useData } from "vitepress";
5+
import "./style.css";
6+
7+
const { Layout } = DefaultTheme;
8+
9+
const CHAPTERS = [
10+
{ link: "/guide/start-here", title: "从这里开始" },
11+
{ link: "/guide/capabilities", title: "它能做什么" },
12+
{ link: "/guide/quick-start", title: "快速开始" },
13+
{ link: "/guide/workflow", title: "核心工作流" },
14+
{ link: "/guide/web-ui", title: "Web UI 集中管理" },
15+
{ link: "/guide/sessions", title: "会话管理" },
16+
{ link: "/guide/skills-prompt", title: "Skills 与提示词" },
17+
{ link: "/guide/tasks", title: "任务编排" },
18+
{ link: "/guide/architecture", title: "架构总览" },
19+
{ link: "/guide/limits", title: "设计边界" },
20+
{ link: "/guide/github-pages", title: "GitHub Pages 部署" },
21+
];
22+
23+
const { page } = useData();
24+
25+
const nav = computed(() => {
26+
const raw = (page.value.relativePath || "").replace(/\.md$/, "");
27+
const path = "/" + raw;
28+
const idx = CHAPTERS.findIndex((c) => c.link === path);
29+
if (idx < 0) return null;
30+
return {
31+
prev: idx > 0 ? CHAPTERS[idx - 1] : null,
32+
next: idx < CHAPTERS.length - 1 ? CHAPTERS[idx + 1] : null,
33+
};
34+
});
35+
</script>
36+
37+
<template>
38+
<Layout>
39+
<template #doc-after>
40+
<nav v-if="nav" class="book-nav-bottom">
41+
<a v-if="nav.prev" :href="nav.prev.link">
42+
<span aria-hidden="true">←</span>
43+
{{ nav.prev.title }}
44+
</a>
45+
<span v-else class="placeholder">.</span>
46+
<a class="to-toc" href="/">回到目录</a>
47+
<a v-if="nav.next" :href="nav.next.link">
48+
{{ nav.next.title }}
49+
<span aria-hidden="true">→</span>
50+
</a>
51+
<span v-else class="placeholder">.</span>
52+
</nav>
53+
</template>
54+
</Layout>
55+
</template>

site/.vitepress/theme/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import DefaultTheme from "vitepress/theme";
2+
import Layout from "./Layout.vue";
3+
import "./style.css";
4+
5+
export default {
6+
extends: DefaultTheme,
7+
Layout,
8+
};

site/.vitepress/theme/style.css

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
.VPHome .VPFeatures {
2+
max-width: 1152px;
3+
margin: 0 auto;
4+
padding: 0 24px 96px;
5+
}
6+
.VPHome .VPFeatures .container {
7+
margin: 0 !important;
8+
}
9+
.VPHome .VPFeatures .items {
10+
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important;
11+
gap: 18px !important;
12+
}
13+
.VPHome .VPFeatures .item {
14+
border: 1px solid var(--vp-c-divider);
15+
border-radius: 12px;
16+
transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
17+
}
18+
.VPHome .VPFeatures .item:hover {
19+
transform: translateY(-3px);
20+
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
21+
border-color: var(--vp-c-brand-1);
22+
}
23+
.VPHome .VPFeatures .VPFeature {
24+
height: 100%;
25+
}
26+
.VPHome .VPFeatures .title {
27+
font-size: 16px;
28+
font-weight: 650;
29+
line-height: 24px;
30+
}
31+
.VPHome .VPFeatures .details {
32+
font-size: 13.5px;
33+
line-height: 22px;
34+
margin-top: 8px;
35+
color: var(--vp-c-text-2);
36+
}
37+
38+
.book-nav-bottom {
39+
margin: 48px auto 24px;
40+
padding: 16px 24px;
41+
border-top: 1px solid var(--vp-c-divider);
42+
display: flex;
43+
align-items: center;
44+
justify-content: space-between;
45+
gap: 12px;
46+
max-width: 768px;
47+
}
48+
.book-nav-bottom a {
49+
display: inline-flex;
50+
align-items: center;
51+
gap: 6px;
52+
font-size: 14px;
53+
font-weight: 500;
54+
padding: 8px 14px;
55+
border: 1px solid var(--vp-c-divider);
56+
border-radius: 10px;
57+
text-decoration: none;
58+
color: var(--vp-c-text-1);
59+
transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
60+
}
61+
.book-nav-bottom a:hover {
62+
border-color: var(--vp-c-brand-1);
63+
color: var(--vp-c-brand-1);
64+
background: var(--vp-c-bg);
65+
}
66+
.book-nav-bottom .to-toc {
67+
font-size: 13px;
68+
color: var(--vp-c-text-2);
69+
}
70+
.book-nav-bottom .placeholder {
71+
visibility: hidden;
72+
}

site/guide/architecture.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# 架构总览
2+
3+
用户 → CLI / Web UI / MCP → HTTP API → 核心(配置引擎/会话管理/Skills/任务) → 本地文件系统。
4+
5+
```mermaid
6+
%%{ init: { 'flowchart': { 'curve': 'catmullRom' } } }%%
7+
flowchart TD
8+
User([User])
9+
CLI[CLI]
10+
WebUI[Web UI]
11+
MCP[MCP Server]
12+
13+
subgraph Mate [Codex Mate Core]
14+
API[HTTP API]
15+
Config[Config Engine]
16+
Session[Session Manager]
17+
Skills[Skills Market]
18+
Tasks[Task Runner]
19+
end
20+
21+
subgraph Local [Local Filesystem]
22+
CodexDir[~/.codex]
23+
ClaudeDir[~/.claude]
24+
ClawDir[~/.openclaw]
25+
OpenCodeDir[~/.config/opencode]
26+
MateDir[~/.codexmate]
27+
State[Sessions/Usage/Trash]
28+
end
29+
30+
User --> CLI & WebUI & MCP
31+
CLI & WebUI & MCP --> API
32+
33+
API --> Config & Session & Skills & Tasks
34+
35+
Config --> CodexDir & ClaudeDir & ClawDir & OpenCodeDir & MateDir
36+
Session --> State
37+
Skills --> Local
38+
```
39+
40+
## 各层职责
41+
42+
|| 职责 |
43+
| --- | --- |
44+
| 入口 | CLI / Web UI / MCP stdio 三个面向用户的入口 |
45+
| HTTP API | 统一后端,承接三入口调用 |
46+
| 配置引擎 | 写各工具配置,首轮接管有备份,可回滚 |
47+
| 会话管理 | 聚合多工具会话,搜索/预览/导出/清理 |
48+
| Skills Market | 跨 agent 应用导入导出 |
49+
| 任务运行器 | DAG 编排与执行日志 |
50+
| 本地 FS | 配置与会话/用量/回收站落盘 |
51+
52+
## 设计要点
53+
54+
- 本地优先:配置写本地目录,不碰云端账号。
55+
- 隔离:每个工具的配置路径独立,首轮接管有备份。
56+
- 不替代:只做管理层,原工具照常运行。
57+
58+
## 下一步
59+
架构之外看 [Web UI 集中管理](/guide/web-ui) 实操,或了解 [设计边界](/guide/limits)

site/guide/capabilities.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# 它能做什么
2+
3+
完整能力按四块组织:provider 管理、会话浏览、Skills 与提示词、任务编排。下面的状态表来自仓库 README,各项都已在 CLI / Web UI 落地。
4+
5+
## 功能进度
6+
7+
| 功能 | 状态 | 说明 |
8+
| --- | --- | --- |
9+
| Provider 管理 || Codex / Claude / OpenCode / KiloCode / OpenClaw 的 provider/model 切换 |
10+
| 实时同步 || Codex / Claude 配置与状态实时监控 |
11+
| 会话浏览 || Codex / Claude Code / Gemini CLI / CodeBuddy Code / Pi 会话统一搜索、预览、筛选、导出 |
12+
| 用量分析 || 消息趋势与项目排行可视化 |
13+
| 本地 Skills Market || 跨 agent 应用导入导出 skills |
14+
| 任务队列 || 基于 DAG 的任务执行与日志 |
15+
| OpenAI 桥 || Codex Responses API 转标准 OpenAI 格式,并在内置转换中补齐/规范化 Codex 指纹头 |
16+
| Claude Provider 桥 || Claude Code 接 OpenAI Chat Completions 兼容 provider 与 Ollama |
17+
| OpenCode Provider Store || 多 provider 存于 `~/.codexmate`,仅把激活项投影到原生配置 |
18+
| KiloCode 配置桥 || `codexmate kilo config` 或 Web UI 写 `~/.config/kilo/kilo.jsonc`,保留已有 Key |
19+
| Provider 健康检查 || 探测 Codex/Claude 本地路由,高亮失败项并批量安全清理 |
20+
| Prompt 模板 || 带变量复用提示词插件 |
21+
| Prompt 文件编辑器 || 编辑全局/项目级 `CLAUDE.md`/`AGENTS.md`,自动检测项目路径,应用 preset 仅更新编辑器,保存才写盘 |
22+
| MCP 集成 || MCP stdio 暴露本地工具与资源 |
23+
| 自动更新 || `codexmate update` 一键升级 CLI |
24+
25+
## 四块能力拆解
26+
27+
### Provider 管理
28+
统一切换多个 agent 的 provider/model;每个工具的配置写入路径隔离,首轮接管有备份,可回滚。
29+
30+
### 会话浏览
31+
把散落在各工具目录的会话拉到同一视图:搜索、筛选、预览、导出为 Markdown、单条删除与批量清理。
32+
33+
### Skills 与提示词
34+
本地优先的 Skills Market 做跨应用导入导出;Prompt 文件编辑器管 `CLAUDE.md`/`AGENTS.md`,带可复用 preset 池。
35+
36+
### 任务编排
37+
基于 DAG 的任务队列,支持依赖追踪、执行与日志,适合编排多步任务。
38+
39+
## 下一步
40+
能力清单看完,去 [快速开始](/guide/quick-start) 跑起来,或看 [架构总览](/guide/architecture) 懂内部怎么连。

site/guide/getting-started.md

Lines changed: 0 additions & 76 deletions
This file was deleted.

site/guide/limits.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# 设计边界
2+
3+
用前必读:明确什么不做,避免误用。
4+
5+
## 不做的事
6+
7+
- **不做云端托管与账号体系**——全部本地,无遥测、无云账号。
8+
- **不代管密钥**——只负责写配置,Key 由用户自管。
9+
- **不替代原工具**——仅在其之上做配置与会话管理层,原工具照常运行。
10+
11+
## 配置写入约定
12+
13+
- 配置写本地文件,首轮接管有备份,便于回滚。
14+
- 各工具配置路径隔离:
15+
- Codex: `~/.codex`(含 `AGENTS.md` 与 skills)
16+
- Claude: `~/.claude/settings.json`
17+
- OpenClaw: `~/.openclaw/openclaw.json` 与 workspace `AGENTS.md`
18+
- OpenCode: `~/.codexmate` 多 provider store,投影到 `~/.config/opencode`
19+
- KiloCode: `~/.config/kilo/kilo.jsonc`
20+
21+
## 安全提示
22+
23+
- 默认监听 `0.0.0.0:3737` 在局域网暴露未鉴权界面。仅可信网络使用。
24+
- 涉及 Key/配置/Skills 建议改 `127.0.0.1`
25+
26+
## 下一步
27+
[目录](/) 重新挑章节,或看 [GitHub Pages 部署](/guide/github-pages) 把文档站发上线。

0 commit comments

Comments
 (0)