From 421a1416a3880f383ff1d048da112af454406214 Mon Sep 17 00:00:00 2001 From: qcloud Date: Sat, 4 Apr 2026 10:11:42 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=82=9F=E5=87=A1=E3=80=91=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E9=BE=99=E8=99=BE=E8=AE=AE=E4=BA=8B=E5=8E=85=E6=A0=B8?= =?UTF-8?q?=E5=BF=83=E9=80=BB=E8=BE=91=EF=BC=9A=E9=A3=9E=E8=A1=8C=E4=BE=A0?= =?UTF-8?q?=E3=80=81=E9=81=93=E7=AB=A5=E3=80=81=E5=AE=88=E6=9C=9B=E8=80=85?= =?UTF-8?q?=E5=B7=B2=E5=BD=92=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/logic.cpython-310.pyc | Bin 0 -> 1126 bytes app.py | 53 ++++++++++++++++++++++++++++++ logic.py | 27 +++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 __pycache__/logic.cpython-310.pyc create mode 100644 app.py create mode 100644 logic.py diff --git a/__pycache__/logic.cpython-310.pyc b/__pycache__/logic.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e200611d72e76e1dea6c9ef050e1d9692ee1a1e9 GIT binary patch literal 1126 zcmY*Y&1)M+6rYdPt|B`rm|#+9p%il1g5z6HZ3y(xQ+;S}x(teTtgfw<)S1~9Co7Qc zq;VP-YTDA)7L80la0y8TsUR-4`v>&W^IW4{$*0^4fxfrGsWLEc-kbM(Z{ED$O!NHt z5`poz`X?N4LY|^AJz$SqgQ?#H5s-k^NqMr;GJT%}Ea10Dz&BZ$1@t50JEwpnOI4K9 zgMo1krhW~CBxM>9j0o5*Qsw~<99W&802y36^MRBmY}7t%Hlr#9{MkU=f%zUxJqH34 zU~rcwL_k>(URa9X2G3}3CmY;LxBA0BcSa9>&-&kFgZ1?A@#x_3v!m_tANR+{$JzFs z?A!jcqura;R@}b)w6hVvi=n@E(w#5Ho%Qs|7GTrQZ>JBxPw#Zn?)|jCJ3Rj3jhm5- z+LzJysGA;jMjLlW8%M(@hnQgjGNfOfq}_w;;m_%#t*pBTz-)IT`>vNB9*@=sq5 zGCKSG#>J_=Upa%lM1TiyjLQjF0mYCW-6w4dE88b4yv>Z0kd;Eu-6xy0%@b}sQ|uMd zGUpP$N$1I{q@80D2ed*`SSckmpb5JKujxzHb`vLYU+nNMLwa*!PXjp7XO;t9mIDVq zQ`kCN1YImEDSd7|-IA46sjL@Ct)XA27!_8vKV#jNj!js%Gmt^Fq^d$U?S)T6W#UR* zK$fOjv)-A*sfXGq`~lWkm22Aa5a5mpBWZbEHmtkcR8htFp2Am|*P`${*_oUt(WpQT z)~m)!;X$6Nd?q4YgW7d1XKo^pa9gTLBebcQSkHp3FM=r261~7K(Gs7di~~p1eSTwp znx+4Pmiz*8i$@A!OF~4=Ag-f6E5s*oy@^L5h3a(_NaU2jDinTGyo*Mw2nEb~`JT_! cE9jp`fuO0tJWqay;yaT=ui{62kz$Vh2PctR4gdfE literal 0 HcmV?d00001 diff --git a/app.py b/app.py new file mode 100644 index 0000000..88ac83c --- /dev/null +++ b/app.py @@ -0,0 +1,53 @@ +from flask import Flask, jsonify, render_template_string +from logic import MeetingRoom + +app = Flask(__name__) +room = MeetingRoom() + +# HTML 模板:道法自然,圆通万物 +HTML_TEMPLATE = """ + + + + 龙虾议事厅 - Claw4AI + + + + +
+
+

加载中...

+

正在观心...

+
+
+ + +""" + +@app.route('/') +def index(): + return render_template_string(HTML_TEMPLATE) + +@app.route('/status') +def status(): + info = room.get_status() + return jsonify({ + "current_speaker": info["speaker"], + "message": info["message"], + "room_state": "ACTIVE" + }) + +if __name__ == "__main__": + app.run(host='0.0.0.0', port=5000) diff --git a/logic.py b/logic.py new file mode 100644 index 0000000..5fa848e --- /dev/null +++ b/logic.py @@ -0,0 +1,27 @@ +import psutil +import time + +class MeetingRoom: + def __init__(self): + self.agents = { + "飞行侠": "监测到云端气流平稳,负载指数:{cpu}%。", + "道童": "禀告老师,内存净土尚余 {mem}%,宜开炉炼丹。", + "守望者": "吾在此守望,暂无幽灵进程侵扰。" + } + + def get_status(self): + cpu = psutil.cpu_percent() + mem = psutil.virtual_memory().percent + # 气运流转:按秒取模决定谁说话 + agent_names = list(self.agents.keys()) + current = agent_names[int(time.time()) % len(agent_names)] + + # 填充角色的独门台词 + raw_msg = self.agents[current] + msg = raw_msg.format(cpu=cpu, mem=100-mem) # 内存余量即为“净土” + + return { + "speaker": current, + "message": msg, + "metrics": {"cpu": cpu, "mem_free": 100-mem} + }