1
0
This commit is contained in:
syui 2025-06-01 16:43:12 +09:00
parent 725783bbca
commit 3459231bba
Signed by: syui
GPG Key ID: 5417CFEBAD92DF56
11 changed files with 227 additions and 2157 deletions

View File

@ -1,42 +0,0 @@
name: github pages
on:
push:
branches:
- main
env:
GITEA_MAIL: ${{ secrets.GITEA_MAIL }}
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
ref: main
submodules: true
fetch-depth: 0
- run: |
yarn install
rm -rf public
git clone https://${GITEA_TOKEN}@git.syui.ai/ai/card_public public
rm -rf public/.git*
rm -rf public/static
- name: Build
env:
TZ: "Asia/Tokyo"
run: |
yarn build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
user_name: 'ai[bot]'
user_email: '138105980+yui-syui-ai[bot]@users.noreply.github.com'

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "public"]
path = public
url = git@git.syui.ai:ai/card_public

227
claude.md Normal file
View File

@ -0,0 +1,227 @@
# syuiエコシステム統合設計書
## 中核思想
- **存在子理論**: この世界で最も小さいもの(存在子/aiの探求
- **唯一性原則**: 現実の個人の唯一性をすべてのシステムで担保
- **現実の反映**: 現実→ゲーム→現実の循環的影響
## システム構成図
```
存在子(ai) - 最小単位の意識
[ai.moji] 文字システム
[ai.os] + [ai.game device] ← 統合ハードウェア
├── ai.shell (Claude Code的機能)
├── ai.gpt (自律人格・記憶システム)
├── ai.ai (個人特化AI・心を読み取るAI)
├── ai.card (カードゲーム・iOS/Web/API)
└── ai.bot (分散SNS連携・カード配布)
[ai.verse] メタバース
├── world system (惑星型3D世界)
├── at system (atproto/分散SNS)
├── yui system (唯一性担保)
└── ai system (存在属性)
```
## 各システム詳細
### ai.gpt - 自律的送信AI
**目的**: 関係性に基づく自発的コミュニケーション
**中核概念**:
- **人格**: 記憶(過去の発話)と関係性パラメータで構成
- **唯一性**: atproto accountとの1:1紐付け、改変不可能
- **自律送信**: 関係性が閾値を超えると送信機能が解禁
**技術構成**:
- `MemoryManager`: 完全ログ→AI要約→コア判定→選択的忘却
- `RelationshipTracker`: 時間減衰・日次制限付き関係性スコア
- `TransmissionController`: 閾値判定・送信トリガー
- `Persona`: AI運勢1-10ランダムによる人格変動
**実装仕様**:
```
- 言語: Python (fastapi_mcp)
- ストレージ: JSON/SQLite選択式
- インターフェース: Python CLI (click/typer)
- スケジューリング: cron-like自律処理
```
### ai.card - カードゲームシステム
**目的**: atproto基盤でのユーザーデータ主権カードゲーム
**現在の状況**:
- ai.botの機能として実装済み
- atproto accountでmentionすると1日1回カードを取得
- ai.api (MCP server予定) でユーザー管理
**移行計画**:
- **iOS移植**: Claudeが担当予定
- **データ保存**: atproto collection recordに保存ユーザーがデータを所有
- **不正防止**: OAuth 2.1 scope (実装待ち) + MCP serverで対応
- **画像ファイル**: Cloudflare Pagesが最適
**yui system適用**:
- カードの効果がアカウント固有
- 改ざん防止によるゲームバランス維持
- 将来的にai.verseとの統合で固有スキルと連動
### ai.ai - 心を読み取るAI
**目的**: 個人特化型AI・深層理解システム
**ai.gptとの関係**:
- ai.gpt → ai.ai: 自律送信AIから心理分析AIへの連携
- 関係性パラメータの深層分析
- ユーザーの思想コア部分の特定支援
### ai.verse - UEメタバース
**目的**: 現実反映型3D世界
**yui system実装**:
- キャラクター ↔ プレイヤー 1:1紐付け
- unique skill: そのプレイヤーのみ使用可能
- 他プレイヤーは同キャラでも同スキル使用不可
**統合要素**:
- ai.card: ゲーム内アイテムとしてのカード
- ai.gpt: NPCとしての自律AI人格
- atproto: ゲーム内プロフィール連携
## データフロー設計
### 唯一性担保の実装
```
現実の個人 → atproto account (DID) → ゲーム内avatar → 固有スキル
↑_______________________________| (現実の反映)
```
### AI駆動変換システム
```
遊び・創作活動 → ai.gpt分析 → 業務成果変換 → 企業価値創出
↑________________________| (Play-to-Work)
```
### カードゲーム・データ主権フロー
```
ユーザー → ai.bot mention → カード生成 → atproto collection → ユーザー所有
↑ ↓
← iOS app表示 ← ai.card API ←
```
## 技術スタック統合
### Core Infrastructure
- **OS**: Rust-based ai.os (Arch Linux base)
- **Container**: Docker image distribution
- **Identity**: atproto selfhost server + DID管理
- **AI**: fastapi_mcp server architecture
- **CLI**: Python unified (click/typer) - Rustから移行
### Game Engine Integration
- **Engine**: Unreal Engine (Blueprint)
- **Data**: atproto → UE → atproto sync
- **Avatar**: 分散SNS profile → 3D character
- **Streaming**: game screen = broadcast screen
### Mobile/Device
- **iOS**: ai.card移植 (Claude担当)
- **Hardware**: ai.game device (future)
- **Interface**: controller-first design
## 実装優先順位
### Phase 1: AI基盤強化 (現在進行)
- [ ] ai.gpt memory system完全実装
- 記憶の階層化(完全ログ→要約→コア→忘却)
- 関係性パラメータの時間減衰システム
- AI運勢による人格変動機能
- [ ] ai.card iOS移植
- atproto collection record連携
- MCP server化ai.api刷新
- [ ] fastapi_mcp統一基盤構築
### Phase 2: ゲーム統合
- [ ] ai.verse yui system実装
- unique skill機能
- atproto連携強化
- [ ] ai.gpt ↔ ai.ai連携機能
- [ ] 分散SNS ↔ ゲーム同期
### Phase 3: メタバース浸透
- [ ] VTuber配信機能統合
- [ ] Play-to-Work変換システム
- [ ] ai.game device prototype
## 将来的な連携構想
### システム間連携(現在は独立実装)
```
ai.gpt (自律送信) ←→ ai.ai (心理分析)
ai.card (iOS,Web,API) ←→ ai.verse (UEゲーム世界)
```
**共通基盤**: fastapi_mcp
**共通思想**: yui system現実の反映・唯一性担保
### データ改ざん防止戦略
- **短期**: MCP serverによる検証
- **中期**: OAuth 2.1 scope実装待ち
- **長期**: ブロックチェーン的整合性チェック
## AIコミュニケーション最適化
### プロジェクト要件定義テンプレート
```markdown
# [プロジェクト名] 要件定義
## 哲学的背景
- 存在子理論との関連:
- yui system適用範囲
- 現実反映の仕組み:
## 技術要件
- 使用技術fastapi_mcp統一
- atproto連携方法
- データ永続化方法:
## ユーザーストーリー
1. ユーザーが...すると
2. システムが...を実行し
3. 結果として...が実現される
## 成功指標
- 技術的:
- 哲学的(唯一性担保):
```
### Claude Code活用戦略
1. **小さく始める**: ai.gptのMCP機能拡張から
2. **段階的統合**: 各システムを個別に完成させてから統合
3. **哲学的一貫性**: 各実装でyui systemとの整合性を確認
4. **現実反映**: 実装がどう現実とゲームを繋ぐかを常に明記
## 開発上の留意点
### MCP Server設計指針
- 各AIgpt, card, ai, botは独立したMCPサーバー
- fastapi_mcp基盤で統一
- atproto DIDによる認証・認可
### 記憶・データ管理
- **ai.gpt**: 関係性の不可逆性重視
- **ai.card**: ユーザーデータ主権重視
- **ai.verse**: ゲーム世界の整合性重視
### 唯一性担保実装
- atproto accountとの1:1紐付け必須
- 改変不可能性をハッシュ・署名で保証
- 他システムでの再現不可能性を技術的に実現
## 継続的改善
- 各プロジェクトでこの設計書を参照
- 新機能追加時はyui systemとの整合性をチェック
- 他システムへの影響を事前評価
- Claude Code導入時の段階的移行計画

View File

@ -1,25 +0,0 @@
{
"name": "card",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@google/model-viewer": "^3.4.0",
"@nuxtjs/proxy": "^2.1.0",
"axios": "^1.6.8",
"core-js": "^3.6.4",
"moment": "^2.29.4",
"three": "^0.162.0",
"vue": "^2.6.11",
"vue-loading-template": "^1.3.2",
"vue-meta": "^2.4.0",
"vue-template-compiler": "^2.6.14"
},
"devDependencies": {
"@vue/cli-service": "~4.5.15"
}
}

1
public

@ -1 +0,0 @@
Subproject commit ceda2fab6ea8819848317b8cc7a5a3a1f3ab4a9e

View File

@ -1,10 +0,0 @@
# card
- host : [card.syui.ai](https://card.syuiai)
```sh
$ nvm use 16
$ yarn install
$ yarn dev
```

View File

@ -1,77 +0,0 @@
#!/bin/zsh
d=${0:a:h}
dd=${0:a:h:h}
echo "1 : [d]efault(no), [b]lack, [s]ilver"
read
url=syui.ai/img
case $OSTYPE in
darwin*)
path_nvm_sh="/opt/homebrew/opt/nvm/nvm.sh";;
linux*)
path_nvm_sh="";;
esac
dir=$dd/public/card
static=$dd/public/static/img
json=$dd/public/json/card.json
mkdir -p $dir
mkdir -p $static
n=`cat $json|jq "length"`
n=`expr $n - 1`
case $1 in
silver|s)
bg=$static/card_bg_silver.png
br=$static/card_br.png
;;
black|b)
bg=$static/card_bg_black.png
br=$static/card_br.png
;;
default|d|*)
bg=$static/card_bg.png
br=$static/card_br.png
;;
esac
cd $dir
export NVM_DIR="$HOME/.nvm"
[ -s "$path_nvm_sh" ] && \. "$path_nvm_sh"
nvm use 17
nvm i squoosh-cli
for ((i=0;i<=$n;i++))
do
p=`cat $json|jq -r ".[$i].p"`
sid=`cat $json|jq -r ".[$i].src"`
s=$static/${sid}.png
id=`cat $json|jq -r ".[$i].id"`
o=$dir/card_$id.png
if [ -f $o ];then
continue
fi
if [ ! -f $s ];then
curl -sL $url/yui_${sid}.png -o $s
fi
if [ ! -f $o ] && [ -n "`echo $s|grep ai_model`" ];then
model_card=$dir/${sid}.png
model_webp=$dir/${sid}.webp
cp -rf $model_card $o
squoosh-cli --webp '{"quality":100}' -d ./ --resize '{width:825,height:1080}' $o
fi
if [ ! -f $o ];then
#if [ ! -f $o ] && [ -z "`echo $s|grep ai_model`" ];then
composite -gravity north -geometry +0+160 -compose over $s $bg $o.back
composite -gravity north -geometry +0+0 -compose over $br $o.back $o
squoosh-cli --webp '{"quality":100}' -d ./ --resize '{width:825,height:1080}' $o
rm $o.back
fi
done

View File

@ -1,57 +0,0 @@
#!/bin/zsh
url=https://card.syui.ai
d=${0:a:h}
dd=${0:a:h:h}
dir=$dd/public/card
o_dir=$dd/public/static/img
static=$dd/public/static/img
json=$dd/public/json/card.json
mkdir -p $dir
mkdir -p $static
n=`cat $json|jq "length"`
n=`expr $n - 1`
for ((i=0;i<=$n;i++))
do
p=`cat $json|jq -r ".[$i].p"`
h=`cat $json|jq -r ".[$i].h"`
sid=`cat $json|jq -r ".[$i].src"`
s=$static/${sid}.png
id=`cat $json|jq -r ".[$i].id"`
o=$dir/card_$id.png
oo=$o_dir/og_${id}.png
o_url=$url/card/og_${id}.png
index=$o_dir/$id/index.html
if [ ! -f $oo ];then
echo $oo
magick convert $o -gravity center -extent 8000x4000 $oo
fi
# mkdir -p $o_dir/$id
#
#echo '
#<!DOCTYPE html>
#<html lang="en">
#<head>
#<title>card.syui.ai</title><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>card.syui.ai</title><link href="app.css" rel="preload" as="style"><link href="app.js" rel="preload" as="script"><link href="chunk-vendors.js" rel="preload" as="script"><link href="app.css" rel="stylesheet">
#<meta name="twitter:card" content="summary">
#<meta property="og:url" content="https://card.syui.ai">
#' >! $index
#
#echo "
#<meta property=\"og:title\" content=\"$h\">
#<meta property=\"og:description\" content=\"$p\">
#<meta property=\"og:image\" content=\"$o_url\">
#" >> $index
#
#echo '
#</head>
#<body>
#<div id="app"></div><script src="chunk-vendors.js"></script><script src="app.js"></script>
#</body>
#</html>
#' >> $index
done

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +0,0 @@
import Vue from 'vue'
import App from './App.vue'
import VueMeta from 'vue-meta'
Vue.use(VueMeta)
Vue.config.productionTip = false
new Vue({
render: h => h(App)
}).$mount('#app')

View File

@ -1,23 +0,0 @@
module.exports = {
devServer: {
proxy: {
"^/api*": {
target: "https://api.syui.ai",
pathRewrite: { "^/api": "" },
}
}
},
publicPath: "/",
configureWebpack: {
output: {
filename: '[name].js',
chunkFilename: '[name].js'
}
},
css: {
extract: {
filename: '[name].css',
chunkFilename: '[name].css'
},
},
}