feat: 更新 CLAUDE.md,修正测试命令和消息结构,增强 Skills 系统描述
This commit is contained in:
@@ -17,8 +17,10 @@ MVP 为纯前端 React 应用,使用 mock 数据演示。无后端、无真实
|
|||||||
```bash
|
```bash
|
||||||
npm run dev # Vite 开发服务器 → http://localhost:5173
|
npm run dev # Vite 开发服务器 → http://localhost:5173
|
||||||
npm run build # tsc 类型检查 + vite 构建
|
npm run build # tsc 类型检查 + vite 构建
|
||||||
npm test # vitest 运行全部测试(17 个,位于 export.test.ts)
|
npm test # vitest 运行全部测试(26 个,位于 export.test.ts 和 parseSkill.test.ts)
|
||||||
|
npm run preview # 预览生产构建
|
||||||
npx vitest run src/__tests__/export.test.ts # 运行单个测试文件
|
npx vitest run src/__tests__/export.test.ts # 运行单个测试文件
|
||||||
|
npx vitest run src/__tests__/parseSkill.test.ts
|
||||||
```
|
```
|
||||||
|
|
||||||
## 架构
|
## 架构
|
||||||
@@ -27,7 +29,7 @@ npx vitest run src/__tests__/export.test.ts # 运行单个测试文件
|
|||||||
|
|
||||||
`PromptEnvelope { version, model, messages: Message[] }` — 顶层协议文档。
|
`PromptEnvelope { version, model, messages: Message[] }` — 顶层协议文档。
|
||||||
|
|
||||||
`Message { id, role: "system"|"user"|"assistant", segments: Segment[], timestamp }` — 单条聊天消息。
|
`Message { id, role: "system"|"user"|"assistant"|"tool", segments: Segment[], timestamp }` — 单条聊天消息。
|
||||||
|
|
||||||
`Segment` 是基于 `kind` 的可辨识联合类型,共 11 种变体:`text`、`static_var`、`system_prompt`、`memory`、`skills`、`tool_overview`、`tool_call_request`、`tool_call_result`、`document`、`long_text`、`media`。
|
`Segment` 是基于 `kind` 的可辨识联合类型,共 11 种变体:`text`、`static_var`、`system_prompt`、`memory`、`skills`、`tool_overview`、`tool_call_request`、`tool_call_result`、`document`、`long_text`、`media`。
|
||||||
|
|
||||||
@@ -35,6 +37,33 @@ npx vitest run src/__tests__/export.test.ts # 运行单个测试文件
|
|||||||
|
|
||||||
ToolItem 有可选 `schema` 字段(JSON Schema 对象),在工具总览面板中可展开查看。
|
ToolItem 有可选 `schema` 字段(JSON Schema 对象),在工具总览面板中可展开查看。
|
||||||
|
|
||||||
|
DocumentSegment 有可选 `parsedContent` 字段,点击「查看解析」可展开 AI 对文档内容的提取结果。
|
||||||
|
|
||||||
|
### Skills 系统
|
||||||
|
|
||||||
|
Skills 遵循 Anthropic SKILL.md 规范,实现渐进式披露:
|
||||||
|
|
||||||
|
```
|
||||||
|
SKILL.md 文件 (YAML frontmatter + Markdown body)
|
||||||
|
│
|
||||||
|
├─ parseSkillMarkdown() → ParsedSkill { name, description, body, ... }
|
||||||
|
│ (src/utils/parseSkill.ts) YAML 通过极简手写解析器提取(不依赖外部库)
|
||||||
|
│
|
||||||
|
├─ skills-loader.ts → PARSED_SKILLS (Record<string, ParsedSkill>)
|
||||||
|
│ (src/data/skills-loader.ts) 通过 Vite ?raw 导入 4 个真实 SKILL.md 文件
|
||||||
|
│
|
||||||
|
├─ skills.ts → ALL_SKILLS (Record<string, SkillItem>)
|
||||||
|
│ (src/data/skills.ts) 8 个内置自定义 skill,用于 Demo C/D/E
|
||||||
|
│
|
||||||
|
└─ UI: SkillsView → L1 名称+描述(始终可见),L2 body(点击展开)
|
||||||
|
```
|
||||||
|
|
||||||
|
**两类 skill 数据源:**
|
||||||
|
- `src/data/skills.ts` — 8 个手写 SkillItem(code-review、deep-research、verify 等),通过 `getSkills(names)` 按名称选取
|
||||||
|
- `src/data/skills-loader.ts` — 4 个真实 Anthropic SKILL.md 文件(webapp-testing、pdf、doc-coauthoring、mcp-builder),通过 `parseSkillMarkdown()` 解析,`getRealSkills(names)` 获取
|
||||||
|
|
||||||
|
**parseSkillMarkdown 测试:** 位于 `src/__tests__/parseSkill.test.ts`,覆盖 YAML 解析、body 提取、必填字段校验、可选字段、统计信息等 7 个用例。
|
||||||
|
|
||||||
### 渲染管线
|
### 渲染管线
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -72,9 +101,20 @@ SegmentRenderer (按 segment.kind 分发)
|
|||||||
- `media` 用 `altText` 作为回退文本
|
- `media` 用 `altText` 作为回退文本
|
||||||
- `segmentToText()` 对结构性/tool Segment 返回 `null`——它们在消息级别统一处理
|
- `segmentToText()` 对结构性/tool Segment 返回 `null`——它们在消息级别统一处理
|
||||||
|
|
||||||
### Demo 数据 (`src/data/demos.ts`)
|
### Demo 数据 (`src/data/demos.ts` → `src/data/demos/`)
|
||||||
|
|
||||||
4 个场景,从 0 开始索引。默认激活索引 3(场景 D——综合场景,覆盖全部 9 种 Segment)。每个场景是一个完整的 `PromptEnvelope`,对话内容为中文。
|
6 个场景(A–F),每个场景是一个完整的 `PromptEnvelope`,对话内容为中文。默认激活索引 4(场景 F——真实 Anthropic Skills 加载)。
|
||||||
|
|
||||||
|
| 索引 | 场景 | 内容 |
|
||||||
|
|------|--------|---------------------------------------------------|
|
||||||
|
| 0 | 场景 A | 基础对话 + System Prompt + Memory |
|
||||||
|
| 1 | 场景 B | 工具调用:请求 → 执行(成功 & 失败) |
|
||||||
|
| 2 | 场景 C | 文档解析:点击「查看解析」看 AI 如何提取文档内容 |
|
||||||
|
| 3 | 场景 D | 综合:覆盖全部 11 种 Segment |
|
||||||
|
| 4 | 场景 F | 真实 Anthropic Skills(SKILL.md 文件加载 + parseSkillMarkdown 解析) |
|
||||||
|
| 5 | 场景 E | 日志分析:异常检测 + 安全审计 + 性能分析 |
|
||||||
|
|
||||||
|
每个场景文件位于 `src/data/demos/demo-{a..f}.ts`,`demos.ts` 仅做聚合导出。
|
||||||
|
|
||||||
### 颜色系统
|
### 颜色系统
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user