WIP: кошелек запускается, но есть ошибки
This commit is contained in:
parent
b13efa92fd
commit
edc94d3700
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
|||||||
data/
|
data/
|
||||||
logs/
|
logs/
|
||||||
logs
|
logs
|
||||||
|
.understand-anything/
|
||||||
|
|
||||||
.gradle
|
.gradle
|
||||||
.gradle-home/
|
.gradle-home/
|
||||||
|
|||||||
@ -103,8 +103,7 @@
|
|||||||
"serverLastGlobalNumber": 128,
|
"serverLastGlobalNumber": 128,
|
||||||
"serverLastGlobalHash": "4f...ab",
|
"serverLastGlobalHash": "4f...ab",
|
||||||
"serverBlockchainSizeBytes": 45212,
|
"serverBlockchainSizeBytes": 45212,
|
||||||
"serverBlockchainSizeLimitBytes": 100000,
|
"serverBlockchainSizeLimitBytes": 100000
|
||||||
"serverBlocksCount": 129
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -115,7 +114,6 @@
|
|||||||
- `serverLastGlobalHash` — hash последнего блока (hex-строка 64 символа);
|
- `serverLastGlobalHash` — hash последнего блока (hex-строка 64 символа);
|
||||||
- `serverBlockchainSizeBytes` — текущий размер пользовательского блокчейна на сервере в байтах;
|
- `serverBlockchainSizeBytes` — текущий размер пользовательского блокчейна на сервере в байтах;
|
||||||
- `serverBlockchainSizeLimitBytes` — текущий лимит размера блокчейна на сервере в байтах;
|
- `serverBlockchainSizeLimitBytes` — текущий лимит размера блокчейна на сервере в байтах;
|
||||||
- `serverBlocksCount` — количество блоков в пользовательском блокчейне на сервере;
|
|
||||||
|
|
||||||
### Успешный ответ: пользователя нет
|
### Успешный ответ: пользователя нет
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
# Эксперимент Understand Anything
|
||||||
|
|
||||||
|
## Краткое описание
|
||||||
|
|
||||||
|
Добавлена изолированная лаборатория для проверки `Lum1104/Understand-Anything` без подключения к сборке, деплою и рабочему коду SHiNE.
|
||||||
|
|
||||||
|
## Что проверять
|
||||||
|
|
||||||
|
- Установить Node.js 22+ и pnpm 10+.
|
||||||
|
- Запустить `./tools/understand-anything-lab/install_codex_skills.sh`.
|
||||||
|
- Перезапустить Codex-сессию.
|
||||||
|
- Выполнить `/understand --language ru` в корне проекта.
|
||||||
|
- После генерации выполнить `/understand-dashboard` и проверить, что граф открывается и помогает ориентироваться по серверным, UI, Solana и агентским папкам.
|
||||||
|
|
||||||
|
## Ожидаемый результат
|
||||||
|
|
||||||
|
- В проекте появляется локальная папка `.understand-anything/` с графом знаний.
|
||||||
|
- Dashboard открывается и показывает интерактивный граф проекта.
|
||||||
|
- Основные процессы сборки и деплоя SHiNE не меняются.
|
||||||
|
|
||||||
|
## Статус
|
||||||
|
|
||||||
|
`pending`
|
||||||
|
|
||||||
@ -1,2 +1,2 @@
|
|||||||
client.version=1.2.98
|
client.version=1.2.99
|
||||||
server.version=1.2.92
|
server.version=1.2.93
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<link rel="manifest" href="./manifest.webmanifest" />
|
<link rel="manifest" href="./manifest.webmanifest" />
|
||||||
<title>Shine UI Demo</title>
|
<title>Shine UI Demo</title>
|
||||||
<script>
|
<script>
|
||||||
window.__SHINE_BUILD_HASH__ = '20260528010500';
|
window.__SHINE_BUILD_HASH__ = '20260530000600';
|
||||||
window.__SHINE_CLIENT_VERSION__ = '1.2.8';
|
window.__SHINE_CLIENT_VERSION__ = '1.2.8';
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@ -47,7 +47,7 @@ import * as keyStorageView from './pages/key-storage-view.js';
|
|||||||
|
|
||||||
import * as profileView from './pages/profile-view.js';
|
import * as profileView from './pages/profile-view.js';
|
||||||
import * as profileEditView from './pages/profile-edit-view.js';
|
import * as profileEditView from './pages/profile-edit-view.js';
|
||||||
import * as walletView from './pages/wallet-view.js?v=2026052806';
|
import * as walletView from './pages/wallet-view.js?v=202605300006';
|
||||||
import * as settingsView from './pages/settings-view.js';
|
import * as settingsView from './pages/settings-view.js';
|
||||||
import * as developerSettingsView from './pages/developer-settings-view.js';
|
import * as developerSettingsView from './pages/developer-settings-view.js';
|
||||||
import * as serverSettingsView from './pages/server-settings-view.js';
|
import * as serverSettingsView from './pages/server-settings-view.js';
|
||||||
|
|||||||
@ -199,6 +199,7 @@ export function render({ navigate }) {
|
|||||||
const serverLastHashLabel = document.createElement('p');
|
const serverLastHashLabel = document.createElement('p');
|
||||||
serverLastHashLabel.className = 'meta-muted';
|
serverLastHashLabel.className = 'meta-muted';
|
||||||
serverLastHashLabel.style.wordBreak = 'break-all';
|
serverLastHashLabel.style.wordBreak = 'break-all';
|
||||||
|
serverLastHashLabel.style.fontSize = '11px';
|
||||||
serverLastHashLabel.textContent = 'Hash: —';
|
serverLastHashLabel.textContent = 'Hash: —';
|
||||||
|
|
||||||
const solanaTitle = document.createElement('h3');
|
const solanaTitle = document.createElement('h3');
|
||||||
@ -213,6 +214,7 @@ export function render({ navigate }) {
|
|||||||
const solanaLastHashLabel = document.createElement('p');
|
const solanaLastHashLabel = document.createElement('p');
|
||||||
solanaLastHashLabel.className = 'meta-muted';
|
solanaLastHashLabel.className = 'meta-muted';
|
||||||
solanaLastHashLabel.style.wordBreak = 'break-all';
|
solanaLastHashLabel.style.wordBreak = 'break-all';
|
||||||
|
solanaLastHashLabel.style.fontSize = '11px';
|
||||||
solanaLastHashLabel.textContent = 'Hash: —';
|
solanaLastHashLabel.textContent = 'Hash: —';
|
||||||
|
|
||||||
card.append(
|
card.append(
|
||||||
@ -250,11 +252,12 @@ export function render({ navigate }) {
|
|||||||
const fetchServerState = async () => {
|
const fetchServerState = async () => {
|
||||||
const user = await authService.getUser(String(state.session.login || '').trim());
|
const user = await authService.getUser(String(state.session.login || '').trim());
|
||||||
if (!user?.exists) throw new Error('Пользователь не найден на сервере');
|
if (!user?.exists) throw new Error('Пользователь не найден на сервере');
|
||||||
|
const lastNumber = Number(user.serverLastGlobalNumber ?? -1);
|
||||||
return {
|
return {
|
||||||
blocksCount: Number(user.serverBlocksCount || 0),
|
|
||||||
sizeBytes: Number(user.serverBlockchainSizeBytes || 0),
|
sizeBytes: Number(user.serverBlockchainSizeBytes || 0),
|
||||||
sizeLimitBytes: Number(user.serverBlockchainSizeLimitBytes || 0),
|
sizeLimitBytes: Number(user.serverBlockchainSizeLimitBytes || 0),
|
||||||
lastNumber: Number(user.serverLastGlobalNumber ?? -1),
|
lastNumber,
|
||||||
|
blocksCount: lastNumber >= 0 ? (lastNumber + 1) : 0,
|
||||||
lastHash: String(user.serverLastGlobalHash || ''),
|
lastHash: String(user.serverLastGlobalHash || ''),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -410,7 +413,7 @@ export function render({ navigate }) {
|
|||||||
} finally {
|
} finally {
|
||||||
setButtonsDisabled(false);
|
setButtonsDisabled(false);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
refreshBtn.addEventListener('click', () => {
|
refreshBtn.addEventListener('click', () => {
|
||||||
void refreshUsage();
|
void refreshUsage();
|
||||||
|
|||||||
@ -91,7 +91,6 @@ public class Net_GetUser_Handler implements JsonMessageHandler {
|
|||||||
resp.setServerLastGlobalHash(toHex32(lastHash));
|
resp.setServerLastGlobalHash(toHex32(lastHash));
|
||||||
resp.setServerBlockchainSizeBytes(st.getFileSizeBytes());
|
resp.setServerBlockchainSizeBytes(st.getFileSizeBytes());
|
||||||
resp.setServerBlockchainSizeLimitBytes(st.getSizeLimit());
|
resp.setServerBlockchainSizeLimitBytes(st.getSizeLimit());
|
||||||
resp.setServerBlocksCount(Math.max(0, lastNum + 1));
|
|
||||||
|
|
||||||
log.info("✅ GetUser: found login={}, blockchainName={}", u.getLogin(), u.getBlockchainName());
|
log.info("✅ GetUser: found login={}, blockchainName={}", u.getLogin(), u.getBlockchainName());
|
||||||
return resp;
|
return resp;
|
||||||
|
|||||||
@ -43,7 +43,6 @@ public class Net_GetUser_Response extends Net_Response {
|
|||||||
private String serverLastGlobalHash;
|
private String serverLastGlobalHash;
|
||||||
private Long serverBlockchainSizeBytes;
|
private Long serverBlockchainSizeBytes;
|
||||||
private Long serverBlockchainSizeLimitBytes;
|
private Long serverBlockchainSizeLimitBytes;
|
||||||
private Integer serverBlocksCount;
|
|
||||||
|
|
||||||
public Boolean getExists() { return exists; }
|
public Boolean getExists() { return exists; }
|
||||||
public void setExists(Boolean exists) { this.exists = exists; }
|
public void setExists(Boolean exists) { this.exists = exists; }
|
||||||
@ -75,6 +74,4 @@ public class Net_GetUser_Response extends Net_Response {
|
|||||||
public Long getServerBlockchainSizeLimitBytes() { return serverBlockchainSizeLimitBytes; }
|
public Long getServerBlockchainSizeLimitBytes() { return serverBlockchainSizeLimitBytes; }
|
||||||
public void setServerBlockchainSizeLimitBytes(Long serverBlockchainSizeLimitBytes) { this.serverBlockchainSizeLimitBytes = serverBlockchainSizeLimitBytes; }
|
public void setServerBlockchainSizeLimitBytes(Long serverBlockchainSizeLimitBytes) { this.serverBlockchainSizeLimitBytes = serverBlockchainSizeLimitBytes; }
|
||||||
|
|
||||||
public Integer getServerBlocksCount() { return serverBlocksCount; }
|
|
||||||
public void setServerBlocksCount(Integer serverBlocksCount) { this.serverBlocksCount = serverBlocksCount; }
|
|
||||||
}
|
}
|
||||||
|
|||||||
5
tools/understand-anything-lab/.gitignore
vendored
Normal file
5
tools/understand-anything-lab/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
upstream/
|
||||||
|
work/
|
||||||
|
.understand-anything/
|
||||||
|
*.log
|
||||||
|
|
||||||
65
tools/understand-anything-lab/README.md
Normal file
65
tools/understand-anything-lab/README.md
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# Эксперимент Understand Anything
|
||||||
|
|
||||||
|
Эта папка нужна, чтобы безопасно проверить `Lum1104/Understand-Anything` в SHiNE без подключения к сборке, деплою и рабочему серверному коду.
|
||||||
|
|
||||||
|
## Что здесь лежит
|
||||||
|
|
||||||
|
- `upstream/` - локальный клон `https://github.com/Lum1104/Understand-Anything.git`; он игнорируется git, чтобы не тащить внешний репозиторий внутрь SHiNE.
|
||||||
|
- `install_codex_skills.sh` - локальная установка skills для Codex из уже скачанного `upstream/`, без `curl | bash`.
|
||||||
|
|
||||||
|
Проверенный upstream:
|
||||||
|
|
||||||
|
- commit: `26edf61856fa476e466bda1814819a266a293c47`
|
||||||
|
- дата commit: `2026-05-26T13:09:57+08:00`
|
||||||
|
- сообщение: `Merge pull request #235 from ZebangCheng/feat/add-trae-platform`
|
||||||
|
|
||||||
|
## Безопасный сценарий проверки
|
||||||
|
|
||||||
|
1. Подготовить окружение:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
node --version
|
||||||
|
pnpm --version
|
||||||
|
```
|
||||||
|
|
||||||
|
Для полноценного запуска нужен Node.js 22 или новее и pnpm 10 или новее. На текущей машине при первичной проверке были обнаружены Node.js `v18.19.1` и отсутствие `pnpm`, поэтому полноценный `/understand` пока не запускался.
|
||||||
|
|
||||||
|
2. Установить skills для Codex из локального клона:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./tools/understand-anything-lab/install_codex_skills.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Скрипт использует локальный `tools/understand-anything-lab/upstream`, а не скачивает установщик из интернета.
|
||||||
|
|
||||||
|
3. Перезапустить Codex-сессию, чтобы появились команды/skills:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/understand --language ru
|
||||||
|
/understand-dashboard
|
||||||
|
```
|
||||||
|
|
||||||
|
4. После первого запуска проверить созданный файл:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls -la .understand-anything/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Что не делать без отдельного решения
|
||||||
|
|
||||||
|
- Не включать `Understand Anything` в Gradle-сборку.
|
||||||
|
- Не добавлять его в `deployServer` или `deployUI`.
|
||||||
|
- Не переносить серверные модули в новую папку одновременно с этим экспериментом.
|
||||||
|
- Не включать auto-update hook через `/understand --auto-update`, пока не понятно, нужен ли граф в каждом commit.
|
||||||
|
|
||||||
|
## Что можно коммитить позже
|
||||||
|
|
||||||
|
Если эксперимент подтвердится, можно будет отдельно решить, нужно ли хранить `.understand-anything/knowledge-graph.json` в репозитории. По рекомендации upstream обычно коммитят содержимое `.understand-anything/`, кроме:
|
||||||
|
|
||||||
|
```gitignore
|
||||||
|
.understand-anything/intermediate/
|
||||||
|
.understand-anything/diff-overlay.json
|
||||||
|
```
|
||||||
|
|
||||||
|
До такого решения артефакты графа лучше считать локальными.
|
||||||
|
|
||||||
29
tools/understand-anything-lab/install_codex_skills.sh
Executable file
29
tools/understand-anything-lab/install_codex_skills.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
||||||
|
UPSTREAM_DIR="$SCRIPT_DIR/upstream"
|
||||||
|
|
||||||
|
if [[ ! -d "$UPSTREAM_DIR/.git" ]]; then
|
||||||
|
echo "Не найден локальный upstream-клон: $UPSTREAM_DIR" >&2
|
||||||
|
echo "Сначала выполните:" >&2
|
||||||
|
echo " git clone --depth 1 https://github.com/Lum1104/Understand-Anything.git \"$UPSTREAM_DIR\"" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v node >/dev/null 2>&1; then
|
||||||
|
echo "Не найден Node.js. Для полноценного запуска Understand Anything нужен Node.js 22+." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v pnpm >/dev/null 2>&1; then
|
||||||
|
echo "Не найден pnpm. Для полноценного запуска Understand Anything нужен pnpm 10+." >&2
|
||||||
|
echo "Skills можно установить, но команда /understand не соберёт core без pnpm." >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
UA_DIR="$UPSTREAM_DIR" "$UPSTREAM_DIR/install.sh" codex
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Skills Understand Anything установлены для Codex из локального клона."
|
||||||
|
echo "Перезапустите Codex-сессию перед использованием /understand."
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user