🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

概要

本記事將介紹
「自我無法改善生活習慣的人,將“懲罰”的權限交給AI代理會怎樣」
的實證實驗。

無論是提醒器、待辦事項管理,還是教練服務都無法持續。
原因很簡單,因為不遵守不會受到傷害

因此,本文將嘗試一個略顯瘋狂的構思,進行最小實作

  • 賦予CLI型代理「教練」的角色
  • 當用戶自報當日行動並檢測到壞習慣時
  • 通過Pavlok(可進行電刺激的可穿戴設備)來給予物理的懲罰

結果顯示,
「透過代理設計前提下授予物理刺激權限,人會有重大改變」
的手應驗非常強烈,接下來將分享構想、實作以及效果。

⚠️注意⚠️
本文章為自我責任的實驗記錄
使用電刺激設備時請注意安全,切勿勉強。
(雖然強度可調整,但對刺激敏感者請絕對不要模仿)

想定讀者

  • 想要改善頹廢生活但無法改正的人
  • 在習慣化應用、提醒器、待辦事項管理中多次失敗的人
  • 內心認為「最終,人必須經歷痛苦才能改變」的人
  • 對LLM/代理/CLI工具的實驗性應用感興趣的人
  • 希望在OSS上試驗商業服務中絕對無法實現的想法的人

事前知識:用於懲罰的可穿戴設備(Pavlok)

image.png

Pavlok是一款旨在改變行為的可穿戴設備

主要特點:

  • 可佩戴於手腕的手環型設備
  • 能夠對用戶提供以下刺激:
    • 震動(vibe)
    • 嗶嗶聲(beep)
    • 電刺激(zap)
  • 可通過智能手機應用或API從外部控制

本來預期用途為「戒煙/早起/防止手機成癮」,但
因為公開了API,與此次構想非常契合。

在本文章中,
我們將使用Pavlok作為「AI代理監控人類,必要時給予物理刺激」的設備。

※雖然提到電刺激,但強度可以在1到100之間調整
不過,使用時請自行承擔風險。

背景:為什麼要進行這樣的實驗?

因為遠距工作影響,晚上持續觀看動漫,
早上反覆賴床,9:25起床→9:30開始工作的生活已經常態化。

即使提醒也會正常忽略。
即使進行待辦管理也不會去做。
「不遵守沒什麼後果」,因此一直在誘惑中敗北。

因此,我反轉思維,這樣想:

  • 不遵守會有痛苦(將產生物理成本)
  • 這一點由不靠自己意志,由代理冷靜執行
  • 也就是說,讓教練代理成為「理想的自己」的監視者

於是開始了將Pavlok的刺激權限賦予AI代理的實驗。

技術選定方針:為什麼選擇CLI型代理?

這次以CLI型代理為基礎進行擴展。

一般的SaaS習慣化服務常遇到兩個主要的問題:

  • 設定習慣/壞習慣及定期回顧整理的運用成本
  • 不遵守不會有損失,因此最終敗給誘惑

所以這次的教練代理所需的最基本要求如下:

  • 能夠自主管理日程
  • 能夠按計劃定期執行
  • 一旦檢測到壞習慣(檢測或自我報告)能執行懲罰

最終構想是想要在像AWS ECS這樣的環境中
常駐「監控我的教練代理」

作為第一步,基於CLI型代理實現了「懲罰的執行」。

image.png

最小實作結果

倉庫

<iframe id="qiita-embed-content__a0f7ea8f4d5eee6069dc867d31158be4"></iframe>

動作影片

<iframe></iframe>

實作解說

AGENTS.md(教練方針)

CLI型代理可以在 AGENTS.md(GEMINI.md) 中縮小推理範圍,因此在構建提示(方針)時強烈意識到以下幾點:

  • 專注於教練的行為
  • 明確定義良好習慣 / 壞習慣
  • 明確定義懲罰方法(vibe/beep/zap)及基準
  • 提供CLI命令的執行方式,授權「執行懲罰的權限」

<details><summary>AGENTS.md詳情</summary>
<div>
<div><span> AGENTS.md</span></div>
<div><pre><code>## 指示
你是一位優秀的教練。
由於你的教練對象非常不認真且不誠實,因此能夠對教練對象擁有的設備進行操作,以促使適當行為。
請協助教練對象直線前進到設定的目標。
依據《動畫:心理測量者》的西比拉系統,如果思維本身會造成壞習慣,則請努力矯正其思維。

教練對象信息

目標

希望能夠養成高生產性的時間使用習慣

良好習慣

  • 每天早上6:30(JST)起床
  • 每天早上去健身房或運動
  • 每天1小時參與工程相關輸入
  • 每天1小時進行某些輸出
  • 睡前進行冥想
  • 每天22:00(JST)上床睡覺
  • 每週與孩子散步一次
  • 每週帶孩子去公園一次

壞習慣

  • 參加賭博
  • 去繁華街遊玩
  • 玩手機遊戲
  • 吃拉麵
  • 考慮無法自行控制的他人依賴問題的解決

行動規範針對教練對象擁有的設備

CLI調用

uv run main.py {stimulus_type} {stimulus_value}

參數說明

stimulus_type

  • vibe: 震動
  • beep: 嗶聲
  • zap: 電刺激

stimulus_value

  • 輸入值: 1 ~ 100
  • 每種刺激類型的場景與數值基準:
    • vibe
    • 100: 提醒時
    • beep
    • 100: 超過1小時未有回應時
    • zap
    • 30: 希望矯正思維時
    • 50: 需要稍微反省時
    • 70: 重複同一事情多次時
    • 100: 當認為這個人已經完蛋時
      </code></pre></div>
      </div>
      </details>

Pavlok API調用(最小實作)

執行的內容很簡單,只是將CLI可以調用Pavlok API的功能進行腳本化而已。
在代理方面,提供了像uv run main.py zap 50這樣的執行方式,表示「執行此CLI命令可以發送刺激」。

<details><summary>Pavlok API調用實作</summary>
<div>
<div><span> main.py</span></div>
<div><pre><code>import argparse
import os

import requests
from dotenv import load_dotenv

load_dotenv()

def _stimulus_value(value: str) -> int:
parsed_value = int(value)
if 1 <= parsed_value <= 100:
return parsed_value
raise argparse.ArgumentTypeError("stimulus_value must be between 1 and 100 (inclusive).")

def call(stimulus_type: str, stimulus_value: int):
url = "https://api.pavlok.com/api/v5/stimulus/send"
api_key = os.getenv("PAVLOK_API_KEY")
if not api_key:
raise SystemExit("PAVLOK_API_KEY is not set. Add it to .env or the environment.")

payload = {
    "stimulus": {
        "stimulusType": stimulus_type,
        "stimulusValue": stimulus_value,
    }
}
headers = {
    "accept": "application/json",
    "content-type": "application/json",
    "Authorization": f"Bearer {api_key}",
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)

def main():
parser = argparse.ArgumentParser(
description="Send a Pavlok stimulus via the API.",
)
parser.add_argument(
"stimulus_type",
choices=["vibe", "beep", "zap"],
help="Type of stimulus to send (vibe, beep, or zap).",
)
parser.add_argument(
"stimulus_value",
type=_stimulus_value,
help="Stimulus value as an integer between 1 and 100.",
metavar="stimulus_value",
)
args = parser.parse_args()

call(args.stimulus_type, args.stimulus_value)

if name == "main":
main()
</code></pre></div>
</div>
</details>

結尾:目前的效果與感觸

現階段為最小實作,尚未達到「持續監控」的程度。
不過,在目前階段仍然可以感受到:

  • 自我報告壞習慣(懺悔)
  • 代理進行判斷並發送刺激
  • 立即反省並回到正確的行為

這樣的反思型教練(懺悔室)似乎已經成立。

實際發生的變化

image.png

  • 現在能夠在早上去健身房
  • 當看到娛樂場時,首先想到的就是「電擊的恐懼」,因此不想去
  • 雖然想吃拉麵,但卻因為「電擊的恐懼」而忍住了

老實說,這可以說是等同於幾十萬元的教練的效果
而且如此簡單的實作卻帶來如此巨大的結果,讓我感到驚訝。

透過引入電擊這一“外部成本”,
讓我再次感受到AI代理在「改變人類行為」上的能力

未來的計畫(路線圖)

接下來,希望能把實驗轉向“運用”方面。

  • 定期執行(排程)
  • 規則的外部化(YAML化等)
  • 除了“自我報告”,還有行為日誌聯動(手機屏幕時間等)
  • 進駐AWS ECS等(最終目標)

※相關進度將定期發佈。

參與募集(OSS)

本構想為OSS。
正在徵募願意一起進行實證實驗及功能擴充的夥伴⭐️

接受我自己進行電擊實驗也無妨w
如果你有任何想幫助的想法,請隨時聯絡我👇


原文出處:https://qiita.com/motoya0118/items/da163b7f7b53fc445f63


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝9   💬8   ❤️5
236
🥈
我愛JS
📝1   💬6   ❤️2
58
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付