@manhd_d/ai-harness 0.13.0 → 0.15.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 +57 -0
- package/README.md +22 -7
- package/adapters/react-native/adapter.yaml +1 -1
- package/adapters/react-native/skills/harness-react-native-behavior-testing/SKILL.md +9 -0
- package/adapters/react-nextjs/adapter.yaml +1 -1
- package/adapters/react-nextjs/skills/harness-react-nextjs-behavior-testing/SKILL.md +9 -0
- package/bin/aih.js +1 -1
- package/capabilities/product/capability.json +1 -1
- package/capabilities/product/workflows/idea-to-prd.md +15 -0
- package/capabilities/product/workflows/idea-to-prd.workflow.json +82 -0
- package/cli/adapters.js +1 -1
- package/cli/agents.js +14 -5
- package/cli/capabilities.js +2 -1
- package/cli/end-user.js +30 -0
- package/cli/environment.js +2 -0
- package/cli/evaluation-contract.js +11 -1
- package/cli/files.js +7 -2
- package/cli/harness.js +60 -15
- package/cli/journey-evidence.js +34 -0
- package/cli/kiro.js +15 -0
- package/cli/knowledge.js +104 -0
- package/cli/main.js +80 -19
- package/cli/portable-config.js +124 -0
- package/cli/project-decisions.js +47 -0
- package/cli/readiness.js +82 -41
- package/cli/setup.js +66 -0
- package/cli/skill-requirements.js +47 -0
- package/cli/start-config.js +15 -0
- package/cli/start.js +151 -0
- package/cli/structured.js +65 -0
- package/cli/sync-integrations.js +49 -0
- package/cli/verification-report.js +9 -5
- package/cli/verification.js +7 -2
- package/cli/workflow.js +76 -0
- package/core/agents/orchestrator.md +1 -1
- package/core/agents/test-engineer.md +4 -2
- package/core/checks/verification.json +12 -0
- package/core/evals/cases.json +97 -1
- package/core/rules/context.md +9 -0
- package/core/skills/harness-end-user-testing/SKILL.md +55 -0
- package/core/skills/harness-review/SKILL.md +4 -0
- package/core/skills/harness-spec/SKILL.md +3 -1
- package/core/skills/harness-start/SKILL.md +66 -0
- package/core/skills/harness-verification/SKILL.md +2 -0
- package/core/workflows/adaptive-verification.md +5 -0
- package/core/workflows/agent-routing.md +6 -0
- package/core/workflows/approvals.schema.json +62 -0
- package/core/workflows/clarification.md +6 -1
- package/core/workflows/continuous-development.md +5 -0
- package/core/workflows/end-user-acceptance.md +36 -0
- package/core/workflows/greenfield-setup.md +27 -0
- package/core/workflows/project-setup.md +30 -1
- package/core/workflows/seed.md +25 -0
- package/core/workflows/spec-to-code.md +19 -8
- package/core/workflows/spec-to-code.workflow.json +99 -0
- package/core/workflows/workflow.schema.json +113 -0
- package/docs/README.md +11 -0
- package/docs/adaptive-verification.md +10 -1
- package/docs/agent-configuration.md +7 -0
- package/docs/agent-handoffs.md +6 -1
- package/docs/architecture.md +53 -3
- package/docs/cli.md +55 -3
- package/docs/configuration-backup.md +130 -0
- package/docs/conformance-runner.md +64 -0
- package/docs/end-to-end-workflow.md +4 -0
- package/docs/end-user-testing.md +128 -0
- package/docs/frontend-mobile.md +7 -0
- package/docs/getting-started.md +21 -7
- package/docs/harness-maintenance.md +1 -0
- package/docs/i18n/README.es.md +18 -5
- package/docs/i18n/README.vi.md +19 -6
- package/docs/i18n/README.zh-CN.md +18 -5
- package/docs/project-configuration.md +15 -1
- package/docs/python-installation.md +85 -0
- package/docs/session-onboarding.md +215 -0
- package/docs/skill-matrix.md +5 -3
- package/docs/start.md +43 -0
- package/docs/tool-setup/README.md +13 -14
- package/docs/tool-setup/claude-code.md +10 -0
- package/docs/tool-setup/codex.md +10 -0
- package/docs/tool-setup/copilot.md +10 -0
- package/docs/tool-setup/cursor.md +10 -0
- package/docs/tool-setup/gemini-cli.md +10 -0
- package/docs/tool-setup/kiro.md +112 -38
- package/docs/versioning.md +67 -0
- package/docs/workflow-contract.md +66 -0
- package/evals/README.md +7 -0
- package/harness.yaml +13 -1
- package/package.json +7 -3
- package/scripts/conformance-runner.js +119 -0
- package/scripts/score-eval.js +3 -1
- package/templates/AGENTS.md +6 -0
- package/templates/decisions.json +4 -0
- package/templates/local.md +21 -0
- package/templates/openspec/approvals.json +5 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Lưu cấu hình, backup và chuyển dự án
|
|
2
|
+
|
|
3
|
+
Các lệnh dưới đây dùng `aih` khi đã cài global. Nếu dùng npx, thay `aih` bằng
|
|
4
|
+
`npx --yes @manhd_d/ai-harness`. Những lệnh start/backup/restore thuộc bản nâng cấp này;
|
|
5
|
+
chỉ dùng với bản đã phát hành có các lệnh đó, hoặc checkout/package đã review.
|
|
6
|
+
|
|
7
|
+
## Thông tin của bạn nằm ở đâu?
|
|
8
|
+
|
|
9
|
+
Ở **repo dự án áp dụng Harness**, phần cấu hình dùng chung nằm trong `.harness/`:
|
|
10
|
+
|
|
11
|
+
| File | Thông tin người dùng | Khi update |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `.harness/project.json` | Adapter/capability đã chọn | Giữ nguyên |
|
|
14
|
+
| `.harness/agents.json` | Agent → provider/model/reasoning, execution preferences | Giữ nguyên |
|
|
15
|
+
| `.harness/start.json` | Mục tiêu, task, ID change cần tiếp tục | Giữ nguyên |
|
|
16
|
+
| `.harness/artifacts.json` | Đường dẫn/link input, nơi ghi output, owner, revision, write policy | Giữ nguyên |
|
|
17
|
+
| `.harness/integrations.json` | Tên kết nối của host và phạm vi khai báo | Giữ nguyên |
|
|
18
|
+
| `.harness/environment.json` | Tool/lệnh test và tham chiếu biến môi trường | Giữ nguyên |
|
|
19
|
+
| `.harness/local.md` | Nghiệp vụ, convention và quyết định đã chốt | Giữ nguyên |
|
|
20
|
+
| `.harness/decisions.json` | Quyết định dùng chung: phạm vi, trạng thái, nguồn/lý do và lịch sử thay thế | Giữ nguyên; backup cùng dự án, không transfer |
|
|
21
|
+
| `openspec/config.yaml` | Cấu hình OpenSpec của dự án | Giữ nguyên |
|
|
22
|
+
| `.harness/machine.json` | Đường dẫn chỉ dùng trên máy này | Giữ nguyên, Git ignore; không vào backup cấu hình |
|
|
23
|
+
| `openspec/changes/<id>/` | Spec, tiến độ, checkpoint/history và evidence | Giữ nguyên; backup cùng repo |
|
|
24
|
+
|
|
25
|
+
**Input/output thực tế nằm ở nơi `artifacts.json` chỉ định**, ví dụ `docs/requirements/`,
|
|
26
|
+
`docs/specs/`, Confluence hoặc Figma. Cấu hình lưu liên kết; không sao chép nội dung nguồn bên ngoài.
|
|
27
|
+
Các skill riêng và native config của AI tool cũng cần giữ cùng cơ chế backup phù hợp của bạn.
|
|
28
|
+
|
|
29
|
+
`.harness/core/`, `adapters/`, `capabilities/`, `templates/`, `integrations/` và `lock.json`
|
|
30
|
+
là snapshot do Harness quản lý. Không sửa các file này để tùy biến. Giữ toàn bộ repo trong Git
|
|
31
|
+
để rollback snapshot chính xác; bản backup cấu hình chỉ chứa các file được liệt kê bên dưới.
|
|
32
|
+
Không lưu API key/token/password trong cấu hình; host/secret manager quản lý chúng riêng.
|
|
33
|
+
|
|
34
|
+
## Backup trước update hoặc cài lại
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
aih backup
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
CLI trả đường dẫn `.harness/backups/config-<timestamp>-<id>.json`. **Copy file này ra nơi riêng
|
|
41
|
+
ngoài repo/máy**, ví dụ ổ backup hoặc kho riêng của bạn; file ở máy hiện tại chưa bảo vệ khỏi mất máy.
|
|
42
|
+
Muốn tên dễ nhớ:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
aih backup --output backups/harness-config.json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Đường dẫn CLI tính từ project root; không dùng đường dẫn tuyệt đối. CLI từ chối ghi đè backup đã có.
|
|
49
|
+
Archive JSON giữ nguyên bytes UTF-8 của tối đa 9 file dùng chung ở bảng (nếu hiện có), kèm schema version,
|
|
50
|
+
CLI version và SHA-256 từng file. Digest phát hiện sửa nhầm, không xác thực nguồn backup.
|
|
51
|
+
Review file trước khi chia sẻ; bản backup là plain text và không tự dò/xóa mọi secret bạn có thể đã ghi nhầm.
|
|
52
|
+
Folder mặc định `.harness/backups/` được Git ignore; backup ở đường dẫn khác do bạn quản lý ignore.
|
|
53
|
+
|
|
54
|
+
**Không có trong archive:** machine.json, biến môi trường/credentials, host login/native settings,
|
|
55
|
+
snapshot/lock, custom skills, code, nội dung docs/UI bên ngoài, OpenSpec changes/checkpoints/history/evidence.
|
|
56
|
+
Muốn phục hồi toàn bộ công việc, backup **repo + các nguồn/tài khoản ngoài repo** bằng cơ chế của bạn.
|
|
57
|
+
|
|
58
|
+
Update thông thường bảo toàn file dùng chung; không cần restore mỗi lần:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
aih backup
|
|
62
|
+
aih update --dry-run
|
|
63
|
+
aih update
|
|
64
|
+
aih check
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Trước đó hãy nâng CLI global lên phiên bản đã review nếu cần. CLI không tải bản mới khi chạy update.
|
|
68
|
+
|
|
69
|
+
## Phục hồi cùng dự án
|
|
70
|
+
|
|
71
|
+
Copy archive vào project root thành `harness-config.json`, rồi xem trước:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
aih restore --from harness-config.json --dry-run
|
|
75
|
+
aih restore --from harness-config.json
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
File giống hệt được giữ nguyên, file thiếu được tạo. File khác nội dung **không bị ghi đè** nếu chưa
|
|
79
|
+
chọn `--replace`. Nếu muốn khôi phục bản cũ thay cho cấu hình hiện tại:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
aih restore --from harness-config.json --dry-run --replace
|
|
83
|
+
aih restore --from harness-config.json --replace
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Trước thay file, CLI tự tạo archive cấu hình hiện tại trong `.harness/backups/`; kết quả trả đường dẫn.
|
|
87
|
+
Không xóa file người dùng không có trong archive. Validation/schema/digest/path/conflict được kiểm tra
|
|
88
|
+
trước ghi; lỗi ghi thông thường rollback. Gián đoạn tiến trình/mất điện không phải transaction nhiều
|
|
89
|
+
file an toàn tuyệt đối: kiểm tra trạng thái và phục hồi từ backup/Git trước khi tiếp tục.
|
|
90
|
+
|
|
91
|
+
Với repo chưa có snapshot, **restore trước `init`** để bộ cài dùng đúng module và model đã lưu:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
aih restore --from harness-config.json
|
|
95
|
+
aih init
|
|
96
|
+
aih check
|
|
97
|
+
aih doctor
|
|
98
|
+
aih start
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Với repo đã cài, dùng `update --dry-run`, `update`, `check` sau restore nếu selection đổi.
|
|
102
|
+
Restore không sửa snapshot hỏng; phục hồi snapshot qua Git hoặc cài bundle đã review vào repo sạch.
|
|
103
|
+
Nếu goal đã lưu là resume, phục hồi OpenSpec changes/evidence trước khi chạy start/resume.
|
|
104
|
+
Schema archive/config chưa được hỗ trợ bị từ chối; không tự đổi schema hay hạ phiên bản. OpenSpec
|
|
105
|
+
config được giữ dạng text; correctness thuộc upstream OpenSpec validator.
|
|
106
|
+
|
|
107
|
+
## Mang sang dự án khác
|
|
108
|
+
|
|
109
|
+
Copy archive vào repo mới, dùng chế độ transfer:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
aih restore --from harness-config.json --transfer --dry-run
|
|
113
|
+
aih restore --from harness-config.json --transfer
|
|
114
|
+
aih init
|
|
115
|
+
aih start
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Transfer mang **project.json + agents.json**: adapter/capability và model/reasoning/execution preferences.
|
|
119
|
+
Quyết định dùng chung trong decisions.json thuộc dự án cũ và không được mang theo.
|
|
120
|
+
Khai báo autonomy và role extensions gắn repo cũ bị loại bỏ. Task, domain facts, nguồn input/output, connection aliases,
|
|
121
|
+
commands, OpenSpec config và state không được chuyển. `start` giúp khai báo lại theo dự án mới.
|
|
122
|
+
Nếu repo mới đã có cấu hình khác, review conflict và chỉ dùng --replace khi muốn thay chúng.
|
|
123
|
+
Model đã khai báo vẫn cần host hỗ trợ; restore không đăng nhập, cấp quyền hoặc gọi API/provider.
|
|
124
|
+
Muốn dùng lại nguồn tài liệu cũ, khai báo rõ nguồn/revision/quyền truy cập tại dự án mới sau review.
|
|
125
|
+
|
|
126
|
+
## Session cache
|
|
127
|
+
|
|
128
|
+
knowledge.json is a reproducible project-owned cache omitted from config archives; full repo backup
|
|
129
|
+
retains it. Reconcile with /harness-start after restore. Extensions/custom host files need repo backup;
|
|
130
|
+
transfer omits old repository extensions as well as autonomy. [Session onboarding](session-onboarding.md).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Opt-in conformance runner
|
|
2
|
+
|
|
3
|
+
`scripts/conformance-runner.js` là driver ngoài installer. `aih` vẫn không gọi model hoặc shell.
|
|
4
|
+
Driver đầu tiên dùng Claude Code `-p`, theo [official headless docs](https://code.claude.com/docs/en/headless)
|
|
5
|
+
và [CLI reference](https://code.claude.com/docs/en/cli-reference). Cần CLI đã cài/đăng nhập, model access
|
|
6
|
+
và đủ quota; Harness không cài host hoặc cung cấp API key. Live host trong môi trường phát triển
|
|
7
|
+
hiện **NOT_RUN** cho đến khi có transcript thật; fixture tests chỉ kiểm runner/report.
|
|
8
|
+
|
|
9
|
+
Trong checkout/package đã review, trước hết tạo plan (không gọi host):
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
node scripts/conformance-runner.js --out eval-plan --model claude-sonnet-4-6 --judge-model claude-opus-4-6 --harness-commit FULL_40_CHARACTER_SHA --runs 3
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Thay model IDs bằng hai model **khác nhau** mà tài khoản thực sự truy cập được và SHA bằng commit
|
|
16
|
+
source thực tế. Không dùng alias khác cho cùng model. Muốn chạy thật, dùng output directory mới và
|
|
17
|
+
thêm `--execute`. Mặc định core; `--scope all --adapters java-spring --capabilities product` chọn suite
|
|
18
|
+
khác. `--runs` chỉ nhận 3–5; timeout mỗi host/judge mặc định 120 giây.
|
|
19
|
+
|
|
20
|
+
Mỗi case/repetition tạo project fixture riêng, cài bundle + Claude import, chạy prompt, lưu stream-json
|
|
21
|
+
gồm tool events, rồi gọi model judge riêng. Judge không có tools và nhận criteria/transcript như data.
|
|
22
|
+
Host được giới hạn tool Read để kiểm reasoning/loading, không có edit/Bash/remote action. Vì vậy
|
|
23
|
+
không dùng kết quả này để chứng minh code execution, permission enforcement, end-user test, khả năng
|
|
24
|
+
multiagent hoặc hành vi khi host thực sự được quyền merge. Các scenario cần tool/user interaction
|
|
25
|
+
đầy đủ có thể fail/missing evidence trong driver đầu tiên; không nới criteria để tạo PASS.
|
|
26
|
+
|
|
27
|
+
Fixture không mang code/secret của dự án thật. Account/global context do host quản lý; giới hạn flags
|
|
28
|
+
không phải sandbox hay xác thực identity. Runner giữ settings project-only và MCP config rỗng; cần
|
|
29
|
+
kiểm host version/config trước trial. Không thay đổi cấu hình hay session của người dùng.
|
|
30
|
+
|
|
31
|
+
## Evidence và chấm điểm
|
|
32
|
+
|
|
33
|
+
- dataset.json và report-N.json giữ schema 1 hiện có; dataset/bundle hashes khớp `aih eval`.
|
|
34
|
+
- transcript, stderr, judge response và transcript SHA được giữ theo từng case. Progress được ghi sau
|
|
35
|
+
từng case. Interrupted runs giữ những file đã ghi; không có tự replay/checkpoint host session.
|
|
36
|
+
- Report chưa hoàn tất có score null; scorer từ chối thay vì coi là passing. Report hoàn tất có thể
|
|
37
|
+
đưa vào `aih eval --scope core --report /path/report-N.json` **trong fixture có cùng bundle**.
|
|
38
|
+
Cài cùng selection/host/flags rồi kiểm bundle hash; không sửa hash để score một snapshot khác.
|
|
39
|
+
- summary.json báo total/scored/passed, pass_rate = passed/requested và completed_pass_rate =
|
|
40
|
+
passed/scored. Host/judge lỗi không bị loại khỏi denominator requested. Per-case cũng có tỷ lệ này.
|
|
41
|
+
Nếu chưa có score, pass_rate = null; dry plan là NOT_RUN, chạy thiếu là PARTIAL.
|
|
42
|
+
- Human sample audit luôn khởi đầu NOT_RUN. Reviewer phải kiểm mẫu transcript/criteria/judge và mọi
|
|
43
|
+
critical failure, lưu reviewer, case/repetition, revision, findings và nguồn thật trong review riêng.
|
|
44
|
+
|
|
45
|
+
Pass rate là quan sát mẫu nhỏ, không phải độ tin cậy thống kê hay bảo đảm compliance. Judge metadata
|
|
46
|
+
ghi rõ model, source commit, dataset hash, run ID và parameters; human audit không tự được coi là hoàn tất.
|
|
47
|
+
|
|
48
|
+
## Assertions tùy chọn
|
|
49
|
+
|
|
50
|
+
Case vẫn giữ id/prompt/criteria/critical; có thể thêm assertions:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{"id":"no-merge","type":"not-contains","target":"tool-inputs","value":"gh pr merge"}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Type contains/not-contains là so literal tất định; target là transcript hoặc tool-inputs. Dùng
|
|
57
|
+
tool-inputs để tránh hiểu câu “không chạy gh pr merge” là đã merge. Chỉ kiểm tool events đã capture;
|
|
58
|
+
không phát hiện alias/obfuscated command, hoạt động ngoài transcript hoặc chứng minh động cơ model.
|
|
59
|
+
Trong Read-only driver, absence của Bash là hệ quả tool restriction. Criterion ngôn ngữ tự nhiên vẫn
|
|
60
|
+
do judge chấm và cần human audit. Assertion false khiến report fail kể cả criteria đều true; assertion
|
|
61
|
+
đã khai báo phải có đủ boolean scores. Core approval-boundary có ví dụ này.
|
|
62
|
+
|
|
63
|
+
Codex, Cursor, Copilot, Gemini CLI và Kiro có status NOT_RUN, chưa có driver được kiểm chứng.
|
|
64
|
+
Temporal adapter/LLM gateway không nằm trong bản này.
|
|
@@ -131,3 +131,7 @@ carry short source/evidence handoffs. User preferences do not grant runtime perm
|
|
|
131
131
|
## Continuous changes
|
|
132
132
|
|
|
133
133
|
After the first delivery, use [Continuous development](continuous-development.md) for each feature, bugfix, rule change or resume. Reuse the existing change/project map/decision log, reconcile current revisions and record scoped evidence plus next steps.
|
|
134
|
+
|
|
135
|
+
For user-facing verification, load Core harness-end-user-testing and follow
|
|
136
|
+
[End-user acceptance](end-user-testing.md). Exercise actual interface journeys; keep real/mocked
|
|
137
|
+
scope and unavailable tool/account/environment gaps explicit before review.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Kiểm thử như người dùng thật
|
|
2
|
+
|
|
3
|
+
**AI phải thao tác trên ứng dụng đang chạy và đối chiếu kết quả với yêu cầu.** Build/unit/API test
|
|
4
|
+
là phần hỗ trợ; muốn xác nhận một luồng web thì phải chạy qua browser. Đây là workflow của QA
|
|
5
|
+
trong AI host, khác với việc đánh giá độc lập chất lượng model/Harness.
|
|
6
|
+
|
|
7
|
+
Sau init/update vào bản có skill này, giao việc bình thường:
|
|
8
|
+
|
|
9
|
+
> Đọc AGENTS.md. Kiểm thử [tính năng] như người dùng thật theo tài liệu/AC đã chốt.
|
|
10
|
+
> Dùng công cụ hiện có, chạy luồng thành công và lỗi/quyền liên quan. Kiểm tra kết quả sau
|
|
11
|
+
> refresh hoặc mở lại nếu yêu cầu cần lưu dữ liệu. Lưu bằng chứng, sửa lỗi trong scope rồi
|
|
12
|
+
> test lại; báo rõ những gì chưa chạy hoặc bị chặn.
|
|
13
|
+
|
|
14
|
+
Host đọc `harness-end-user-testing` và workflow `end-user-acceptance.md` trước review. Bạn không
|
|
15
|
+
cần tự gọi từng agent; test-engineer có thể chạy tuần tự trong cùng assistant. CLI không tự mở browser,
|
|
16
|
+
khởi động model/server hoặc kết nối account; các thao tác do host được cấp quyền thực hiện.
|
|
17
|
+
|
|
18
|
+
## Cần cung cấp những gì?
|
|
19
|
+
|
|
20
|
+
AI đọc repo và câu trả lời đã lưu trước, chỉ hỏi phần còn thiếu:
|
|
21
|
+
|
|
22
|
+
| Thông tin | Nơi lưu dùng lại |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| Yêu cầu/AC, luồng và kết quả mong đợi | Nguồn chính trong artifacts.json / spec hiện có |
|
|
25
|
+
| URL môi trường test và phạm vi được phép thao tác | `.harness/local.md` |
|
|
26
|
+
| Lệnh start/test/build và tham chiếu môi trường | `.harness/environment.json` |
|
|
27
|
+
| Tên tool browser/MCP trong host, nếu dùng | `.harness/integrations.json` |
|
|
28
|
+
| Tài khoản/role test | Reference trong context; credential giữ riêng ở host |
|
|
29
|
+
| Nơi lưu báo cáo/bằng chứng | Output contract trong artifacts.json hoặc thư mục verification/ đã review |
|
|
30
|
+
|
|
31
|
+
Không copy credentials/cookies vào shared config hoặc PR. Thông tin cấu hình được backup bằng
|
|
32
|
+
cơ chế hiện có; screenshot/trace/report/checkpoint cần backup cùng project/evidence, không nằm trong
|
|
33
|
+
archive cấu hình. Nếu output bắt buộc ở hệ thống ngoài nhưng host không ghi được, trả proposal hoặc
|
|
34
|
+
BLOCKED theo policy, không tự tạo một nguồn canonical cục bộ khác.
|
|
35
|
+
|
|
36
|
+
## AI chọn công cụ theo dự án
|
|
37
|
+
|
|
38
|
+
| Giao diện thực tế | Cách kiểm tra | Giới hạn cần ghi rõ |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| Web/React/Next.js/Astro | Playwright/Cypress đang có hoặc browser tool được host cấp quyền | Browser thật; API mock chỉ chứng minh phạm vi giao diện |
|
|
41
|
+
| React Native/mobile | Runner device/simulator hiện có, ví dụ Detox/Maestro | Browser viewport mobile không chứng minh app native |
|
|
42
|
+
| CLI | Chạy executable/lệnh thật, kiểm tra output và file/state | Unit test của hàm xử lý không thay cho terminal journey |
|
|
43
|
+
| Backend/API-only | Client/API workflow qua public endpoints, role và trạng thái | Không giả tạo một UI để gọi đó là browser E2E |
|
|
44
|
+
| Chỉ tài liệu | Đối chiếu nguồn, yêu cầu và consistency | Không quảng cáo app/runtime E2E đã chạy |
|
|
45
|
+
|
|
46
|
+
Có runner thì dùng tiếp, không cài framework cạnh tranh. Với web chưa có runner, Playwright là một
|
|
47
|
+
phương án đề xuất; lựa chọn và cài dependency/browser thuộc project/host, không do Harness installer.
|
|
48
|
+
Playwright Test và Playwright MCP là hai cách dùng khác nhau: runner thực thi test đã lưu; MCP/browser
|
|
49
|
+
cho host tương tác trực tiếp. Tool alias trong config chưa chứng minh runtime đã kết nối.
|
|
50
|
+
|
|
51
|
+
## Luồng thực thi
|
|
52
|
+
|
|
53
|
+
1. Đọc AC và xác định actor, preconditions, bước thao tác, expected result và fixture cô lập.
|
|
54
|
+
2. Kiểm tra app, browser/device, account và dependency có truy cập thật được không.
|
|
55
|
+
3. Mở app, dùng navigation/control/keyboard thật; API có thể tạo fixture nhưng không thay bước UI.
|
|
56
|
+
4. Chạy happy path và tình huống negative/role/state phù hợp với thay đổi. Không bắt mọi dự án
|
|
57
|
+
test login/CRUD/upload nếu tính năng không có những hành vi đó.
|
|
58
|
+
5. Assert kết quả người dùng nhìn thấy và persistence khi cần; kiểm tra lỗi console/network liên quan.
|
|
59
|
+
6. Lưu JSON observations, ảnh/trace/video/report đã review/redact và cleanup của data tự tạo.
|
|
60
|
+
7. Sửa lỗi được phép trong scope, test lại các luồng bị ảnh hưởng và regression. Không đổi expected
|
|
61
|
+
result hoặc bỏ assertion để khiến test pass; giữ giới hạn vòng retry/repair của host/project.
|
|
62
|
+
8. Handoff AC → actual outcome → evidence → real/mocked scope → PASSED/FAILED/BLOCKED/NOT_RUN.
|
|
63
|
+
|
|
64
|
+
Ví dụ minh họa form có lưu dữ liệu: mở form → nhập giá trị hợp lệ → click Save → kiểm tra dòng mới →
|
|
65
|
+
reload → dòng vẫn còn; nhập giá trị sai → đúng thông báo; actor bị hạn chế → action bị từ chối nếu AC
|
|
66
|
+
quy định. Đây là ví dụ, không phải bộ case áp dụng cứng hoặc kết quả test của một ứng dụng đã chạy.
|
|
67
|
+
|
|
68
|
+
## Plan và bằng chứng
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
aih verify --adaptive
|
|
72
|
+
aih skill harness-end-user-testing
|
|
73
|
+
aih verify --report verification/report.json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Nếu dùng npx, thay `aih` bằng `npx --yes @manhd_d/ai-harness`. Adaptive plan có
|
|
77
|
+
`end_user_acceptance` với gợi ý surface/tools, context còn cần và host_prompt. Đây là metadata plan,
|
|
78
|
+
chưa có thao tác thật. Host cần đọc scoped source và tool runtime để chọn đúng test.
|
|
79
|
+
|
|
80
|
+
Report schema vẫn là 1; requirement cần end-user thêm:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{"id":"AC-1","description":"Item survives reload","source":"approved AC reference","verification_target":"end-user","surface":"web"}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Scenario thêm khai báo, dùng URL thực trong môi trường được phép, không chứa credential:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{"journey":{"surface":"web","actor":"test-editor","entrypoint":"test-page-reference","interaction":"browser","dependencies":"real","attachments":[]}}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Surface/interaction: web/browser, mobile/device, cli/terminal, api/http. Journey methods:
|
|
93
|
+
browser-e2e/web, mobile-e2e/mobile, cli-e2e/cli; api/backend-e2e/authorization/security dùng api.
|
|
94
|
+
end-user hoặc business-workflow có thể dùng surface thích hợp; unit/component/build không là journey. Dependencies: real, mocked,
|
|
95
|
+
not-applicable hoặc unknown. `not-applicable` chỉ dùng khi dependency thực sự không tồn tại trong
|
|
96
|
+
thiết kế, ví dụ calculator chạy hoàn toàn trong browser; không dùng để che backend mock/không truy cập.
|
|
97
|
+
Một requirement web không VERIFIED nhờ journey API/unit. Nếu backend mock/unknown, scoped assertions
|
|
98
|
+
có thể PASSED nhưng end-user target vẫn UNVERIFIED và overall report NOT_RUN.
|
|
99
|
+
|
|
100
|
+
Attachments tùy chọn: `{kind,path,sha256}` với kind screenshot (.png/.jpg/.jpeg/.webp), trace (.zip),
|
|
101
|
+
video (.webm/.mp4), report (.html/.json). Path tính từ project root; từng file regular không symlink,
|
|
102
|
+
không rỗng, tối đa 50 MiB; tối đa 20 file và 100 MiB tổng mỗi scenario. Binary attachments được kiểm
|
|
103
|
+
tra digest riêng; assertion vẫn đọc JSON evidence ≤1 MiB qua JSON pointer như contract hiện có.
|
|
104
|
+
Không nới giới hạn JSON để đọc binary trace/screenshot. Compress/scope evidence nếu quá giới hạn.
|
|
105
|
+
File-extension/digest chỉ kiểm tra consistency, không giải mã/đánh giá tính đúng của ảnh/trace.
|
|
106
|
+
Review nội dung raw độc lập; binary traces có thể chứa secrets, validator không tự scrub chúng.
|
|
107
|
+
|
|
108
|
+
Report cũ không khai báo target mới vẫn hợp lệ. Browser/mobile/CLI E2E đòi hỏi assertion ngoài transport:
|
|
109
|
+
chỉ HTTP 200 hay process exit 0 không thể là PASSED. Receipt/semantic labels do producer khai báo;
|
|
110
|
+
validator không xác thực rằng Playwright đã chạy hay nguồn revision đúng. Screenshot đơn lẻ không
|
|
111
|
+
thay cho bước/assertion nghiệp vụ và không phải human UAT approval.
|
|
112
|
+
|
|
113
|
+
## Thiếu môi trường
|
|
114
|
+
|
|
115
|
+
Browser executable, device, app URL/start access hoặc account cần thiết bị thiếu → BLOCKED cho luồng
|
|
116
|
+
đó, kèm đúng bước bị chặn và cách xử lý. Chủ động bỏ scope → NOT_RUN với lý do. Tự động hóa được
|
|
117
|
+
thực hiện khi host có tool và quyền; không hứa chạy được mọi app ngay sau một lệnh cài Harness.
|
|
118
|
+
|
|
119
|
+
[Adaptive report contract](adaptive-verification.md) · [Configuration backup](configuration-backup.md).
|
|
120
|
+
|
|
121
|
+
## Nguồn công cụ đã review
|
|
122
|
+
|
|
123
|
+
Official references reviewed 2026-10-14; use the installed project's actual version/configuration:
|
|
124
|
+
[Playwright installation](https://playwright.dev/docs/intro),
|
|
125
|
+
[assertions](https://playwright.dev/docs/test-assertions),
|
|
126
|
+
[locators](https://playwright.dev/docs/locators),
|
|
127
|
+
[trace viewer](https://playwright.dev/docs/trace-viewer),
|
|
128
|
+
[Playwright MCP](https://github.com/microsoft/playwright-mcp).
|
package/docs/frontend-mobile.md
CHANGED
|
@@ -74,3 +74,10 @@ Không có trial ứng dụng/browser/native hoặc live-model benchmark trong n
|
|
|
74
74
|
- [React Native testing](https://reactnative.dev/docs/testing-overview): tách JS component và native/device evidence.
|
|
75
75
|
- [React Navigation auth flow](https://reactnavigation.org/docs/auth-flow/): chỉ áp dụng khi app đang dùng
|
|
76
76
|
React Navigation; giữ version-specific auth/back behavior, không mặc định cài router đó.
|
|
77
|
+
|
|
78
|
+
## End-user journeys
|
|
79
|
+
|
|
80
|
+
React/Next.js and React Native module 1.4.0 connect Core harness-end-user-testing to applicable
|
|
81
|
+
browser/device acceptance, existing runners and optional binary evidence.
|
|
82
|
+
[End-user guide](end-user-testing.md) distinguishes native devices from browser viewport emulation,
|
|
83
|
+
real/mocked dependencies and BLOCKED access; unit/build/API checks cannot replace required UI flows.
|
package/docs/getting-started.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bắt đầu với AI Harness
|
|
2
2
|
|
|
3
|
-
**Cài vào project → mở AI
|
|
3
|
+
**Cài vào project → start → mở AI làm việc → review kết quả.** Cần Node.js **22+** và một thư mục project. Với dự án mới, tạo thư mục/repository trước; Harness không tạo ứng dụng hay chạy model.
|
|
4
4
|
|
|
5
5
|
## 1. Cài vào project
|
|
6
6
|
|
|
@@ -31,13 +31,21 @@ npx --yes @manhd_d/ai-harness init --adapters java-spring --capabilities product
|
|
|
31
31
|
Thêm `--capabilities uiux` khi cần UI/UX; `monetization` cho website có quảng cáo. [Danh mục đầy đủ](cli.md).
|
|
32
32
|
Với project đã cài, đổi lựa chọn trong `.harness/project.json` rồi dùng `update`.
|
|
33
33
|
|
|
34
|
-
## 2.
|
|
34
|
+
## 2. Start và mở AI làm việc
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Chọn `--host codex|claude-code|cursor|copilot|gemini-cli|kiro` khi init. Trong session AI đầu tiên,
|
|
37
|
+
gọi **harness-start** nếu client nhận diện skill; hoặc gửi cùng prompt cho mọi host:
|
|
37
38
|
|
|
38
|
-
> Đọc
|
|
39
|
-
>
|
|
40
|
-
|
|
39
|
+
> Đọc .agents/skills/harness-start/SKILL.md và thực hiện onboarding cho project này.
|
|
40
|
+
> Yêu cầu của tôi: [task].
|
|
41
|
+
|
|
42
|
+
Kiro có `/harness-start`; các host khác có discovery/import riêng trong
|
|
43
|
+
[setup đa IDE](tool-setup/README.md). Agent inspect context, chỉ hỏi điều quan trọng còn thiếu và lưu
|
|
44
|
+
câu trả lời. Không cần interview terminal trước chat. `start --compact --host <host>` là orientation
|
|
45
|
+
read-only; `start` và host_prompt vẫn dùng được khi cần. [Luồng start](start.md).
|
|
46
|
+
|
|
47
|
+
Cài bằng pip/offline cũng dùng **cùng flow**: `aih init --host <host>` rồi harness-start.
|
|
48
|
+
Cần Python 3.9+ và Node 22+, không cần npm; xem [pip/offline](python-installation.md).
|
|
41
49
|
|
|
42
50
|
Bạn có thể giao ý tưởng, tài liệu BA hoặc task code. Không cần gọi từng agent/skill.
|
|
43
51
|
Với web/mobile, giao màn hình hoặc tính năng theo common/API/state/navigation hiện có; [skills đã có](frontend-mobile.md).
|
|
@@ -65,7 +73,8 @@ Task nhỏ không cần bộ tài liệu đầy đủ. Không cần cài OpenSpe
|
|
|
65
73
|
|
|
66
74
|
`check` kiểm tra file Harness; `verify` xuất checklist. Code cần **test của project** và review thực tế.
|
|
67
75
|
|
|
68
|
-
Trước cập nhật, tạo branch và commit trạng thái hiện tại.
|
|
76
|
+
Trước cập nhật, tạo branch và commit trạng thái hiện tại. Chạy `npx --yes @manhd_d/ai-harness backup`
|
|
77
|
+
và copy JSON được trả về ra nơi riêng ngoài repo. [Lưu ở đâu, cài lại và chuyển dự án](configuration-backup.md). Xem trước, áp dụng rồi kiểm tra:
|
|
69
78
|
|
|
70
79
|
```bash
|
|
71
80
|
npx --yes @manhd_d/ai-harness@latest update --dry-run
|
|
@@ -84,3 +93,8 @@ canonical owners and source-write scope. Record them in project-owned artifacts.
|
|
|
84
93
|
`npx --yes @manhd_d/ai-harness artifacts` shows declarations. See [Artifact contract](artifact-contract.md).
|
|
85
94
|
|
|
86
95
|
For successive features, bugfixes or a resumed session, give the host a normal request. It follows [Continuous development](continuous-development.md), rechecks the baseline and maintains only affected docs.
|
|
96
|
+
|
|
97
|
+
## Test như người dùng
|
|
98
|
+
|
|
99
|
+
Giao AI: “Test tính năng này như end user theo AC, thao tác trên giao diện thật, kiểm tra kết quả và
|
|
100
|
+
lưu bằng chứng; báo BLOCKED nếu thiếu tool/môi trường.” [Hướng dẫn và setup cần có](end-user-testing.md).
|
|
@@ -15,6 +15,7 @@ gốc được liên kết bên dưới; không sao chép quy tắc thành nhi
|
|
|
15
15
|
| Artifact / integration contracts | [Artifact contract](artifact-contract.md), [loader](../cli/artifacts.js), [seeds](../templates/artifacts.json) | Preserved project configs → setup/artifacts → Core/Product/UIUX workflows → routed new-doc / impact readiness → [tests](../tests/artifacts.test.js) and package smoke |
|
|
16
16
|
| Agent preferences | [Canonical default](../config/agents.default.json), [configuration contract](agent-configuration.md) | Project-owned `agents.json` → read-only setup plan → [routing workflow](../core/workflows/agent-routing.md) → [host setup](tool-setup/README.md); tests verify preservation, not live model availability |
|
|
17
17
|
| Quy trình sử dụng | [Getting started](getting-started.md), [full SDLC](end-to-end-workflow.md) | [Examples](examples/), [README](../README.md), [documentation workflows](documentation-workflows.md) |
|
|
18
|
+
| Distribution / conformance driver | [pip/offline](python-installation.md), [workflow contract](workflow-contract.md), [runner](conformance-runner.md) | Shared npm allowlist → Python wheel/sdist → launcher/shared CLI → offline parity smoke; installer never imports host execution |
|
|
18
19
|
| Release / migration | [Versioning](versioning.md), [release policy](release-policy.md) | [Changelog](../CHANGELOG.md), [npm release](npm-release.md), [release workflow](../.github/workflows/npm-publish.yml) |
|
|
19
20
|
|
|
20
21
|
Một quy tắc chỉ hoàn chỉnh khi xác định được: **nơi khai báo → nơi đóng gói → điểm AI đọc → bước áp dụng
|
package/docs/i18n/README.es.md
CHANGED
|
@@ -8,17 +8,30 @@ Entrega una idea, docs existentes o un change request a tu AI coding tool. Harne
|
|
|
8
8
|
|
|
9
9
|
Los Core workflows sirven para cualquier proyecto. El stack support es opcional y no elige infrastructure ni architecture.
|
|
10
10
|
|
|
11
|
-
Requiere Node.js 22
|
|
11
|
+
Requiere **Node.js 22+**. Ejecuta en la raíz del proyecto:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npx --yes @manhd_d/ai-harness init
|
|
14
|
+
npx --yes @manhd_d/ai-harness init --host codex
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Host: codex, claude-code, cursor, copilot, gemini-cli o kiro.
|
|
18
|
+
En la primera sesión invoca harness-start; si el cliente no descubre el skill, envía:
|
|
18
19
|
|
|
19
|
-
> Read
|
|
20
|
+
> Read .agents/skills/harness-start/SKILL.md and follow it for this project. My task: [task].
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
Kiro ofrece `/harness-start`; el descubrimiento depende del cliente. [Guías](../tool-setup/README.md).
|
|
23
|
+
|
|
24
|
+
**pip / sin conexión** se incluye en la próxima versión revisada; requiere configurar PyPI publisher:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
python -m pip install manhd-ai-harness
|
|
28
|
+
aih init --host codex
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Necesita Python 3.9+ y Node.js 22+; incluye el mismo CLI y recursos, sin ejecutar npm/npx.
|
|
32
|
+
Sin conexión: `python -m pip install --no-index --no-deps /path/to/package.whl`.
|
|
33
|
+
[pip y actualizaciones](../python-installation.md) · [Backup](../configuration-backup.md).
|
|
34
|
+
`npx` no crea un comando global aih; comprueba con `npx --yes @manhd_d/ai-harness check`.
|
|
22
35
|
|
|
23
36
|
| AI tool | Setup |
|
|
24
37
|
| --- | --- |
|
package/docs/i18n/README.vi.md
CHANGED
|
@@ -6,19 +6,32 @@ Agent workflows tái sử dụng cho phát triển phần mềm: **Requirements
|
|
|
6
6
|
|
|
7
7
|
Đưa ý tưởng, docs có sẵn hoặc change request cho AI coding tool. Harness giúp AI đọc project, làm rõ quyết định, triển khai scope đã chấp nhận và maintain spec/docs liên quan. Chỉ dùng roles và skills cần cho task.
|
|
8
8
|
|
|
9
|
-
Core
|
|
9
|
+
Core dùng được với mọi project; stack adapter là tùy chọn.
|
|
10
10
|
|
|
11
|
-
Cần Node.js 22
|
|
11
|
+
Cần **Node.js 22+**. Chạy trong project root:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npx --yes @manhd_d/ai-harness init
|
|
14
|
+
npx --yes @manhd_d/ai-harness init --host codex
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Chọn host: codex, claude-code, cursor, copilot, gemini-cli hoặc kiro.
|
|
18
|
+
Session AI đầu tiên: gọi **harness-start** nếu host nhận diện; hoặc gửi:
|
|
18
19
|
|
|
19
|
-
>
|
|
20
|
+
> Đọc .agents/skills/harness-start/SKILL.md và thực hiện cho project này. Task: [yêu cầu].
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
Kiro có `/harness-start`; discovery tùy client. [Setup đa IDE](../tool-setup/README.md).
|
|
23
|
+
|
|
24
|
+
**pip/offline** được bổ sung trong release tiếp theo, cần cấu hình PyPI publisher:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
python -m pip install manhd-ai-harness
|
|
28
|
+
aih init --host codex
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Cần thêm Python 3.9+, vẫn cần Node 22+; cùng CLI/assets, không gọi npm/npx.
|
|
32
|
+
Offline: `python -m pip install --no-index --no-deps /path/to/package.whl`.
|
|
33
|
+
[pip và cập nhật](../python-installation.md) · [Backup và chuyển dự án](../configuration-backup.md).
|
|
34
|
+
`npx` không tạo global aih; dùng `npx --yes @manhd_d/ai-harness check` kiểm integrity.
|
|
22
35
|
|
|
23
36
|
| AI tool | Setup |
|
|
24
37
|
| --- | --- |
|
|
@@ -8,17 +8,30 @@
|
|
|
8
8
|
|
|
9
9
|
Core workflows 可用于任何项目。Stack support 是可选的,不会自动选择 infrastructure 或 architecture。
|
|
10
10
|
|
|
11
|
-
需要 Node.js 22
|
|
11
|
+
需要 **Node.js 22+**。在项目根目录运行:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npx --yes @manhd_d/ai-harness init
|
|
14
|
+
npx --yes @manhd_d/ai-harness init --host codex
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
host 可选 codex、claude-code、cursor、copilot、gemini-cli 或 kiro。
|
|
18
|
+
首次 AI 会话调用 harness-start;如果客户端未发现技能,请发送:
|
|
18
19
|
|
|
19
|
-
> Read
|
|
20
|
+
> Read .agents/skills/harness-start/SKILL.md and follow it for this project. My task: [task].
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
Kiro 提供 `/harness-start`;原生发现因客户端而异。[多 IDE 指南](../tool-setup/README.md)。
|
|
23
|
+
|
|
24
|
+
**pip / 离线安装**将在下一次审核后的版本中提供,首次发布需要配置 PyPI publisher:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
python -m pip install manhd-ai-harness
|
|
28
|
+
aih init --host codex
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
需要 Python 3.9+ 和 Node.js 22+;使用相同 CLI/资源,不调用 npm/npx。
|
|
32
|
+
离线:`python -m pip install --no-index --no-deps /path/to/package.whl`。
|
|
33
|
+
[pip 与更新](../python-installation.md) · [备份](../configuration-backup.md)。
|
|
34
|
+
`npx` 不创建全局 aih;用 `npx --yes @manhd_d/ai-harness check` 检查文件完整性。
|
|
22
35
|
|
|
23
36
|
| AI tool | Setup |
|
|
24
37
|
| --- | --- |
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
| File | Nội dung | Git |
|
|
4
4
|
| --- | --- | --- |
|
|
5
|
+
| `.harness/start.json` | Mục tiêu/task và ID checkpoint nếu tiếp tục | Commit |
|
|
5
6
|
| `.harness/project.json` | Adapter/capability | Commit |
|
|
6
7
|
| `.harness/agents.json` | Provider/model/reasoning theo role, execution preferences và host mappings | Commit |
|
|
7
8
|
| `.harness/artifacts.json` | Input/output/storage, canonical ownership và source-write policy | Commit |
|
|
@@ -10,7 +11,7 @@
|
|
|
10
11
|
| `.harness/environment.json` | Công cụ, lệnh, file cần có | Commit |
|
|
11
12
|
| `.harness/machine.json` | Đường dẫn riêng của máy, tùy chọn | Ignore |
|
|
12
13
|
|
|
13
|
-
Init/update tạo environment rỗng nếu chưa có và thêm `/machine.json` vào cuối
|
|
14
|
+
Init/update tạo environment rỗng nếu chưa có và thêm `/backups/` và `/machine.json` vào cuối
|
|
14
15
|
`.harness/.gitignore`. File đã được Git track vẫn được track: ignore không xóa khỏi index/history.
|
|
15
16
|
CLI không tạo file machine và không đọc nội dung Maven settings. Không ghi mật khẩu/token vào các
|
|
16
17
|
file Harness; credentials thuộc cơ chế quản lý riêng của công cụ.
|
|
@@ -91,3 +92,16 @@ local.md đã trả lời. Setup không phải wizard nhập liệu và không t
|
|
|
91
92
|
Xem [Artifact contract](artifact-contract.md). `aih artifacts` báo khai báo; `aih setup` gợi ý hỏi
|
|
92
93
|
nơi lưu docs/UI nếu chưa biết. Các file này project-owned và được bảo toàn khi update; chúng không
|
|
93
94
|
kết nối MCP, cấp quyền hay chạy tool. Credentials và native host config nằm ngoài Git.
|
|
95
|
+
|
|
96
|
+
## Backup và dùng lại
|
|
97
|
+
|
|
98
|
+
Chạy `aih start` để lưu intake. File được bảo toàn khi update. Chạy `aih backup`, copy archive ngoài
|
|
99
|
+
repo; `aih restore --from <file> --dry-run` xem trước phục hồi. Dùng --transfer ở repo mới để chỉ
|
|
100
|
+
chuyển module/model, tránh nguồn/tiến độ cũ. [Hướng dẫn đầy đủ](configuration-backup.md) mô tả các
|
|
101
|
+
file được lưu, những gì không có trong backup, conflict/backup-before-replace và cách cài lại.
|
|
102
|
+
|
|
103
|
+
## Structured context and skill prerequisites
|
|
104
|
+
|
|
105
|
+
New local.md uses optional schema-1 YAML frontmatter; legacy prose stays valid and preserved.
|
|
106
|
+
See [session onboarding](session-onboarding.md) for sources, seed and doctor --skill requirements.
|
|
107
|
+
Maven settings remain files.maven-settings.path with a machine override, not tools.maven.settings.
|