星期五, 3月 20, 2026

# OpenCode + Discord + 語音設定指南

 # OpenCode + Discord + 語音設定指南


## 目標

把 OpenCode AI 助手接入 Discord,讓你可以在 Discord 頻道裡用自然語言和 AI 對話,並讓 AI 開口說話。


---


## 第一部分:建立 Discord Bot


### 1.1 建立應用程式


1. 前往 [Discord Developer Portal](https://discord.com/developers/applications)

2. 點擊右上角 **New Application**

3. 輸入名稱(例:OpenCode Bot)

4. 點擊 **Create**


### 1.2 取得 Bot Token


1. 左側選單點 **Bot**

2. 點 **Reset Token**

3. **複製並保存 Token**(只會顯示一次!)


### 1.3 開啟權限


在 Bot 頁面往下滾動,找到 **Privileged Gateway Intents**,開啟:

- PRESENCE INTENT

- SERVER MEMBERS INTENT  

- MESSAGE CONTENT INTENT


### 1.4 邀請 Bot 到伺服器


1. 左側選單 **OAuth2 > URL Generator**

2. Scopes 勾選:`bot` 和 `applications.commands`

3. Bot Permissions 勾選:

   - Read Messages

   - Send Messages

   - Manage Channels

   - Read Message History

4. 複製產生的 URL,貼到瀏覽器,選擇伺服器


---


## 第二部分:安裝 Docker


1. 去 [docker.com](https://docker.com) 下載 **Docker Desktop**

2. 安裝後啟動 Docker

3. 等待 Docker 運行(Docker Desktop 圖示變綠色)


---


## 第三部分:設定 OpenCode MCP


### 3.1 開啟 OpenCode 設定檔


**Windows:**

```bash

notepad %AppData%\.config\opencode\opencode.json

```


**macOS / Linux:**

```bash

nano ~/.config/opencode/opencode.json

```


### 3.2 加入 Discord MCP 設定


```json

{

  "mcp": {

    "discord": {

      "command": "docker",

      "args": [

        "run", "--rm", "-i",

        "-e", "DISCORD_TOKEN=你的Bot_Token",

        "-e", "DISCORD_GUILD_ID=你的伺服器ID",

        "saseq/discord-mcp:latest"

      ]

    }

  }

}

```


**替換內容:**

- `你的Bot_Token` → 剛才複製的 Discord Bot Token

- `你的伺服器ID` →  Discord 伺服器 ID(在 Discord 開發者模式開啟後,滑鼠右鍵頻道可取得)


### 3.3 驗證設定


```bash

opencode mcp list

```


應該看到 `discord` 在列表中。


---


## 第四部分:測試


重啟 OpenCode,然後輸入:


```

在 Discord 發送「測試成功」

```


Bot 應該會在你的 Discord 伺服器發送訊息。


---


## 第五部分:設定語音(TTS)


### 5.1 安裝 Edge TTS


```bash

pip install edge-tts

```


### 5.2 建立語音腳本


建立 `speak.py`:


```python

import subprocess

import os


def speak(text, voice="zh-TW-HsiaoYuNeural"):

    output_path = "C:/Users/cowpe/output.mp3"

    cmd = [

        "edge-tts",

        "--voice", voice,

        "--text", text,

        "--write-media", output_path

    ]

    subprocess.run(cmd, capture_output=True)

    os.startfile(output_path)


if __name__ == "__main__":

    import sys

    if len(sys.argv) > 1:

        text = " ".join(sys.argv[1:])

        speak(text)

```


### 5.3 測試語音


```bash

python speak.py 你好,這是語音測試

```


### 5.4 可用中文語音


| 語音 | 說明 |

|------|------|

| zh-TW-HsiaoYuNeural | 台灣女生 |

| zh-TW-YunJheNeural | 台灣男生 |

| zh-CN-XiaoxiaoNeural | 中國女生 |

| zh-CN-YunxiNeural | 中國男生 |


---


## 第六部分:讓 OpenCode 自動朗讀回覆


### 6.1 方法一:命令列直接朗讀


每次想讓 OpenCode 回答並朗讀時,用這個指令:


```bash

python speak.py "$(opencode run '用一句話解釋什麼是區塊鏈')"

```


### 6.2 方法二:在 OpenCode 裡呼叫


在 OpenCode 輸入:


```

執行 python speak.py "測試訊息"

```


### 6.3 方法三:結合 ngrok 讓外面也能用


如果想在外面用手機也能控制家裡的 OpenCode:


1. 安裝 ngrok:

   ```bash

   pip install ngrok

   ```


2. 啟動 OpenCode 服務:

   ```bash

   opencode serve --port 8080

   ```


3. 另一個終端開 ngrok:

   ```bash

   ngrok http 8080

   ```


4. 複製 ngrok 給的 URL,在外面也能用了


---


## 第七部分:常見問題


### Q: Docker 啟動失敗?

確認 Docker Desktop 正在運行,圖示應該是綠色的。


### Q: Bot 沒有回應?

檢查 Bot 是否有足夠權限(Administrator 或明確開啟讀寫訊息權限)。


### Q: Token 無效?

去 Developer Portal 重新 Reset Token,舊的會失效。


### Q: 想換語音?

修改 `speak.py` 中的 `voice` 參數。


### Q: 沒有聲音?

檢查電腦音量是否開啟,以及 output.mp3 檔案是否有正確產生。


---


## 成功後可以做什麼?


- 在 Discord 頻道問 AI 問題

- 讓 AI 回覆自動朗讀

- 定時發送新聞到 Discord

- 結合飛書發送通知


需要幫助就問我!

如何將 OpenCode 接入飛書機器人

 如何將 OpenCode 接入飛書機器人


前言

本文將詳細介紹如何將 OpenCode 接入飛書,讓你可以透過飛書群組與 AI 助手互動。這個方法使用 Webhook 接收訊息,並透過飛書 API 發送回覆。


所需材料

飛書開發者帳號

安裝了 OpenCode 的電腦或伺服器

Cloudflare Tunnel(用於建立公開 URL)

Python 環境

步驟一:創建飛書應用

前往 飛書開放平台

點擊「創建企業自建應用」

填寫應用名稱(如「OpenCode AI」)

取得 App ID 和 App Secret

步驟二:啟用機器人功能

進入應用頁面

點擊「添加應用能力」

選擇「機器人」

啟用機器人功能

步驟三:設定權限

進入「權限管理」

開啟以下權限:

im:message:send_as_bot - 發送消息

im:message - 讀取消息

im:resource - 上傳資源

步驟四:設定事件訂閱

進入「事件與回調」

選擇「訂閱方式」為「Webhook URL」

填入你的 Webhook URL(稍後設定)

步驟五:開啟 Cloudflare Tunnel

安裝 cloudflared:

# Windows PowerShell

irm https://pkg.cloudflare.com/cloudflared-stable.windows-amd64.msi -o cloudflared.msi

msiexec /i cloudflared.msi

啟動 Tunnel:

cloudflared tunnel --url http://localhost:3000

複製輸出的 URL,格式如:

https://xxxx.trycloudflare.com

步驟六:啟動 Python Webhook 服務

建立 feishu_webhook.py 檔案:


from flask import Flask, request, Response

import json

import requests


app = Flask(__name__)


# 飛書配置

FEISHU_APP_ID = "你的 App ID"

FEISHU_APP_SECRET = "你的 App Secret"

CHAT_ID = "你的群組 ID"


def get_feishu_token():

    r = requests.post(

        'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal',

        json={'app_id': FEISHU_APP_ID, 'app_secret': FEISHU_APP_SECRET}

    )

    return r.json()['tenant_access_token']


def send_to_feishu(message, token):

    r = requests.post(

        'https://open.feishu.cn/open-apis/im/v1/messages',

        headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'},

        params={'receive_id_type': 'chat_id'},

        json={

            'receive_id': CHAT_ID,

            'msg_type': 'text',

            'content': json.dumps({'text': message})

        }

    )

    return r.json()


@app.route('/webhook', methods=['GET', 'POST'])

def webhook():

    if request.method == 'GET':

        challenge = request.args.get('challenge')

        if challenge:

            return Response(json.dumps({"challenge": challenge}), mimetype='application/json')

        return Response(json.dumps({"status": "ok"}), mimetype='application/json')

    

    data = request.json

    print(f"Received: {data}")

    

    if data.get('type') == 'url_verification':

        challenge = data.get('challenge', '')

        return Response(json.dumps({"challenge": challenge}), mimetype='application/json')

    

    # 處理訊息並回覆

    event = data.get('event', {})

    message = event.get('message', {})

    

    if message.get('msg_type') == 'text':

        text = message.get('content', '')

        try:

            content = json.loads(text)

            user_text = content.get('text', '')

        except:

            user_text = text

        

        if user_text:

            token = get_feishu_token()

            response = f"收到: {user_text}"

            send_to_feishu(response, token)

    

    return Response(json.dumps({"code": 0, "msg": "success"}), mimetype='application/json')


if __name__ == '__main__':

    app.run(host='0.0.0.0', port=3000)

執行:


pip install flask requests

python feishu_webhook.py

步驟七:設定飛書 Webhook

回到飛書開放平台

在「事件與回調」中選擇「Webhook URL」模式

URL 填入 Cloudflare Tunnel 的 URL,加上 /webhook

點擊「保存」

步驟八:發布應用

填寫版本號和更新說明

提交審核

作為管理員通過審核

步驟九:將機器人加入群組

在飛書群組中

設定 → 成員 → 新增應用

選擇你的應用

使用方式

確保 Cloudflare Tunnel 和 Python 腳本都在運行

在群組中 @機器人 發送訊息

AI 將自動回覆

注意事項

Cloudflare Tunnel 需要保持運行

飛書應用需要發布才能生效

確保事件訂閱中的「接收消息」已開啟

結語

透過這個方法,你可以將 OpenCode 接入飛書,實現 AI 助手的即時互動。這對於團隊協作、自動化客服等場景都非常實用。


作者:未來之書 日期:2026年3月20日

星期四, 3月 19, 2026

戰爭:環保努力的終結者

 戰爭:環保努力的終結者



你今天有做好環保嗎?


少用一次塑膠袋、搭了大眾交通工具、參加了淨灘活動。


你以為自己在拯救地球。


但你有想過嗎?


這些努力,在戰爭面前,可能全部歸零。


【第一段:戰爭對環境的破壞】

讓我告訴你一些事實。


1991年海灣戰爭,伊拉克點燃了科威特七百多口油井。


燃燒了九個月。


每天有六百萬桶石油流入波斯灣。


天空永遠是黑的。


鳥從天上掉下來,因為牠們無法呼吸。


這不是電影情節,這是真實發生的事。


2003年伊拉克戰爭,美軍使用的大量導彈和炸彈,不只殺死了人類,也污染了整片土地。


貧鈾彈的輻射,至今仍讓伊拉克的癌症發生率是全球平均的三倍。


每一場戰爭,都是一場生態浩劫。


【第二段:碳排放】

你知道嗎?


美軍是全世界最大的單一石油消費者。


比很多小國家的全國用量還多。


美國國防學院曾經估算,美軍一年的碳排放量,超過了丹麥或葡萄牙整個國家的排放。


一艘航空母艦,每天的燃油消耗,相當於一輛普通轎車開二十年的排放量。


每一次軍事行動,每一架戰鬥機起飛,每一艘軍艦出航,都在製造碳排放。


環保人士努力少開一天車,軍隊一天燒掉的油就全部抵消了。


【第三段:環保努力vs戰爭】

你以為自己在做的事有意義。


你買了環保餐具,自備水壺,減少吃肉,種了樹。


但就在你努力的同時,遠在中東,炸彈正在落下。


燃燒的石油正在污染大氣。


化學武器正在滲透土壤。


你種下的每一棵樹,戰爭可以在一秒鐘內連根拔起。


你守護的每一片海洋,軍艦在上面行駛,燃油在上面洩漏。


這不是要讓你放棄環保。


而是要讓你知道,環保只是問題的一半。


另一半,是戰爭。


【第四段:戰爭後的漫長恢復】

戰爭結束後,一切就恢復了嗎?


不會的。


廣島和長崎,七十九年前被投下原子彈。


直到今天,那片土地仍然有輻射殘留。


越南戰爭使用的大量落葉劑,讓整整兩代孩子天生畸形。


伊拉克和阿富汗的土地,被戰爭重創後,可能需要數十年甚至數百年才能恢復。


而那些受到傷害的人,永遠無法恢復。


【第五段:我們能做什么】

我知道這聽起來很絕望。


但我不想讓你感到無力。


因為問題是真實的,但改變也是可能的。


首先,我們要認清事實。


環保不只是少用塑膠袋,不只是垃圾分類。


環保是反戰。


反對那些消耗大量資源、破壞生態系統、排放巨量碳足的戰爭機器。


其次,支持環保組織不只是種樹和淨灘。


也要支持那些倡議裁軍、反對軍事擴張的聲音。


最後,發聲。


讓更多人知道這個真相。


每一次你分享這個訊息,都是在種下一顆和平的種子。


【結語】

我不想嚇你。


我只是想讓你看見。


真正的環保,不只是拯救北極熊。


也是拯救那些被戰火摧毀的家園。


拯救那些流離失所的人民。


拯救我們共同的地球。


因為戰爭傷害的不只是現在。


而是未來。


是我們留給下一代的,一個充滿彈孔和污染的世界。


所以下次有人問你,環保是什麼?


你會說:


環保,就是反戰。

美伊局勢:你的荷包自保手冊

 美伊打起來了!對我們老百姓有什麼影響?



先說重點:油價會漲

不管你在不在炒股票,這件事一定會影響到你。


你去加油的時候會發現,油錶跳得比以前快。本來加滿一桶油500塊,現在可能變600、700。計程車司機、機車族最有感,每個月的油錢支出會增加好幾百塊。


不只是汽油,塑膠製品也會變貴。因為塑膠原料是石油煉出來的,油價漲,塑膠就跟著漲。你買的便當盒、寶特瓶、塑膠袋,工廠成本變高,最後還是消費者買單。


物價又要變貴了

老實說,這幾年物價已經漲很多了。現在又來這一齣。


超市裡的東西可能又會默默調價。不是廠商想賺更多,是原料運費都在漲,不調也不行。


但是,不要因為恐慌就去搶購囤貨。政府有戰備存油,短期內物價不會失控。主要是心理影響比較大。


股市跌了,我的存款會不見嗎?

不會。


銀行的存款是安全的,除非銀行倒閉(這種事在台灣機率極低)。股票跌了是帳面上的數字變少,不是你的錢不見了。只有你現在「賣掉」才會真的虧錢。


如果你有存款在股票基金或ETF,原則上也不用急著贖回。市場遲早會回穩,現在賣反而是真的虧了。


如果你在科技業工作

台灣很多人在電子業上班,工廠訂單可能會受到影響。美國客人可能因為景氣不好,訂單變少。但如果是做AI相關、伺服器、半導體的,目前訂單還算穩健影響相對小。


建議有空可以觀望公司營運狀況,但不用過度緊張。


一般人的生存建議

1. 該怎麼過就怎麼過 戰爭離台灣很遠,日常生活該怎麼過就怎麼過。該上班上班,該吃飯吃飯。


2. 不要急著換美金 很多人看到局勢亂就想把錢換成美金。坦白說,台幣不會因為中東打仗就崩盤。頻繁換匯的手續費可能還划不來。


3. 減少不必要的花費 景氣不好的時候,手頭緊一點是好事。本來想換新手機的,可以再緩緩。本來想出國玩的,可以改成本島旅遊。


4. 有一份工作就好好做 景氣差的時候,工作機會變少。已經有穩定工作的人,現在不是跳槽的好時機。


戰爭會打到什麼時候?

我的看法是:不會太久。


美國要的是伊朗不要發展核彈,不是要推翻伊朗政權。伊朗也不會傻到真的和美國拼命。雙方最後還是會坐下來談。


三個月、半年、最多一年,局勢應該就會比較明朗。油價也會慢慢回穩。


總結

這次美伊開戰,影響最大的是:


開車騎車的:油錢變貴

買東西的:物價微微上漲

炒股票的:帳面虧損(但忍住不要賣)

科技業員工:注意訂單變化

最重要的還是:該過日子就過日子,不要過度恐慌。


亂世之中,保持冷靜就是最好的自保。

星期三, 3月 18, 2026

  吃純素救地球遊戲


遊戲玩法:

🖱️ 移動滑鼠控制下方的嘴巴
🥬 吃純素食物(蔬菜、水果)= 地球更健康 +分數
🍖 避開肉類食物 = 吃到會傷害地球
⏱️ 60秒內讓地球健康度維持在50%以上
🔥 連續吃純素可獲得連擊加分!
遊戲特色:

食物會越來越快掉落,增加挑戰性
地球會隨健康度改變外觀(綠色=健康,灰色=瀕危)
支援電腦滑鼠和手機觸控操作
快來挑戰看看能得多少分,拯救地球吧!🌍🥦

Summary: 純素救地球遊戲

Description: 一款環保主題的網頁小遊戲,玩家需要快速吃掉純素食物來拯救地球,避開肉類食物,在時間限制內維持地球健康。

在 anddriod Termux 安裝 opencode openclaw 與启用中文输入的方法:

在 Termux 中启用中文输入的方法:

方法1:安装中文语言包

pkg update && pkg install locales

方法2:配置 locale

locale-gen zh_CN.UTF-8

方法3:安装中文输入法

  • 在 Play 商店安装「Termux:API」应用
  • 安装支持中文的输入法(如 Gboard、Google 输入法)

方法4:使用外置键盘+中文映射

  • 连接外接键盘
  • 使用 apt install fcitx fcitx-googlepinyin 配置输入法

推荐先尝试 方法2,在手机上安装 Gboard 并启用中文键盘,然后重启 Termux。


根据搜索结果,Termux 中文输入有这些解决方案:

最简单的方法:切换键盘模式

  1. 安装 Gboard(Google 输入法)
  2. 在 Termux 中,按住屏幕底部的快捷键条(ESC、CTRL 那些软按键),向左滑动
  3. 当快捷键条变成空白条时,就能输入中文了

或者用 proot-distro 安装 Ubuntu:

pkg install proot-distro
proot-distro install ubuntu
proot-distro login ubuntu

然后在 Ubuntu 里:

apt install language-pack-zh-hans
locale-gen zh_CN.UTF-8

关于 locales 找不到的问题: 新版本 Termux 已经内置了 locales,不需要单独安装。试试直接运行:

locale-gen zh_CN.UTF-8
export LANG=zh_CN.UTF-8


Warning: CPU doesn't support 32-bit instructions, some software may not work.

这是因为你的设备是 64 位 CPU(ARM64),而某些软件包依赖 32 位库。

解决方法:忽略警告 - 大部分软件在 64 位模式下仍能正常工作如果某些软件确实需要 32 位支持,可以尝试:dpkg --add-architecture armhf

apt update
  1. 或者使用 proot-distro 安装 64 位 Linux 发行版(如 Ubuntu、Debian),它们对 64 位支持更好:
pkg install proot-distro
proot-distro install ubuntu
proot-distro login ubuntu
根据搜索结果,
OpenCode 目前无法直接在 Termux 上运行,因为:进制兼容性问题 - OpenCode 的 Linux/aarch64 二进制请求 /lib/ld-linux-aarch64.so.1,但 Android/Termux 使用不同的链接器
  1. 非 PIE 可执行文件 - 导致在 Termux 上无法运行

参考 Issue: https://github.com/anomalyco/opencode/issues/10504

可能的解决方案:

  1. 使用 proot-distro 运行 Ubuntu/Debian,然后在 Linux 发行版中安装 opencode:
pkg install proot-distro
proot-distro install ubuntu
proot-distro login ubuntu
# 然后在 Ubuntu 中安装 opencode
curl -fsSL https://opencode.ai/install | bash

有一个项目 PocketCode 可以讓你在 Termux 上運行 OpenCode!

安裝方法(一步搞定):

在 Termux 中粘貼以下命令,等待約 5 分鐘:

curl -sL https://raw.githubusercontent.com/rajbreno/PocketCode/main/setup.sh | bash

這個腳本會自動:

  • 安裝 proot-distro
  • 配置 Debian/Ubuntu 環境
  • 下載並設置 OpenCode

或者手動安裝:

pkg update -y && pkg upgrade -y
pkg install proot-distro
proot-distro install debian
proot-distro login debian
# 在 Debian 裡面
curl -fsSL https://opencode.ai/install | bash

參考: https://github.com/rajbreno/PocketCode




  1. 先更新包并安装 proot-distro:
pkg update && pkg upgrade -y
pkg install proot-distro curl
  1. 安装 Debian:
proot-distro install debian
  1. 登录 Debian 并安装 opencode:
proot-distro login debian

然后在 Debian 环境中:

curl -fsSL https://opencode.ai/install | bash
  1. 安装完成后,添加 PATH:
echo 'export PATH="$HOME/.opencode/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
  1. 现在运行:
opencode



termux 裝 openclaw

有专门的 OpenClaw Android 项目,可以在 Termux 上直接运行,不需要 proot!

安装步骤:

  1. 从 F-Droid 安装 Termux(Play Store 版本已停用)

  2. 打开 Termux,运行:

pkg update -y && pkg install -y curl
  1. 一键安装 OpenClaw:
curl -sL myopenclawhub.com/install | bash && source ~/.bashrc
  1. 设置 OpenClaw:
openclaw onboard
  1. 启动 Gateway:
openclaw gateway

这个安装程序会自动处理:

  • glibc 环境
  • Node.js
  • 路径转换
  • 所有依赖

安装大约需要 3-10 分钟。完成后就能通过 Telegram、Discord、WhatsApp 等控制你的 AI 助手了!

参考: https://github.com/AidanPark/openclaw-android

如何 ollama uninstall

Linux 卸载 Ollama:

# 1. 停止服务
sudo systemctl stop ollama

# 2. 禁用开机启动
sudo systemctl disable ollama

# 3. 删除二进制文件
sudo rm /usr/local/bin/ollama

# 4. 删除用户和组(可选)
sudo userdel ollama
sudo groupdel ollama

# 5. 删除残留文件(可选)
sudo rm -rf /usr/share/ollama
sudo rm -rf ~/.ollama
sudo rm -rf /etc/systemd/system/ollama.service
sudo systemctl daemon-reload

Termux 卸载:

# 如果是用 install.sh 安装的
rm -rf ~/.ollama
rm -f $PREFIX/bin/ollama

使用時
proot-distro login debian opencode