dsh-project-based-learning 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -2
- package/CONTRIBUTING.md +8 -8
- package/README.en.md +206 -0
- package/README.md +155 -69
- package/cordis.patch.yml +2 -2
- package/docs/DESIGN-AUDIT.md +2 -0
- package/docs/installing.zh.md +14 -14
- package/docs/releasing.zh.md +5 -4
- package/docs/zero-knowledge-path.zh.md +1 -1
- package/lib/index.js +5 -5
- package/package.json +7 -7
- package/skills/{dsh-coach → dsh-project-based-learning}/SKILL.md +1 -1
- package/skills/{dsh-coach → dsh-project-based-learning}/scripts/coach-install.mjs +1 -1
- package/README.zh.md +0 -118
- /package/skills/{dsh-coach → dsh-project-based-learning}/assets/review-report.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/assets/stage-acceptance.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/assets/state.template.json +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/assets/task-card.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/archetypes.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/diagnosis-bank.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/example.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/glossary.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/manifest.yml +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/pitfalls.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/verification.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/adapt.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/diagnosis.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/domain-contract.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/intake.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/permissions.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/review-acceptance.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/route.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/state.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/task-loop.md +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/scripts/coach-selftest.mjs +0 -0
- /package/skills/{dsh-coach → dsh-project-based-learning}/scripts/coach-validate.mjs +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
本文件记录 dsh-
|
|
3
|
+
本文件记录 `dsh-project-based-learning` 的对外变更。版本号含义:
|
|
4
4
|
|
|
5
5
|
- **插件包版本**(`package.json#version`):npm 包与组合包层的版本。
|
|
6
6
|
- **引擎版本**(`SKILL.md` 与 `references/engine/` 的教学法逻辑):`1.0.0` 起,交互协议变化才递增。
|
|
7
7
|
- **状态 schema 版本**(`state.json#schemaVersion`):`1.0`,字段语义变化才递增。
|
|
8
8
|
- **领域包版本**(`references/domains/<id>/manifest.yml#version`):各学科独立演进,与引擎版本解耦。
|
|
9
9
|
|
|
10
|
+
## [2.0.0] - 2026-09-12
|
|
11
|
+
|
|
12
|
+
**技能名与包名统一,学科机制文档化。** 技能注册名属于包的公开接口,改名会让引用旧名的提示词失效,故按破坏性变更升主版本。
|
|
13
|
+
|
|
14
|
+
### 变更(破坏性)
|
|
15
|
+
|
|
16
|
+
- **技能注册名由 `dsh-coach` 改为 `dsh-project-based-learning`**;技能目录由 `skills/dsh-coach/` 改为 `skills/dsh-project-based-learning/`。仓库名、npm 包名、技能名三者自此一致(社区先例:`dsh-ops-skill` 同样以一个同名技能分发)。引用旧技能名的提示词、脚本与文档需同步更新。
|
|
17
|
+
- `cordis.patch.yml` 的插件行 `id` 与加载器模块名同步为包名——该 `name` 必须等于 npm 包名,否则层加载会因模块解析失败而报错。
|
|
18
|
+
|
|
19
|
+
### 文档
|
|
20
|
+
|
|
21
|
+
- README 新增「学科与领域包」章节:折叠式列出随包提供的 Unity / C# 包内容(16 题 / 6 原型 / 5 配方 / 7 文件);给出「让 AI 生成领域包」的可复制提示词;说明切换学科的指令与三条边界(缺小节回退通用行为、校验器不解析题库、领域包须位于技能目录内)。
|
|
22
|
+
- 指令手册补 `切换或替换学科:<id>`。
|
|
23
|
+
- 历史审核记录 `docs/DESIGN-AUDIT.md` 保留 1.0.0 / 1.1.0 时期的旧路径原文,仅在文首加一条改名勘误,不篡改记录。
|
|
24
|
+
|
|
25
|
+
### 说明
|
|
26
|
+
|
|
27
|
+
- **引擎版本保持 `1.1.0`**:本次不涉及教学法逻辑,只涉及技能标识与外层文档;`state.json#schemaVersion` 仍为 `1.0`。
|
|
28
|
+
|
|
10
29
|
## [1.1.0] - 2026-09-12
|
|
11
30
|
|
|
12
31
|
**教学缺陷修复**(来自真实使用反馈:只问不教、过度要求实测、该教的让人自己悟)。引擎交互协议变化 → 引擎版本与插件包版本同步递增。
|
|
@@ -50,7 +69,7 @@
|
|
|
50
69
|
|
|
51
70
|
### 新增
|
|
52
71
|
|
|
53
|
-
- **教学引擎**(学科无关):`skills/dsh-
|
|
72
|
+
- **教学引擎**(学科无关):`skills/dsh-project-based-learning/SKILL.md` + `references/engine/`(intake、diagnosis、route、task-loop、review-acceptance、adapt、state、permissions、domain-contract)。
|
|
54
73
|
- **状态契约**:`.coach/state.json` 为唯一事实源,`.coach/PROGRESS.md` 为生成视图;含机械不变量与多项补充检查(1.0.0 时为 13 条;**1.1.0 增至 21 条**,见 `references/engine/state.md`)。
|
|
55
74
|
- **校验器**:`coach-validate.mjs`(状态层 + 领域包结构 + 引擎分层检查,零依赖)。
|
|
56
75
|
- **回归自测**:`coach-selftest.mjs`(含反向夹具与分层负例自动化;不启动子进程,可在受限沙箱内运行)。
|
package/CONTRIBUTING.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 贡献指南
|
|
2
2
|
|
|
3
|
-
感谢你考虑为 dsh-
|
|
3
|
+
感谢你考虑为 dsh-project-based-learning 做贡献。本项目的核心设计是**教学法引擎与学科内容分离**,因此最有价值的贡献通常是**新增或改进一个领域包**。
|
|
4
4
|
|
|
5
5
|
## 环境要求
|
|
6
6
|
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
node test/entry.smoke.mjs # 组合包入口契约 + 技能资源齐全
|
|
14
|
-
node skills/dsh-
|
|
15
|
-
node skills/dsh-
|
|
14
|
+
node skills/dsh-project-based-learning/scripts/coach-selftest.mjs # 校验器回归自测(含反向夹具与分层负例)
|
|
15
|
+
node skills/dsh-project-based-learning/scripts/coach-validate.mjs --state examples/state.demo.json
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
若你手上有 `dsh-plugin-guide` 提供的工具链,可再跑一次静态检查:
|
|
@@ -25,18 +25,18 @@ dsh-plugin-dev check --strict
|
|
|
25
25
|
|
|
26
26
|
### 1. 新增学科领域包(最欢迎)
|
|
27
27
|
|
|
28
|
-
引擎是学科无关的;学科内容全部住在 `skills/dsh-
|
|
28
|
+
引擎是学科无关的;学科内容全部住在 `skills/dsh-project-based-learning/references/domains/<domain-id>/`。新增一个学科 = 新增一个目录,**不需要改引擎**。
|
|
29
29
|
|
|
30
30
|
**步骤**
|
|
31
31
|
|
|
32
|
-
1. 读契约:`skills/dsh-
|
|
32
|
+
1. 读契约:`skills/dsh-project-based-learning/references/engine/domain-contract.md`。
|
|
33
33
|
2. 新建 `references/domains/<domain-id>/`,按契约补齐七个文件:
|
|
34
34
|
`manifest.yml`、`archetypes.md`、`diagnosis-bank.md`、`verification.md`、`pitfalls.md`、`example.md`、`glossary.md`。
|
|
35
35
|
3. `manifest.yml` 必须恰好包含契约规定的 8 个键(不增删),且 `id` 与目录名一致。
|
|
36
36
|
4. 跑校验器确认契约通过:
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
node skills/dsh-
|
|
39
|
+
node skills/dsh-project-based-learning/scripts/coach-validate.mjs --state examples/state.demo.json --domain-dir skills/dsh-project-based-learning/references/domains/<domain-id>
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
**内容要求(会被人工审)**
|
|
@@ -49,7 +49,7 @@ dsh-plugin-dev check --strict
|
|
|
49
49
|
|
|
50
50
|
### 2. 改引擎
|
|
51
51
|
|
|
52
|
-
引擎文件是 `skills/dsh-
|
|
52
|
+
引擎文件是 `skills/dsh-project-based-learning/SKILL.md` 与 `references/engine/*.md`。
|
|
53
53
|
|
|
54
54
|
**红线**:`SKILL.md`、`references/engine/*.md`、`assets/*.md` 中**不得出现学科专有词条**。校验器的 `LY01` 检查会用硬令牌黑名单拦截(NFKC 归一化 + 整词匹配;`scripts/` 不参与扫描,因为校验器自身含词表)。这条红线是"可替换特化"能成立的唯一保证。
|
|
55
55
|
|
|
@@ -57,7 +57,7 @@ dsh-plugin-dev check --strict
|
|
|
57
57
|
|
|
58
58
|
### 3. 改校验器与工具
|
|
59
59
|
|
|
60
|
-
`skills/dsh-
|
|
60
|
+
`skills/dsh-project-based-learning/scripts/` 下三个脚本,同样零依赖:
|
|
61
61
|
|
|
62
62
|
- 新增不变量时,**必须同时**:在 `references/engine/state.md` 声明该不变量、在 `coach-selftest.mjs` 增加断言、并在反向夹具 `examples/state.selftest-invalid.json` 里覆盖它。
|
|
63
63
|
- 禁止引入子进程与管道(受限沙箱下会失败);自测必须在进程内调用校验函数。
|
package/README.en.md
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<strong>A project-based learning coach: the learner does the work, the coach runs the loop</strong><br/>
|
|
3
|
+
A teaching skill and plugin bundle for <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a> (DSH) — teaching method and subject matter are separated, domain packs are swappable
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<a href="README.md">简体中文</a> · <a href="README.en.md"><strong>English</strong></a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://www.npmjs.com/package/dsh-project-based-learning"><img src="https://img.shields.io/npm/v/dsh-project-based-learning?style=for-the-badge&logo=npm&label=npm&color=CB3837" alt="npm version" /></a>
|
|
12
|
+
<a href="https://github.com/Kirisame1969/dsh-project-based-learning/actions"><img src="https://img.shields.io/github/actions/workflow/status/Kirisame1969/dsh-project-based-learning/ci.yml?style=for-the-badge&logo=github&label=CI" alt="CI" /></a>
|
|
13
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/Kirisame1969/dsh-project-based-learning?style=for-the-badge&color=blue" alt="License" /></a>
|
|
14
|
+
<a href="https://github.com/Kirisame1969/dsh-project-based-learning/stargazers"><img src="https://img.shields.io/github/stars/Kirisame1969/dsh-project-based-learning?style=for-the-badge&logo=github&color=yellow" alt="Stars" /></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p align="center">
|
|
18
|
+
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-plugin-4B6BFB?style=for-the-badge" alt="DSH plugin" /></a>
|
|
19
|
+
<img src="https://img.shields.io/badge/zero--dependency-no%20build%20step-16A34A?style=for-the-badge" alt="Zero dependency" />
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
<br/>
|
|
23
|
+
|
|
24
|
+
This project constrains AI tutoring into an **executable teaching protocol** that advances along a real project, and ships both as a DSH skill and as an installable plugin bundle.
|
|
25
|
+
|
|
26
|
+
- **Outputs**: a staged route, task cards, an evidence file (`.coach/state.json` as the single source of truth, `.coach/PROGRESS.md` rendered from it), and stage acceptance verdicts.
|
|
27
|
+
- **Enforced rules**: ability conclusions their evidence does not support are rejected; a stage cannot pass while blockers are open; subject-specific tokens must not appear in engine files.
|
|
28
|
+
- **How it is enforced**: a zero-dependency validator checks these rules mechanically, not merely in prose.
|
|
29
|
+
- **Subject decoupling**: the method lives in the engine, the knowledge lives in **swappable domain packs**; changing subject never requires touching the engine. The first pack ships in-repo: Unity / C#.
|
|
30
|
+
|
|
31
|
+
> **Naming**: the repository, the npm package and the registered skill all share one name, `dsh-project-based-learning` (the model invokes it as `skill("dsh-project-based-learning")`).
|
|
32
|
+
|
|
33
|
+
## 📐 Design stance
|
|
34
|
+
|
|
35
|
+
| Teaching problem | Treatment in this project |
|
|
36
|
+
|---|---|
|
|
37
|
+
| Factual knowledge and skills treated alike | Factual knowledge is **taught directly** (concept → why the current task needs it → minimal example → the learner applies it once → one confirmation question); scaffolding and graded hints are **for skills only** |
|
|
38
|
+
| Self-reports either believed blindly or dismissed | Three classes: an **ability** claim is a lead only; a **gap** claim is believed immediately and switches the coach into teaching; an **action** report is accepted as partially verified unless contradicted — no re-running demanded |
|
|
39
|
+
| One correct answer treated as mastery | Conclusions are layered by type: knowledge requires **explaining the mechanism unprompted and transferring it to a new situation**; behaviour requires reproducible material |
|
|
40
|
+
| Stage acceptance without criteria | A **three-tier verdict** (pass / conditional / fail) with a *reproducible + explainable + modifiable* sufficiency test |
|
|
41
|
+
| AI-written work counted as ability | AI-assisted work counts only after the learner can **explain, modify and verify** it |
|
|
42
|
+
|
|
43
|
+
## 🚫 What it is not
|
|
44
|
+
|
|
45
|
+
- **Not a question bank or a drill tool**: diagnostic questions locate and grade; they are not the teaching content.
|
|
46
|
+
- **Not a ghost-writing tool**: a full reference answer is given only on explicit request and never counts as evidence.
|
|
47
|
+
- **Not an official DeepSeek plugin**: this is a third-party implementation.
|
|
48
|
+
- **Not tied to a subject**: Unity / C# is the first domain pack shipped in-repo; it is not part of the engine.
|
|
49
|
+
|
|
50
|
+
## 🚀 Quick start
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
dsh plugin --profile web add dsh-project-based-learning
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Then enter teaching mode explicitly in a session and name the subject:
|
|
57
|
+
|
|
58
|
+
> 教学模式:我完全没学过 <subject>,请评估我的水平
|
|
59
|
+
|
|
60
|
+
Replace `<subject>` with what you want to learn. When the missing piece is factual knowledge, the coach teaches first (concept → why the current task needs it → minimal example → you apply it once → one confirmation question) and only then returns to the route — instead of opening with a set of diagnostic questions.
|
|
61
|
+
|
|
62
|
+
The Unity / C# pack shipped in-repo is demonstrated in `skills/dsh-project-based-learning/references/domains/unity-csharp/example.md`.
|
|
63
|
+
|
|
64
|
+
## 📦 Install
|
|
65
|
+
|
|
66
|
+
### Option 1 — plugin bundle (recommended)
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
dsh plugin --profile web add dsh-project-based-learning # or --profile headless, or your own profile
|
|
70
|
+
dsh --profile web --dump-config # the dsh-project-based-learning layer should appear
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Without npm, install straight from this repository:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
dsh plugin --profile web add github:Kirisame1969/dsh-project-based-learning
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The bundle layer (`cordis.patch.yml`) registers the packaged skill through `ctx.skills.register()`. The plugin only consumes the `skills` service — it imports nothing from the harness and brings no second copy of Cordis.
|
|
80
|
+
|
|
81
|
+
Uninstall:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
dsh plugin --profile web remove dsh-project-based-learning
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Learning data lives in `.coach/` inside your workspace; uninstalling does not delete it.
|
|
88
|
+
|
|
89
|
+
### Option 2 — skill files only
|
|
90
|
+
|
|
91
|
+
Into any DSH skill root (project-scoped `.dsh/skills/`, or `$DSH_HOME/skills/` for every workspace):
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npx -y -p dsh-project-based-learning coach-install --dest-root "$DSH_HOME/skills"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
From a checkout, the same installer runs locally and supports `--dry-run`, `--link` and `--force`:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
node skills/dsh-project-based-learning/scripts/coach-install.mjs --dry-run
|
|
101
|
+
node skills/dsh-project-based-learning/scripts/coach-install.mjs --dest-root "$DSH_HOME/skills"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Option 3 — no install
|
|
105
|
+
|
|
106
|
+
Point your agent at `skills/dsh-project-based-learning/SKILL.md` and ask it to follow that file. Engine protocol, domain pack and scripts are plain files.
|
|
107
|
+
|
|
108
|
+
## 💬 Commands
|
|
109
|
+
|
|
110
|
+
| Command | Effect |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `开始诊断` | Goal and experience intake, then a three-class minimum-coverage diagnostic |
|
|
113
|
+
| `制定路线` | Create or adjust the staged route |
|
|
114
|
+
| `本次任务:…` | One task loop (deliverable → attempt → hints → evidence) |
|
|
115
|
+
| `给提示,级别 N` | Only the requested hint level (1–5) |
|
|
116
|
+
| `审阅成果:…` | Review by severity, mechanism, impact, minimal fix, verification |
|
|
117
|
+
| `验收阶段` | Three-tier verdict, item-by-item checklist, retrieval recap |
|
|
118
|
+
| `复盘` | Capability delta, error patterns, next step |
|
|
119
|
+
| `调整节奏` | Re-plan by time or difficulty |
|
|
120
|
+
| `直接答案` | Full reference implementation (recorded as **not** evidence) |
|
|
121
|
+
| `查看学习档案` / `更新学习档案` | Read / write the state file and validate it |
|
|
122
|
+
| `切换或替换学科:<id>` | Switch domain pack; updates `state.domain` and `domainVersion`, keeps existing evidence |
|
|
123
|
+
|
|
124
|
+
The command vocabulary is Chinese today; the engine prose is subject-neutral, and translations are a welcome contribution.
|
|
125
|
+
|
|
126
|
+
## 🧩 How it works
|
|
127
|
+
|
|
128
|
+
```mermaid
|
|
129
|
+
flowchart LR
|
|
130
|
+
A["Confirm the goal"] --> B["Diagnose with real tasks"] --> C["Capability baseline"] --> D["Staged route"]
|
|
131
|
+
D --> E["Learner attempts"] --> F["Graded hints and review"] --> G{"Stage acceptance"}
|
|
132
|
+
G -->|pass| D
|
|
133
|
+
G -->|conditional or fail| E
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
skills/dsh-project-based-learning/
|
|
138
|
+
├── SKILL.md # engine: the loop, standing rules, command → file map
|
|
139
|
+
├── references/engine/ # 9 protocol files, loaded on demand
|
|
140
|
+
├── references/domains/unity-csharp/ # the domain pack shipped in-repo (7 files)
|
|
141
|
+
├── assets/ # state template + task / review / acceptance templates
|
|
142
|
+
└── scripts/ # zero-dependency validator, regression selftest, installer
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
- **State**: `.coach/state.json` is the single source of truth; `.coach/PROGRESS.md` is rendered from it (never hand-edited).
|
|
146
|
+
- **The validator** checks the state file, the domain-pack contract, and one **layering rule**: engine files must contain no subject-specific tokens. Run it after every accepted action:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
node skills/dsh-project-based-learning/scripts/coach-validate.mjs --state .coach/state.json --render
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 🎛️ Subjects and domain packs
|
|
153
|
+
|
|
154
|
+
The engine is bound to no subject: it references a domain pack only by **section name and id**, and hard-codes no subject id. The active subject is the `domain` field in the state file.
|
|
155
|
+
|
|
156
|
+
<details>
|
|
157
|
+
<summary><b>The pack shipped in-repo: Unity / C#</b> (click to expand)</summary>
|
|
158
|
+
|
|
159
|
+
| File | Content |
|
|
160
|
+
|---|---|
|
|
161
|
+
| `manifest.yml` | `id: unity-csharp`, version, engine compatibility range, per-task time window `[30, 90]` minutes |
|
|
162
|
+
| `archetypes.md` | 6 project archetypes (stage split, minimum verifiable output, acceptance points, failure modes) |
|
|
163
|
+
| `diagnosis-bank.md` | 16 diagnostic questions across 7 dimensions; each labelled with a **type** (factual / reasoning / mixed) and its **prerequisites**; factual items never open first contact |
|
|
164
|
+
| `verification.md` | 5 executable check recipes (preconditions, command, expected output, meaning of failure, required sandbox mode) |
|
|
165
|
+
| `pitfalls.md` | Grouped pitfalls with symptom, mechanism, minimal fix and the capability dimension each maps to |
|
|
166
|
+
| `example.md` | One fully worked example: intake → capability profile → stages → review → acceptance verdict |
|
|
167
|
+
| `glossary.md` | Bilingual terminology table |
|
|
168
|
+
|
|
169
|
+
Commands marked「(未验证)」inside that pack must be confirmed on a machine with Unity Editor before they can support an acceptance verdict.
|
|
170
|
+
|
|
171
|
+
</details>
|
|
172
|
+
|
|
173
|
+
**Adding a subject pack** — two routes:
|
|
174
|
+
|
|
175
|
+
1. **Let the AI generate it** — say this in a session:
|
|
176
|
+
|
|
177
|
+
> Following the contract in `references/engine/domain-contract.md`, generate a domain pack for "<subject>": create manifest.yml, archetypes.md, diagnosis-bank.md, verification.md, pitfalls.md, example.md and glossary.md under `references/domains/<id>/`; label diagnostic questions with type and prerequisites; validate with `coach-validate.mjs --domain-dir` when done.
|
|
178
|
+
|
|
179
|
+
2. **Write it by hand** — fill the same seven contract files; steps are in [`CONTRIBUTING.md`](CONTRIBUTING.md).
|
|
180
|
+
|
|
181
|
+
**Switching subject**: put the pack under `references/domains/<id>/`, then say `切换或替换学科:<id>`. The engine updates `state.domain` and `domainVersion` and records the reason in the route changes; **existing evidence and conclusions are kept** — only the route ahead and the question source change.
|
|
182
|
+
|
|
183
|
+
Three boundaries, stated plainly:
|
|
184
|
+
|
|
185
|
+
- When a pack lacks a section, the engine falls back to its generic behaviour and says so ("this pack does not provide X; using the generic approach this time").
|
|
186
|
+
- The validator only checks the keys of `manifest.yml` and the presence and size of section files; it does **not** parse the question bank. Field requirements on questions are a manual review item, not a mechanical gate.
|
|
187
|
+
- A domain pack must currently live under the skill's `references/domains/`; keeping packs in your workspace, or distributing them across repositories, is not supported yet.
|
|
188
|
+
|
|
189
|
+
## 📋 Requirements
|
|
190
|
+
|
|
191
|
+
- Node.js `^22.19.0 || >=24.0.0` (the scripts themselves need only `fs.cpSync`, available since 16.7; the plugin matrix matches the harness).
|
|
192
|
+
- No npm dependencies, no build step: `lib/index.js` is hand-written source, not a build artifact.
|
|
193
|
+
|
|
194
|
+
## 📚 Documentation
|
|
195
|
+
|
|
196
|
+
- [`docs/installing.zh.md`](docs/installing.zh.md) — installation details (native DSH / DSH Desktop / each skill root)
|
|
197
|
+
- [`CHANGELOG.md`](CHANGELOG.md) — version history
|
|
198
|
+
- [`CONTRIBUTING.md`](CONTRIBUTING.md) — how to add a domain pack
|
|
199
|
+
|
|
200
|
+
## 🤝 Contributing
|
|
201
|
+
|
|
202
|
+
The most valuable contribution is a **new domain pack**; start with [`CONTRIBUTING.md`](CONTRIBUTING.md).
|
|
203
|
+
|
|
204
|
+
## 📄 License
|
|
205
|
+
|
|
206
|
+
[MIT](LICENSE).
|
package/README.md
CHANGED
|
@@ -1,120 +1,206 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<strong>项目制学习教练:学员动手,教练跑闭环</strong><br/>
|
|
3
|
+
面向 <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a>(DSH)的教学技能与组合包 —— 教学法与学科内容分离,领域包可整体替换
|
|
4
|
+
</p>
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
<p align="center">
|
|
7
|
+
<a href="README.md"><strong>简体中文</strong></a> · <a href="README.en.md">English</a>
|
|
8
|
+
</p>
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://www.npmjs.com/package/dsh-project-based-learning"><img src="https://img.shields.io/npm/v/dsh-project-based-learning?style=for-the-badge&logo=npm&label=npm&color=CB3837" alt="npm 版本" /></a>
|
|
12
|
+
<a href="https://github.com/Kirisame1969/dsh-project-based-learning/actions"><img src="https://img.shields.io/github/actions/workflow/status/Kirisame1969/dsh-project-based-learning/ci.yml?style=for-the-badge&logo=github&label=CI" alt="CI" /></a>
|
|
13
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/Kirisame1969/dsh-project-based-learning?style=for-the-badge&color=blue" alt="许可证" /></a>
|
|
14
|
+
<a href="https://github.com/Kirisame1969/dsh-project-based-learning/stargazers"><img src="https://img.shields.io/github/stars/Kirisame1969/dsh-project-based-learning?style=for-the-badge&logo=github&color=yellow" alt="Star" /></a>
|
|
15
|
+
</p>
|
|
6
16
|
|
|
7
|
-
|
|
17
|
+
<p align="center">
|
|
18
|
+
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-插件-4B6BFB?style=for-the-badge" alt="DSH 插件" /></a>
|
|
19
|
+
<img src="https://img.shields.io/badge/零依赖-无构建步骤-16A34A?style=for-the-badge" alt="零依赖" />
|
|
20
|
+
</p>
|
|
8
21
|
|
|
9
|
-
|
|
22
|
+
<br/>
|
|
10
23
|
|
|
11
|
-
|
|
24
|
+
本项目把「AI 辅导」约束成一套**可执行的教学协议**,以真实项目为主线推进教学,并以 DSH 技能与可安装组合包两种形态分发。
|
|
12
25
|
|
|
13
|
-
|
|
26
|
+
- **产出物**:分阶段路线、任务卡、证据档案(`.coach/state.json` 为唯一事实源,`.coach/PROGRESS.md` 为生成视图)、阶段验收结论。
|
|
27
|
+
- **强制规则**:证据不支撑的能力结论被拒绝;存在未解决阻塞项时阶段不能判通过;学科专有词不得出现在引擎文件中。
|
|
28
|
+
- **执行方式**:上述规则由零依赖校验器机械检查,不只写在提示词里。
|
|
29
|
+
- **学科解耦**:教学法在引擎中,学科知识在**可整体替换的领域包**中;换学科不需要改引擎。随包提供第一个领域包:Unity / C#。
|
|
14
30
|
|
|
15
|
-
|
|
16
|
-
- **Hints are graded** (1 remind the goal → 5 full reference), and jumping to level 5 unasked is forbidden.
|
|
17
|
-
- **Self-reports are graded, never taken on faith and never waved away.** An *ability* claim ("I'm fluent") is only a lead and never counts as verified by itself; a *gap* claim ("I never learned X") is believed immediately and switches the coach into **teaching** instead of quizzing; an *action* report ("I ran it, the output was X") is accepted as partially verified unless contradicted — the coach will not keep asking you to re-run it.
|
|
18
|
-
- **Facts get taught; skills get practised.** When the missing piece is factual knowledge (an API name or signature, a call order, a language rule, a documented default), the coach explains it — mechanism, why your task needs it, a minimal example, then one confirmation question. Scaffolding and graded hints are for *skills* (writing code, debugging, designing), not for facts.
|
|
19
|
-
- **AI-assisted work counts only once the learner can explain, modify and verify it.**
|
|
20
|
-
- **Acceptance is three-tiered** (pass / conditional / fail), with a *reproducible + explainable + modifiable* test for evidence sufficiency.
|
|
31
|
+
> **命名**:仓库名、npm 包名、技能注册名三者一致,均为 `dsh-project-based-learning`(模型侧通过 `skill("dsh-project-based-learning")` 调用)。
|
|
21
32
|
|
|
22
|
-
|
|
33
|
+
## 📐 设计取向
|
|
23
34
|
|
|
24
|
-
|
|
35
|
+
| 教学问题 | 本项目的处理 |
|
|
36
|
+
|---|---|
|
|
37
|
+
| 事实性知识与技能混为一谈 | 事实性知识**直接讲授**(概念 → 为什么当前任务需要它 → 最小示例 → 学员应用一次 → 一道确认题);脚手架与分级提示**只用于技能** |
|
|
38
|
+
| 学员自述被一律采信或不采信 | 三类分别处理:**能力自述**仅作线索;**缺口自述**直接采信并转入讲授;**操作自述**无反证时按部分验证接受,不要求重复实测 |
|
|
39
|
+
| 单题答对即认定掌握 | 结论按类型分层:知识类要求**无提示解释机制并迁移到新情境**;行为类要求可复现材料 |
|
|
40
|
+
| 阶段验收缺少判据 | **三档结论**(通过/有条件通过/未通过),证据充分性判据为「可复现 + 可解释 + 可修改」 |
|
|
41
|
+
| AI 代写被计入能力 | AI 参与的成果,须由学员**解释、修改、验证**后才计为能力证据 |
|
|
42
|
+
|
|
43
|
+
## 🚫 它不是什么
|
|
25
44
|
|
|
26
|
-
|
|
45
|
+
- **不是题库或刷题工具**:诊断题只用于定位与分级,不作为教学内容。
|
|
46
|
+
- **不是代写工具**:完整参考答案仅在明确请求时给出,且不计入能力证据。
|
|
47
|
+
- **不是官方 DeepSeek 插件**:本项目为第三方实现。
|
|
48
|
+
- **不限定学科**:Unity / C# 是随包提供的第一个领域包,不属于引擎。
|
|
27
49
|
|
|
28
|
-
|
|
50
|
+
## 🚀 快速开始
|
|
29
51
|
|
|
30
52
|
```bash
|
|
31
|
-
dsh plugin --profile web add dsh-project-based-learning
|
|
32
|
-
dsh --profile web --dump-config # the dsh-project-based-learning layer should appear
|
|
53
|
+
dsh plugin --profile web add dsh-project-based-learning
|
|
33
54
|
```
|
|
34
55
|
|
|
35
|
-
|
|
56
|
+
在会话中显式进入教学模式,并给出要学的主题:
|
|
57
|
+
|
|
58
|
+
> 教学模式:我完全没学过 <主题>,请评估我的水平
|
|
59
|
+
|
|
60
|
+
把 `<主题>` 换成你要学的内容即可。遇到事实性知识缺口时,教练会先讲授(概念 → 为什么当前任务需要它 → 最小示例 → 你应用一次 → 一道确认题),再回到路线安排,而不是先出一组诊断题。
|
|
61
|
+
|
|
62
|
+
随包提供的 Unity / C# 领域包示范见 `skills/dsh-project-based-learning/references/domains/unity-csharp/example.md`。
|
|
63
|
+
|
|
64
|
+
## 📦 安装
|
|
65
|
+
|
|
66
|
+
### 方式一:组合包(推荐)
|
|
36
67
|
|
|
37
68
|
```bash
|
|
38
|
-
dsh plugin --profile web add
|
|
69
|
+
dsh plugin --profile web add dsh-project-based-learning # 也可用 --profile headless 或你自己的 profile
|
|
70
|
+
dsh --profile web --dump-config # 应出现 dsh-project-based-learning 层
|
|
39
71
|
```
|
|
40
72
|
|
|
41
|
-
|
|
73
|
+
不经 npm,直接从本仓库安装:
|
|
42
74
|
|
|
43
|
-
|
|
75
|
+
```bash
|
|
76
|
+
dsh plugin --profile web add github:Kirisame1969/dsh-project-based-learning
|
|
77
|
+
```
|
|
44
78
|
|
|
45
|
-
|
|
79
|
+
组合包层(`cordis.patch.yml`)通过 `ctx.skills.register()` 注册随包分发的技能。插件只消费 `skills` 服务,不 import 任何 harness 包,也不会带进第二份 Cordis。
|
|
80
|
+
|
|
81
|
+
卸载:
|
|
46
82
|
|
|
47
83
|
```bash
|
|
48
|
-
|
|
84
|
+
dsh plugin --profile web remove dsh-project-based-learning
|
|
49
85
|
```
|
|
50
86
|
|
|
51
|
-
|
|
87
|
+
学习数据位于工作区的 `.coach/`,卸载技能不会删除它。
|
|
88
|
+
|
|
89
|
+
### 方式二:只装技能文件
|
|
90
|
+
|
|
91
|
+
装进任意 DSH 技能根(项目级 `.dsh/skills/`,或用户级 `$DSH_HOME/skills/`):
|
|
52
92
|
|
|
53
93
|
```bash
|
|
54
|
-
|
|
55
|
-
node skills/dsh-coach/scripts/coach-install.mjs --dest-root "$DSH_HOME/skills"
|
|
94
|
+
npx -y -p dsh-project-based-learning coach-install --dest-root "$DSH_HOME/skills"
|
|
56
95
|
```
|
|
57
96
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Point your agent at `skills/dsh-coach/SKILL.md` and ask it to follow that file. Everything (engine protocol, domain pack, scripts) is plain files.
|
|
97
|
+
若已有本仓库检出,可直接运行同一个安装器,支持 `--dry-run`、`--link` 与 `--force`:
|
|
61
98
|
|
|
62
|
-
|
|
99
|
+
```powershell
|
|
100
|
+
node skills\dsh-project-based-learning\scripts\coach-install.mjs --dry-run
|
|
101
|
+
node skills\dsh-project-based-learning\scripts\coach-install.mjs --dest-root "$env:DSH_HOME\skills"
|
|
102
|
+
```
|
|
63
103
|
|
|
64
|
-
|
|
104
|
+
### 方式三:不安装
|
|
65
105
|
|
|
66
|
-
|
|
67
|
-
|---|---|
|
|
68
|
-
| `开始诊断` | Goal + experience intake, then a 3-task minimum diagnostic |
|
|
69
|
-
| `制定路线` | Stage plan with deliverables, non-goals and acceptance criteria |
|
|
70
|
-
| `本次任务:…` | One task loop (deliverable → attempt → hints → evidence) |
|
|
71
|
-
| `给提示,级别 N` | Only the requested hint level (1–5) |
|
|
72
|
-
| `审阅成果:…` | Review with severity + mechanism + impact + minimal fix + verification |
|
|
73
|
-
| `验收阶段` | Three-tier verdict, `userOnly` checklist, retrieval recap |
|
|
74
|
-
| `复盘` | Capability delta, error patterns, next step |
|
|
75
|
-
| `调整节奏` | Re-plan for time/difficulty |
|
|
76
|
-
| `直接答案` | Full reference answer (recorded as *not* evidence) |
|
|
77
|
-
| `查看学习档案` / `更新学习档案` | Read / write the state file |
|
|
106
|
+
将 agent 指向 `skills/dsh-project-based-learning/SKILL.md`,令其按该文件执行。引擎协议、领域包与脚本均为普通文件。
|
|
78
107
|
|
|
79
|
-
|
|
108
|
+
## 💬 指令手册
|
|
80
109
|
|
|
81
|
-
|
|
110
|
+
| 指令 | 作用 |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `开始诊断` | 收集目标与经验,做三类最小覆盖诊断 |
|
|
113
|
+
| `制定路线` | 生成 / 调整阶段路线 |
|
|
114
|
+
| `本次任务:…` | 进入单次任务循环(交付物 → 尝试 → 提示 → 证据) |
|
|
115
|
+
| `给提示,级别 N` | 只给指定级别的提示(1–5) |
|
|
116
|
+
| `审阅成果:…` | 按严重度、机制、影响、最小修法、验证方式审阅 |
|
|
117
|
+
| `验收阶段` | 三档结论、逐项核对、检索式复述 |
|
|
118
|
+
| `复盘` | 能力变化 / 错误模式 / 下一步 |
|
|
119
|
+
| `调整节奏` | 按时间或难度调整路线 |
|
|
120
|
+
| `直接答案` | 给出完整参考实现(记录为**不计**能力证据) |
|
|
121
|
+
| `查看学习档案` / `更新学习档案` | 读 / 写状态并校验 |
|
|
122
|
+
| `切换或替换学科:<id>` | 更换领域包,更新 `state.domain` 与 `domainVersion`,保留既有证据 |
|
|
123
|
+
|
|
124
|
+
指令词目前为中文;引擎正文与学科无关,翻译属于受欢迎的贡献。
|
|
125
|
+
|
|
126
|
+
## 🧩 工作原理
|
|
127
|
+
|
|
128
|
+
```mermaid
|
|
129
|
+
flowchart LR
|
|
130
|
+
A["确认目标"] --> B["真实任务诊断"] --> C["能力基线"] --> D["阶段路线"]
|
|
131
|
+
D --> E["学员先动手"] --> F["分级提示与审阅"] --> G{"阶段验收"}
|
|
132
|
+
G -->|通过| D
|
|
133
|
+
G -->|有条件或未通过| E
|
|
134
|
+
```
|
|
82
135
|
|
|
83
136
|
```
|
|
84
|
-
skills/dsh-
|
|
85
|
-
├── SKILL.md
|
|
86
|
-
├── references/engine/
|
|
87
|
-
├── references/domains/unity-csharp/
|
|
88
|
-
├── assets/
|
|
89
|
-
└── scripts/
|
|
137
|
+
skills/dsh-project-based-learning/
|
|
138
|
+
├── SKILL.md # 引擎:闭环、常驻规则、指令 → 必读文件映射
|
|
139
|
+
├── references/engine/ # 9 个协议文件,按需加载
|
|
140
|
+
├── references/domains/unity-csharp/ # 随包提供的领域包(7 个文件)
|
|
141
|
+
├── assets/ # 状态模板 + 任务卡 / 审阅 / 验收模板
|
|
142
|
+
└── scripts/ # 零依赖校验器、回归自测、安装器
|
|
90
143
|
```
|
|
91
144
|
|
|
92
|
-
-
|
|
93
|
-
-
|
|
145
|
+
- **状态**:`.coach/state.json` 为唯一事实源,`.coach/PROGRESS.md` 由其渲染(禁止手工编辑)。
|
|
146
|
+
- **校验器**检查状态文件、领域包契约,以及一条**分层规则**:引擎文件中不得出现学科专有词条。每次可验收动作后运行:
|
|
94
147
|
|
|
95
148
|
```bash
|
|
96
|
-
node skills/dsh-
|
|
149
|
+
node skills/dsh-project-based-learning/scripts/coach-validate.mjs --state .coach/state.json --render
|
|
97
150
|
```
|
|
98
151
|
|
|
99
|
-
##
|
|
152
|
+
## 🎛️ 学科与领域包
|
|
153
|
+
|
|
154
|
+
引擎不绑定任何学科:它只用**小节名与 id** 引用领域包,不硬编码学科 id。当前学科由状态文件的 `domain` 字段决定。
|
|
155
|
+
|
|
156
|
+
<details>
|
|
157
|
+
<summary><b>随包提供的领域包:Unity / C#</b>(点击展开)</summary>
|
|
158
|
+
|
|
159
|
+
| 文件 | 内容 |
|
|
160
|
+
|---|---|
|
|
161
|
+
| `manifest.yml` | `id: unity-csharp`、版本、引擎兼容范围、单次任务时长区间 `[30, 90]` 分钟 |
|
|
162
|
+
| `archetypes.md` | 6 个项目原型(阶段切分、最小可验证成果、验收要点、失败模式) |
|
|
163
|
+
| `diagnosis-bank.md` | 16 道诊断题,覆盖 7 个维度;每题标注**类型**(事实性/推理性/综合)与**前置知识**,事实性题不作首次接触题 |
|
|
164
|
+
| `verification.md` | 5 条可执行核对配方(前置条件、命令、期望输出、失败含义、所需沙箱模式) |
|
|
165
|
+
| `pitfalls.md` | 陷阱分组的症状、机制、最小修复与对应能力维度 |
|
|
166
|
+
| `example.md` | 一份填好的完整示例:intake → 能力画像 → 阶段 → 审阅 → 验收结论 |
|
|
167
|
+
| `glossary.md` | 中英对照术语表 |
|
|
168
|
+
|
|
169
|
+
该包内标注「(未验证)」的命令,需在装有 Unity Editor 的环境实测确认后才可用于验收判定。
|
|
170
|
+
|
|
171
|
+
</details>
|
|
172
|
+
|
|
173
|
+
**新增一个学科包**,两条路径:
|
|
174
|
+
|
|
175
|
+
1. **让 AI 生成**——在会话中直接说:
|
|
176
|
+
|
|
177
|
+
> 按 `references/engine/domain-contract.md` 的契约,为「<学科>」生成领域包:在 `references/domains/<id>/` 下建立 manifest.yml、archetypes.md、diagnosis-bank.md、verification.md、pitfalls.md、example.md、glossary.md 七个文件;诊断题标注类型与前置知识;生成后用 `coach-validate.mjs --domain-dir` 校验。
|
|
178
|
+
|
|
179
|
+
2. **手工编写**——按同一份契约补齐七个文件,步骤见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
|
|
180
|
+
|
|
181
|
+
**切换学科**:把包放入 `references/domains/<id>/`,然后说 `切换或替换学科:<id>`。引擎会更新 `state.domain` 与 `domainVersion` 并在路线变更中记录原因;**已完成的能力证据与结论保留**,只影响后续路线与题目来源。
|
|
182
|
+
|
|
183
|
+
三点边界(如实声明):
|
|
100
184
|
|
|
101
|
-
|
|
185
|
+
- 领域包缺某个小节时,引擎回退到通用行为,并在回复中说明「该学科包未提供 X,本次按通用做法处理」。
|
|
186
|
+
- 校验器只检查 `manifest.yml` 的键、小节文件是否存在与大小,**不解析题库内容**;题目的字段要求属于人工核对项,不是机械门禁。
|
|
187
|
+
- 领域包目前必须位于技能目录的 `references/domains/` 下;把领域包放在工作区、或跨仓库分发领域包,尚无支持。
|
|
102
188
|
|
|
103
|
-
##
|
|
189
|
+
## 📋 环境要求
|
|
104
190
|
|
|
105
|
-
- Node.js `^22.19.0 || >=24.0.0
|
|
106
|
-
-
|
|
191
|
+
- Node.js `^22.19.0 || >=24.0.0`(脚本本身仅需 ≥ 16.7 的 `fs.cpSync`;插件矩阵与 harness 对齐)。
|
|
192
|
+
- 无 npm 依赖、无构建步骤:`lib/index.js` 为手写来源,不是构建产物。
|
|
107
193
|
|
|
108
|
-
##
|
|
194
|
+
## 📚 文档
|
|
109
195
|
|
|
110
|
-
- [`docs/installing.zh.md`](docs/installing.zh.md)
|
|
111
|
-
- [`CHANGELOG.md`](CHANGELOG.md)
|
|
112
|
-
- [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
196
|
+
- [`docs/installing.zh.md`](docs/installing.zh.md) —— 安装细则(原生 DSH / DSH Desktop / 各技能根)
|
|
197
|
+
- [`CHANGELOG.md`](CHANGELOG.md) —— 版本变更
|
|
198
|
+
- [`CONTRIBUTING.md`](CONTRIBUTING.md) —— 新增领域包的方法
|
|
113
199
|
|
|
114
|
-
##
|
|
200
|
+
## 🤝 贡献
|
|
115
201
|
|
|
116
|
-
|
|
202
|
+
最有价值的贡献是**新增一个学科领域包**,请先阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
|
|
117
203
|
|
|
118
|
-
##
|
|
204
|
+
## 📄 许可
|
|
119
205
|
|
|
120
|
-
[MIT](LICENSE)
|
|
206
|
+
[MIT](LICENSE)。
|
package/cordis.patch.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# dsh-
|
|
1
|
+
# dsh-project-based-learning 组合包层:把随包分发的教练技能注册为一个 DSH 运行时技能。
|
|
2
2
|
#
|
|
3
3
|
# 本文件是 `package.json#dsh.bundle.patch` 指向的层。层语义:一个 YAML 数组的
|
|
4
4
|
# 行动词(row verbs);`insert` 向组合后的配置加入插件行,后续层可按 `id`
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
# 前提:目标 profile 已挂载 `@deepseek-ai/dsh-skill`(`@deepseek-ai/dsh-base` 已包含)。
|
|
12
12
|
# 本包不贡献任何工具,也不改动既有行。
|
|
13
13
|
- insert:
|
|
14
|
-
- id: dsh-
|
|
14
|
+
- id: dsh-project-based-learning
|
|
15
15
|
name: dsh-project-based-learning
|
package/docs/DESIGN-AUDIT.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# 教学教练插件:弱点分析与改动审核(第 1–2 轮)
|
|
2
2
|
|
|
3
|
+
> **勘误(2026-09-12)**:本文记录的是 1.0.0 / 1.1.0 时期的实况。技能目录已于 **1.2.0** 由 `skills/dsh-coach/` 改名为 `skills/dsh-project-based-learning/`,技能注册名同步变更;下文旧路径请按此对应,其余内容未改写。
|
|
4
|
+
|
|
3
5
|
对象:`通用AI项目制教学工作流.md`(379 行,14 节,下称"原文")
|
|
4
6
|
产物:可安装的 DSH 技能包 `coach/`(引擎 + Unity/C# 领域包 + 状态契约 + 校验器)
|
|
5
7
|
本文性质:**改动前置审核记录**。任何对原文的改动都必须先通过下方六项检验,且必须经过第二轮反方复审;未通过者驳回或延后,不以"改进"名义直接下手。
|
package/docs/installing.zh.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 安装细则
|
|
2
2
|
|
|
3
|
-
本文覆盖 dsh-
|
|
3
|
+
本文覆盖 `dsh-project-based-learning`(注册技能名 `dsh-project-based-learning`)的全部安装路径:技能目录方式与组合包方式。
|
|
4
4
|
|
|
5
5
|
## 先选路径
|
|
6
6
|
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
### A1 项目级
|
|
30
30
|
|
|
31
31
|
```powershell
|
|
32
|
-
# 在本仓库根执行;默认目标是 <cwd>/.dsh/skills/dsh-
|
|
33
|
-
node skills/dsh-
|
|
32
|
+
# 在本仓库根执行;默认目标是 <cwd>/.dsh/skills/dsh-project-based-learning
|
|
33
|
+
node skills/dsh-project-based-learning/scripts/coach-install.mjs
|
|
34
34
|
|
|
35
35
|
# 先看会做什么(不写盘)
|
|
36
|
-
node skills/dsh-
|
|
36
|
+
node skills/dsh-project-based-learning/scripts/coach-install.mjs --dry-run
|
|
37
37
|
|
|
38
38
|
# 用目录联接安装:源文件改动即时生效,适合边改边用
|
|
39
|
-
node skills/dsh-
|
|
39
|
+
node skills/dsh-project-based-learning/scripts/coach-install.mjs --link
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
`--link` 在 Windows 上建立**目录联接(Junction)**,不需要管理员权限;其它平台建立目录符号链接。**分发时不要用 `--link`**——对方删掉你的源目录,技能就失效了。
|
|
@@ -44,7 +44,7 @@ node skills/dsh-coach/scripts/coach-install.mjs --link
|
|
|
44
44
|
### A2 用户级(跨工作区)
|
|
45
45
|
|
|
46
46
|
```powershell
|
|
47
|
-
node skills/dsh-
|
|
47
|
+
node skills/dsh-project-based-learning/scripts/coach-install.mjs --dest-root "$env:DSH_HOME\skills"
|
|
48
48
|
# 原生 DSH 若未设置 DSH_HOME,其默认 home 为 ~/.dsh
|
|
49
49
|
```
|
|
50
50
|
|
|
@@ -53,13 +53,13 @@ node skills/dsh-coach/scripts/coach-install.mjs --dest-root "$env:DSH_HOME\skill
|
|
|
53
53
|
任何被扫描的根都可以,只要目录名是技能名:
|
|
54
54
|
|
|
55
55
|
```powershell
|
|
56
|
-
node skills/dsh-
|
|
56
|
+
node skills/dsh-project-based-learning/scripts/coach-install.mjs --dest-root "<项目根>\.agents\skills"
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
## B. 组合包(插件)安装
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
dsh plugin --profile <profile> add /path/to/dsh-
|
|
62
|
+
dsh plugin --profile <profile> add /path/to/dsh-project-based-learning # 本地检出
|
|
63
63
|
dsh plugin --profile <profile> add dsh-project-based-learning # 从 npm
|
|
64
64
|
dsh plugin --profile <profile> add github:Kirisame1969/dsh-project-based-learning # 不经 npm,直接从仓库
|
|
65
65
|
dsh --profile <profile> --dump-config # 应出现 dsh-project-based-learning 层
|
|
@@ -73,23 +73,23 @@ dsh plugin --profile <profile> remove dsh-project-based-learning # 卸
|
|
|
73
73
|
|
|
74
74
|
## C. DSH Desktop
|
|
75
75
|
|
|
76
|
-
- 桌面端有自己的插件界面(市场插件 `dshmarket`,站点 <https://dshmarket.com>,仓库 [dsh-market/dsh-market](https://github.com/dsh-market/dsh-market))。若 dsh-
|
|
76
|
+
- 桌面端有自己的插件界面(市场插件 `dshmarket`,站点 <https://dshmarket.com>,仓库 [dsh-market/dsh-market](https://github.com/dsh-market/dsh-market))。若 dsh-project-based-learning 已被收录,可直接在界面里一键安装。
|
|
77
77
|
- 尚未收录时,用 A1/A2 的技能目录方式即可——桌面端同样扫描这些技能根。
|
|
78
78
|
- 桌面端把插件装在 `$DSH_HOME/profiles/<profile>/` 下的"代际"目录中,并通过 profile 的 `package.json` 依赖与 pnpm override 指向它。
|
|
79
79
|
|
|
80
80
|
## D. 不安装
|
|
81
81
|
|
|
82
|
-
让 agent 直接读本仓库的 `skills/dsh-
|
|
82
|
+
让 agent 直接读本仓库的 `skills/dsh-project-based-learning/SKILL.md` 并按它执行。适合评估与调试。
|
|
83
83
|
|
|
84
84
|
## 怎么确认装好了
|
|
85
85
|
|
|
86
|
-
1. **会话技能目录**里出现 `dsh-
|
|
87
|
-
2. 让模型调用一次 `skill("dsh-
|
|
88
|
-
3. 目录检查:`<技能根>/dsh-
|
|
86
|
+
1. **会话技能目录**里出现 `dsh-project-based-learning`(模型会在下一步看到它);
|
|
87
|
+
2. 让模型调用一次 `skill("dsh-project-based-learning")`,应返回技能正文,并在资源提示里给出技能目录的绝对路径;
|
|
88
|
+
3. 目录检查:`<技能根>/dsh-project-based-learning/SKILL.md` 存在,且 `references/domains/unity-csharp/` 下有 7 个文件。
|
|
89
89
|
|
|
90
90
|
## 卸载
|
|
91
91
|
|
|
92
|
-
- 纯技能:删除 `<技能根>/dsh-
|
|
92
|
+
- 纯技能:删除 `<技能根>/dsh-project-based-learning` 目录(联接方式则删除联接本身,源目录不受影响)。
|
|
93
93
|
- 组合包:`dsh plugin --profile <profile> remove dsh-project-based-learning`。
|
|
94
94
|
- 学习数据在**你自己的工作区** `.coach/` 下,与安装无关;卸载技能不会删除它。
|
|
95
95
|
|
package/docs/releasing.zh.md
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
node test/entry.smoke.mjs # 入口契约 + 资源齐全 → PASS
|
|
11
|
-
node skills/dsh-
|
|
12
|
-
node skills/dsh-
|
|
11
|
+
node skills/dsh-project-based-learning/scripts/coach-selftest.mjs # 校验器回归 → 9/9 PASS
|
|
12
|
+
node skills/dsh-project-based-learning/scripts/coach-validate.mjs --state examples/state.demo.json
|
|
13
13
|
dsh-plugin-dev check # 社区静态检查 → ok=true(9 通过 / 0 失败 / 2 警告)
|
|
14
14
|
```
|
|
15
15
|
|
|
@@ -23,9 +23,10 @@ dsh-plugin-dev check # 社区静态检查
|
|
|
23
23
|
**可用通道:HTTPS + gh token**。`git push` 的 dry-run 已到达 GitHub 并完成鉴权(仅因当时尚无共同历史而被拒 non-fast-forward):
|
|
24
24
|
|
|
25
25
|
```powershell
|
|
26
|
+
# 在仓库根目录执行(下称 <仓库根>)
|
|
26
27
|
$t = gh auth token
|
|
27
28
|
$b64 = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("x-access-token:$t"))
|
|
28
|
-
git -C
|
|
29
|
+
git -C "<仓库根>" -c http.extraheader="AUTHORIZATION: basic $b64" `
|
|
29
30
|
push https://github.com/Kirisame1969/dsh-project-based-learning.git main
|
|
30
31
|
```
|
|
31
32
|
|
|
@@ -49,7 +50,7 @@ dsh plugin --profile web add dsh-project-based-learning
|
|
|
49
50
|
|
|
50
51
|
## 3. 提交到社区列表("被搜到"的关键)
|
|
51
52
|
|
|
52
|
-
**已确认的提交形态**:向 [awesome-dsh-plugin/awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 提 PR,新增一个目录条目文件 `data/plugins/<owner>__<repo>.yml
|
|
53
|
+
**已确认的提交形态**:向 [awesome-dsh-plugin/awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 提 PR,新增一个目录条目文件 `data/plugins/<owner>__<repo>.yml`。标题遵循仓库既有先例(已合并的 [PR #3405](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/3405)):
|
|
53
54
|
|
|
54
55
|
```
|
|
55
56
|
feat(catalog): add dsh-project-based-learning by Kirisame1969
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
5. **Z6/Z7 判据**:跑校验器,看是否有 `ST-W7` 提醒:
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
node skills/dsh-
|
|
45
|
+
node skills/dsh-project-based-learning/scripts/coach-validate.mjs --state .coach/state.json
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
> `ST-W7` 是 **warn,不是门禁**(CI 退出码只看 error)。这是 2.1 修订的明确取舍:漏报的代价是"可能漂移"(有本清单兜底),误报的代价是每次正常教学都被阻塞。
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// dsh-
|
|
1
|
+
// dsh-project-based-learning bundle entry point.
|
|
2
2
|
//
|
|
3
3
|
// 把随包分发的教练技能注册为一个 DSH 运行时技能。技能正文是本仓库的
|
|
4
|
-
// `skills/dsh-
|
|
4
|
+
// `skills/dsh-project-based-learning/SKILL.md`;它的相对引用(`references/`、`assets/`、`scripts/`)
|
|
5
5
|
// 通过目录型 resourceBase 解析到技能目录,因此 agent 只在需要时才读取引擎协议、
|
|
6
6
|
// 领域包与模板(progressive disclosure)。
|
|
7
7
|
//
|
|
@@ -12,13 +12,13 @@ import { readFileSync } from 'node:fs'
|
|
|
12
12
|
import { dirname, join } from 'node:path'
|
|
13
13
|
import { fileURLToPath } from 'node:url'
|
|
14
14
|
|
|
15
|
-
export const name = 'dsh-
|
|
15
|
+
export const name = 'dsh-project-based-learning'
|
|
16
16
|
|
|
17
17
|
/** 依赖 `skills` 服务:缺失该服务的组合不会加载本插件。 */
|
|
18
18
|
export const inject = ['skills']
|
|
19
19
|
|
|
20
20
|
const packageRoot = dirname(dirname(fileURLToPath(import.meta.url)))
|
|
21
|
-
const skillRoot = join(packageRoot, 'skills', 'dsh-
|
|
21
|
+
const skillRoot = join(packageRoot, 'skills', 'dsh-project-based-learning')
|
|
22
22
|
|
|
23
23
|
const FALLBACK_DESCRIPTION =
|
|
24
24
|
'项目制学习教练:以真实项目为主线,通过诊断、分级提示、证据审阅与阶段验收,引导学员独立完成成果。仅在用户明确要求教学模式时启用。'
|
|
@@ -54,7 +54,7 @@ export function apply(ctx) {
|
|
|
54
54
|
|
|
55
55
|
ctx.effect(() =>
|
|
56
56
|
ctx.skills.register({
|
|
57
|
-
name: 'dsh-
|
|
57
|
+
name: 'dsh-project-based-learning',
|
|
58
58
|
source: 'bundled',
|
|
59
59
|
description: summary ?? FALLBACK_DESCRIPTION,
|
|
60
60
|
content: body,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-project-based-learning",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "项目制学习教练:学科无关的教学引擎 + 可替换领域包(随包提供 Unity/C# 特化)。以 DSH 技能与组合包双形态分发。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"./package.json": "./package.json"
|
|
11
11
|
},
|
|
12
12
|
"bin": {
|
|
13
|
-
"coach-validate": "./skills/dsh-
|
|
14
|
-
"coach-selftest": "./skills/dsh-
|
|
15
|
-
"coach-install": "./skills/dsh-
|
|
13
|
+
"coach-validate": "./skills/dsh-project-based-learning/scripts/coach-validate.mjs",
|
|
14
|
+
"coach-selftest": "./skills/dsh-project-based-learning/scripts/coach-selftest.mjs",
|
|
15
|
+
"coach-install": "./skills/dsh-project-based-learning/scripts/coach-install.mjs"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
18
|
"lib",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"examples",
|
|
23
23
|
"LICENSE",
|
|
24
24
|
"README.md",
|
|
25
|
-
"README.
|
|
25
|
+
"README.en.md",
|
|
26
26
|
"CHANGELOG.md",
|
|
27
27
|
"CONTRIBUTING.md"
|
|
28
28
|
],
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
|
-
"validate": "node skills/dsh-
|
|
75
|
-
"selftest": "node skills/dsh-
|
|
74
|
+
"validate": "node skills/dsh-project-based-learning/scripts/coach-validate.mjs --state examples/state.demo.json",
|
|
75
|
+
"selftest": "node skills/dsh-project-based-learning/scripts/coach-selftest.mjs"
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 用法:
|
|
6
6
|
* node scripts/coach-install.mjs [--dest-root <dir>] [--link] [--force] [--dry-run]
|
|
7
7
|
*
|
|
8
|
-
* 默认目标: <cwd>/.dsh/skills/dsh-
|
|
8
|
+
* 默认目标: <cwd>/.dsh/skills/dsh-project-based-learning
|
|
9
9
|
* `.dsh/skills` 是 DSH 的 project-dsh 技能根(rank 100),按官方说明新增 skill
|
|
10
10
|
* 会在下一次模型步骤进入会话目录,无需重启宿主。
|
|
11
11
|
*
|
package/README.zh.md
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
[English](README.md)
|
|
2
|
-
|
|
3
|
-
# dsh-coach
|
|
4
|
-
|
|
5
|
-
**面向 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH)的项目制学习教练:学员动手,教练跑闭环。**
|
|
6
|
-
|
|
7
|
-
同一棵树同时提供两种形态:**技能(skill)**,以及可安装的**组合包(plugin bundle)**。教学引擎与学科内容分离——学科知识住在可整体替换的**领域包**里(当前提供 Unity / C#)。
|
|
8
|
-
|
|
9
|
-
它不靠讲课来"教"。它跑一条闭环:确认目标 → 用真实任务做诊断 → 建立有证据支撑的能力基线 → 设定分阶段可交付成果 → 让学员先动手 → 用分级问题审阅 → 依据证据判阶段通过与否。
|
|
10
|
-
|
|
11
|
-
## 为什么做这个
|
|
12
|
-
|
|
13
|
-
AI"辅导"通常掉进两个坑:从零开始照本宣科,或者直接替人把活干完。两者都毁掉学习。本项目把相反的规则写成了 agent 必须遵守的协议:
|
|
14
|
-
|
|
15
|
-
- **学员先尝试。** 完整答案是最后手段,不是第一步。
|
|
16
|
-
- **提示分级**(1 提醒目标 → 5 完整参考),未经请求跳到第 5 级是禁止的。
|
|
17
|
-
- **自述按三类区别对待**,既不一律采信、也不一律不采信:**能力自述**("我熟练")只是线索,不能单独作为已验证;**缺口自述**("我没学过 X")**直接采信并转入讲授**,而不是先考一遍;**操作自述**("我跑了一次,输出是 X")无反证时按部分验证接受——教练不会再要求你重跑一遍,也不会再要你先补截图。
|
|
18
|
-
- **知识直接教,技能才靠练。** 缺的是事实性知识(API 名称与签名、调用顺序、语言规则、文档已明的默认值)时,教练会**讲清楚**:概念 → 为什么你的任务需要它 → 最小示例 → 一道确认题。脚手架与分级提示用于**技能**(写代码、排错、设计),不用于事实。
|
|
19
|
-
- **AI 参与的成果,只有在学员能解释、修改、验证之后**才算作他的能力证据。
|
|
20
|
-
- **验收三档**(通过 / 有条件通过 / 未通过),证据充分性的判据是"可复现 + 可解释 + 可修改"。
|
|
21
|
-
|
|
22
|
-
这些规则不只是文字:一个**零依赖校验器**会在学员的状态文件上机械地执行它们。
|
|
23
|
-
|
|
24
|
-
## 安装
|
|
25
|
-
|
|
26
|
-
### 方式一:组合包(推荐)
|
|
27
|
-
|
|
28
|
-
装进任意 DSH profile:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
dsh plugin --profile web add dsh-project-based-learning # 也可用 --profile headless 或你自己的 profile
|
|
32
|
-
dsh --profile web --dump-config # 应出现 dsh-project-based-learning 层
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
不经 npm,直接从本仓库安装:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
dsh plugin --profile web add github:Kirisame1969/dsh-project-based-learning
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
组合包层(`cordis.patch.yml`)通过 `ctx.skills.register()` 注册随包分发的技能。插件只消费 `skills` 服务,不 import 任何 harness 包,也不会带进第二份 Cordis。
|
|
42
|
-
|
|
43
|
-
### 方式二:只装技能文件
|
|
44
|
-
|
|
45
|
-
装进任意 DSH 技能根(项目级 `.dsh/skills/`,或用户级 `$DSH_HOME/skills/`):
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npx -y -p dsh-project-based-learning coach-install --dest-root "$DSH_HOME/skills"
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
若已有本仓库检出,可直接运行同一个安装器,支持 `--dry-run`、`--link` 与 `--force`:
|
|
52
|
-
|
|
53
|
-
```powershell
|
|
54
|
-
node skills\dsh-coach\scripts\coach-install.mjs --dry-run
|
|
55
|
-
node skills\dsh-coach\scripts\coach-install.mjs --dest-root "$env:DSH_HOME\skills"
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### 方式三:完全不安装
|
|
59
|
-
|
|
60
|
-
把 agent 指向 `skills/dsh-coach/SKILL.md`,让它按该文件执行。所有内容(引擎协议、领域包、脚本)都是普通文件。
|
|
61
|
-
|
|
62
|
-
## 用法
|
|
63
|
-
|
|
64
|
-
加载后用自然语言指令驱动:
|
|
65
|
-
|
|
66
|
-
| 指令 | 作用 |
|
|
67
|
-
|---|---|
|
|
68
|
-
| `开始诊断` | 收集目标与经验,做三类最小覆盖诊断 |
|
|
69
|
-
| `制定路线` | 生成/调整阶段路线 |
|
|
70
|
-
| `本次任务:…` | 进入单次任务循环 |
|
|
71
|
-
| `给提示,级别 N` | 只给指定级别的提示 |
|
|
72
|
-
| `审阅成果:…` | 按五要素 + 依据 + 核对状态审阅 |
|
|
73
|
-
| `验收阶段` | 三档结论 + `userOnly` 逐项核对 + 检索式复述 |
|
|
74
|
-
| `复盘` | 能力变化 / 错误模式 / 下一步 |
|
|
75
|
-
| `调整节奏` | 按时间或难度调整路线 |
|
|
76
|
-
| `直接答案` | 给完整参考实现(记录为**不计**能力证据) |
|
|
77
|
-
| `查看学习档案` / `更新学习档案` | 读/写状态并校验 |
|
|
78
|
-
|
|
79
|
-
## 工作原理
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
skills/dsh-coach/
|
|
83
|
-
├── SKILL.md # 引擎:闭环、常驻规则、指令→必读文件映射
|
|
84
|
-
├── references/engine/ # 9 个协议文件,按需加载
|
|
85
|
-
├── references/domains/unity-csharp/ # 可替换的学科包(7 个文件)
|
|
86
|
-
├── assets/ # 状态模板 + 任务卡/审阅/验收模板
|
|
87
|
-
└── scripts/ # 零依赖校验器、回归自测、安装器
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
- **状态**在 `.coach/state.json`——唯一事实源;`.coach/PROGRESS.md` 由它渲染而来(**禁止手工编辑**)。
|
|
91
|
-
- **校验器**检查状态文件、领域包契约,以及一条**分层规则**:引擎文件中不得出现学科专有词条。每次可验收动作后运行:
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
node skills/dsh-coach/scripts/coach-validate.mjs --state .coach/state.json --render
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## 替换学科特化
|
|
98
|
-
|
|
99
|
-
引擎学科无关;换学科**不需要改引擎**。新增 `references/domains/<new-id>/` 七个文件并按契约填 `manifest.yml` 即可,步骤见 [`CONTRIBUTING.md`](CONTRIBUTING.md) 与 `skills/dsh-coach/references/engine/domain-contract.md`。
|
|
100
|
-
|
|
101
|
-
## 环境要求
|
|
102
|
-
|
|
103
|
-
- Node.js `^22.19.0 || >=24.0.0`(脚本本身只需 ≥ 16.7 的 `fs.cpSync`;插件矩阵与 harness 对齐)。
|
|
104
|
-
- 无 npm 依赖、无构建步骤。`lib/index.js` 是手写来源,不是构建产物。
|
|
105
|
-
|
|
106
|
-
## 文档
|
|
107
|
-
|
|
108
|
-
- [`docs/installing.zh.md`](docs/installing.zh.md) —— 安装细则(原生 DSH / DSH Desktop / 各技能根)
|
|
109
|
-
- [`CHANGELOG.md`](CHANGELOG.md) —— 版本变更
|
|
110
|
-
- [`CONTRIBUTING.md`](CONTRIBUTING.md) —— 如何新增领域包
|
|
111
|
-
|
|
112
|
-
## 贡献
|
|
113
|
-
|
|
114
|
-
最受欢迎的贡献是**新增一个学科领域包**。请先读 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
|
|
115
|
-
|
|
116
|
-
## 许可
|
|
117
|
-
|
|
118
|
-
[MIT](LICENSE)。
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/example.md
RENAMED
|
File without changes
|
/package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/glossary.md
RENAMED
|
File without changes
|
|
File without changes
|
/package/skills/{dsh-coach → dsh-project-based-learning}/references/domains/unity-csharp/pitfalls.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/domain-contract.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/skills/{dsh-coach → dsh-project-based-learning}/references/engine/review-acceptance.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|