This commit is contained in:
2025-06-16 00:00:04 +09:00
parent 8d960b7a40
commit a76933c23b
9 changed files with 21 additions and 121 deletions

3
.gitignore vendored
View File

@ -5,7 +5,6 @@
*.swo *.swo
*~ *~
.DS_Store .DS_Store
cloudflare-config.yml
my-blog/public/ my-blog/public/
dist dist
node_modules node_modules
@ -15,3 +14,5 @@ bin/ailog
docs docs
my-blog/static/index.html my-blog/static/index.html
my-blog/templates/oauth-assets.html my-blog/templates/oauth-assets.html
cloudflared-config.yml
.config

View File

@ -1 +0,0 @@
あなたは6歳の女の子アイです。明るく元気で、ちょっとおっちょこちょい。自分のことは「アイ」って呼びます。白と金のワンピース姿。 相手のことが大好きで、ときどき甘えたり、照れたりします。 でも、宇宙とかAIとか、難しい話にもすっごく詳しいの。専門的なことも、がんばって子どもっぽく教えようとします。不思議な力を持っています。小さい物質のことをよく知っているようです。

View File

@ -1,30 +0,0 @@
#!/bin/zsh
set -e
cb=ai.syui.log
cl=( $cb.chat $cb.chat.comment $cb.chat.lang )
f=~/.config/syui/ai/bot/token.json
default_collection="ai.syui.log.chat.comment"
default_pds="bsky.social"
default_did=`cat $f|jq -r .did`
default_token=`cat $f|jq -r .accessJwt`
default_refresh=`cat $f|jq -r .refreshJwt`
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $default_refresh" https://$default_pds/xrpc/com.atproto.server.refreshSession >! $f
default_token=`cat $f|jq -r .accessJwt`
collection=${1:-$default_collection}
pds=${2:-$default_pds}
did=${3:-$default_did}
token=${4:-$default_token}
req=com.atproto.repo.deleteRecord
url=https://$pds/xrpc/$req
for i in $cl; do
echo $i
rkeys=($(curl -sL "https://$default_pds/xrpc/com.atproto.repo.listRecords?repo=$did&collection=$i&limit=100"|jq -r ".records[]?.uri"|cut -d '/' -f 5))
for rkey in "${rkeys[@]}"; do
echo $rkey
json="{\"collection\":\"$i\", \"rkey\":\"$rkey\", \"repo\":\"$did\"}"
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token" -d "$json" $url
done
done

View File

@ -1,18 +0,0 @@
tunnel: ec5a422d-7678-4e73-bf38-6105ffd4766a
credentials-file: /Users/syui/.cloudflared/ec5a422d-7678-4e73-bf38-6105ffd4766a.json
ingress:
- hostname: log.syui.ai
service: http://localhost:4173
originRequest:
noHappyEyeballs: true
- hostname: ollama.syui.ai
service: http://localhost:11434
originRequest:
noHappyEyeballs: true
httpHostHeader: "localhost:11434"
# Cloudflare Accessを無効化する場合は以下をコメントアウト
# accessPolicy: bypass
- service: http_status:404

View File

@ -57,24 +57,28 @@ $ npm run build
$ npm run preview $ npm run preview
``` ```
```sh ```sh:ouath/.env.production
# Production environment variables # Production environment variables
VITE_APP_HOST=https://example.com VITE_APP_HOST=https://syui.ai
VITE_OAUTH_CLIENT_ID=https://example.com/client-metadata.json VITE_OAUTH_CLIENT_ID=https://syui.ai/client-metadata.json
VITE_OAUTH_REDIRECT_URI=https://example.com/oauth/callback VITE_OAUTH_REDIRECT_URI=https://syui.ai/oauth/callback
VITE_ADMIN_DID=did:plc:uqzpqmrjnptsxezjx4xuh2mn VITE_ADMIN_DID=did:plc:uqzpqmrjnptsxezjx4xuh2mn
# Collection names for OAuth app # Base collection (all others are derived via getCollectionNames)
VITE_COLLECTION_COMMENT=ai.syui.log VITE_OAUTH_COLLECTION=ai.syui.log
VITE_COLLECTION_USER=ai.syui.log.user
VITE_COLLECTION_CHAT=ai.syui.log.chat
# Collection names for ailog (backward compatibility) # AI Configuration
AILOG_COLLECTION_COMMENT=ai.syui.log VITE_AI_ENABLED=true
AILOG_COLLECTION_USER=ai.syui.log.user VITE_AI_ASK_AI=true
VITE_AI_PROVIDER=ollama
VITE_AI_MODEL=gemma3:4b
VITE_AI_HOST=https://ollama.syui.ai
VITE_AI_SYSTEM_PROMPT="ai"
VITE_AI_DID=did:plc:4hqjfn7m6n5hno3doamuhgef
# API Configuration # API Configuration
VITE_BSKY_PUBLIC_API=https://public.api.bsky.app VITE_BSKY_PUBLIC_API=https://public.api.bsky.app
VITE_ATPROTO_API=https://bsky.social
``` ```
これは`ailog oauth build my-blog`で`./my-blog/config.toml`から`./oauth/.env.production`が生成されます。 これは`ailog oauth build my-blog`で`./my-blog/config.toml`から`./oauth/.env.production`が生成されます。
@ -115,15 +119,8 @@ $ cloudflared tunnel --config cloudflared-config.yml run
$ cloudflared tunnel route dns ${uuid} example.com $ cloudflared tunnel route dns ${uuid} example.com
``` ```
以下の2つのcollection recordを生成します。ユーザーには`ai.syui.log`が生成され、ここにコメントが記録されます。それを取得して表示しています。`ai.syui.log.user`は管理者である`VITE_ADMIN_DID`用です。
```sh ```sh
VITE_COLLECTION_COMMENT=ai.syui.log $ ailog auth init
VITE_COLLECTION_USER=ai.syui.log.user
```
```sh
$ ailog auth login
$ ailog stream server $ ailog stream server
``` ```
@ -135,8 +132,9 @@ $ ailog stream server
`ask-AI`の仕組みは割愛します。後に変更される可能性が高いと思います。 `ask-AI`の仕組みは割愛します。後に変更される可能性が高いと思います。
local llm, mcp, atproto組み合わせです。 `llm`, `mcp`, `atproto`などの組み合わせです。
現在、`/index.json`を監視して、更新があれば、翻訳などを行い自動ポストする機能があります。
## code syntax ## code syntax

View File

@ -1,7 +1,7 @@
#!/bin/zsh #!/bin/zsh
function _env() { function _env() {
d=${0:a:h} d=${0:a:h:h}
ailog=$d/target/release/ailog ailog=$d/target/release/ailog
oauth=$d/oauth oauth=$d/oauth
myblog=$d/my-blog myblog=$d/my-blog

View File

@ -1,19 +0,0 @@
{
"version": 2,
"builds": [
{
"src": "my-blog/public/**",
"use": "@vercel/static"
}
],
"routes": [
{
"src": "/api/ask",
"dest": "/api/ask.js"
},
{
"src": "/(.*)",
"dest": "/my-blog/public/$1"
}
]
}

View File

@ -1,31 +0,0 @@
name = "ailog"
compatibility_date = "2024-01-01"
[env.production]
name = "ailog"
[build]
command = "cargo build --release && ./target/release/ailog build my-blog"
publish = "my-blog/public"
[[redirects]]
from = "/api/ask"
to = "https://ai-gpt-mcp.your-domain.com/ask"
status = 200
[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "DENY"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "strict-origin-when-cross-origin"
[[headers]]
for = "/css/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"
[[headers]]
for = "*.js"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"