mop8
リポジトリ
機能
#Slack の特定ユーザの発言を収集して、話しかけたときにそれに基づいたそれらしい返事をする 実装メモ
Sentence は WordMap namespace 配下にあったほうがいい?
なくていい
互いに疎でいられるならそのほうが composable.
WordMap の構造に強く依存しているので分離している必要がない
approximate_connection_time
Slack から refresh が入るらしい?
event API の応答は3秒以内
Slack のメッセージフォーマットはドメインとして受け入れるのが楽そう
Persona は
話す
再構築できる
聞く
Brain を持つ
Brainは
言葉から学ぶ
返事を作る
初期化できる
code:sh
mop8/
| # Enterprise Business Rules and Application Business Rules.
| # Business logics and interfaces.
|-- bot/
| |-- message.ex
|
| # Interface adapters
|-- adapters/
| |-- tokenizer.ex
| |-- message_controller.ex
|
| # Frameworks & Drivers
| # Elixir kernel launch Application in this file.
|-- application.ex
|
| # Frameworks & Drivers
| # Utility functions for manual operation.
| # These will be used only in iex.
|-- operation.ex
TODOs
2-gram ではなくて単純な2分割にする
文字の結びつきが強くてうまいこと文字列を作れていない気がする
Maintainer をクリーンアーキテクチャの形にする
再送に対応する
Message の text が空のときがあるぽい
ファイルがなかったら作る
Bold などを消して text と統合する
英語単語や絵文字の扱い
英単語は1単語として扱うか?
起動したら state を active にする
再送対策をする
データ構造について再考する
先頭の単語として記録した集合から先頭を選ぶ
docker-compose で動かす
特殊コマンドを実装する
遅延指定メッセージ
特定の人が特定の時間に書き込みをしたらメッセージをメンションする
mix release する
GitHub Actions で CI を設定する
Raspberry Pie で動かす
Prometheus exporter でモニタリングする
config をどうにかする
環境変数でいいのか?
Kubernetes の ConfigMap 使うならよさそう
Supervisor の再起動上限を設定する
default でいいか?
DB を使うように修正する
WebSockex の警告を直す
DONE
Sentence の先頭の選択も roulette_selection でやる
テストをもっと書く
DI がチェーンすると面倒なのでいい感じにしたい
WordMap を store したときに失敗したらエラーメッセージを出す
Let it crash しておくでいい気がする
infrastructure layer を分離する
message
WordMap
with 句で書き直す
Message を永続化する
WordMap を Message から rebuild 可能にする
Slack のチャンネルを解析して WordMap を構築する
アーキテクチャ見直し
console からのテストできるようにする
メンションを受けたチャンネルにreply返すようにする
メンションも解析する
無限ループ対策をする
「うん」のようなケースを作りたい
データが十分にあれば起きづらくなる?
探索時に一定確率で探索を打ち切る
exponential に打ち切り確率を高めていく