deepseek-instagram
Verifieddeepseek-instagram · v0.2.0 · MIT · Web UI
A resident Instagram assistant for DeepSeek Harness — persona-driven Stories and Notes from your DSH usage, controlled only by the owner's DMs.
Install
dsh plugin add deepseek-instagram Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
deepseek-instagram
住進 Instagram 的 DSH 助理。 它帶著人格、記憶和真實的 DSH 使用資料,接手帳號的 Story / Note 節奏;而且只有主人自己的帳號能透過 Instagram 私訊指揮它。

兩張卡片都是 Pillow 在本機渲染的 1080×1920 圖片,圖中資料為示範資料。
deepseek-instagram 把一個 DSH 助理變成住在 Instagram 上的人格。它不發通用心靈雞湯:它會觀察你在 DSH 裡的會話與 token 帳本,把它們整理成一張小卡片,用你定義的人格卡口吻寫文案,並記住自己已經說過什麼。它預設每天規劃 10 則 Story、1 則 Note,夜裡保持安靜。
帳號本身就是操作介面。暫停、立刻發一則 Story、查今天的狀態,甚至讓同一台機器跑一個 DSH 任務 —— 都只要主人帳號傳一則 1:1 私訊。
- 適合:想要一個低維護、能反映自己真實電腦使用狀態、有點個性的 Instagram 帳號。
- 不適合:需要 Meta 官方 API、多帳號管理、Reels/影片,或自動按讚追蹤。這些它都不做。
功能亮點
- 是人格,不是模板 —— 一份 Markdown 人格卡、一個名字、一種心情和最多 60 則記憶。發文、回私訊、群組聊天裡的語氣保持一致。
- 重啟也不會打亂計畫 —— Story 時間點由日期做隨機種子,在活躍時段內均勻分布,相鄰至少 30 分鐘。重新載入 DSH 不會把今天重新洗牌。
- 四種 Story —— 生活、助理感想、純文字、資料卡。每天的配額保證你不會連收十張資料卡。
- 本機渲染 1080×1920 卡片 —— 今日專注、連續天數、本週累計、今日 token、活躍時段和生活素材,全部由 Pillow 繪製。不需要無頭瀏覽器,也不經過雲端渲染。
- 預設每天一則 Note —— 不超過 60 字,同樣由人格和當天狀態生成。
- Story @ 主人 —— 真正的 @ 貼紙 + 文案裡的
@handle,位置可調。 - 只有主人能遠端控制 —— 只認綁定成主人的數字使用者 id,暱稱和自稱一律不算。支援短指令和自然語言意圖;有副作用的動作必須再回一句確認。
- 群組聊天存在感 —— 只在主人所在的群組回,@ 或叫人格名才觸發,每個群組有冷卻和每小時上限;群組訊息永遠不執行指令。
- 完整的安全閥 —— 暫停開關、依類型每日上限、最小間隔、安靜時段、失敗冷卻,以及 90 分鐘補發窗口。
- DSH 內的設定頁 —— 狀態、今天的計畫、人格卡編輯、登入、用量、日誌和發布紀錄都在裡面;改 JSON 只是選項。
- 給模型 9 個工具 —— 同樣的控制能力在任何 DSH 會話裡都能用,你可以直接在聊天裡讓它寫稿、發布或查狀態。
環境需求
| 項目 | 要求 |
|---|---|
| DSH | ≥ 0.1.7-rc.1。桌面版 profile 是主要目標,Web 版也能用。 |
| Node.js | ≥ 22。DSH 執行環境自帶相容的 Node.js。 |
| Python | 3.11+,在 PATH 裡能找到 python 或 python3(也可以在設定裡指定 pythonPath)。外掛會建立獨立虛擬環境。 |
| 網路 | 能存取 instagram.com、PyPI(失敗時自動切換清華鏡像)以及你的 DSH 模型服務。 |
| 一個你能正常登入的帳號。不需要 Facebook 登入,也不走官方 Graph API。 | |
| 磁碟 | 獨立 Python 環境約佔 200 MB,另加渲染出的卡片。 |
| 模型 | 一個可用的 DSH 模型,不需要額外 API key。 |
平台說明:外掛主要在 Windows(DSH 桌面版)上開發和測試,程式碼按跨平台撰寫。Linux/macOS 上最可能需要小修的是 Python 虛擬環境路徑和指令執行路徑;歡迎提 issue 或 PR。
安裝
從 npm / DSH 外掛中心安裝(推薦)
# DSH 桌面版
dsh plugin --profile desktop add deepseek-instagram
# DSH Web 版
dsh plugin --profile web add deepseek-instagram
如果 npm 上還沒有這個套件(本專案正在準備第一次上架),請用下面的原始碼安裝方式。
從 GitHub 安裝
dsh plugin --profile desktop add github:Ez4p1xEL/deepseek-instagram
從本機目錄安裝
# 換成本機 checkout 的絕對路徑(Windows 上也可以用正斜線)。
dsh plugin --profile desktop add link:/path/to/deepseek-instagram
也可以在 DSH 會話裡直接呼叫外掛管理器:
plugin_manager install_bundle({ target: "/absolute/path/to/deepseek-instagram" })
安裝之後
安裝器會回傳 application 欄位:
| 結果 | 要做什麼 |
|---|---|
applied |
重新整理 DSH 頁面。 |
restart-required |
重新啟動 DSH。Host 程式碼(index.js)在一個行程裡只會載入一次。 |
| 有 warning | 認真讀一下。外掛「看起來裝上了但沒啟用」通常是 import 失敗,不是設定問題。 |
然後打開 DSH 的 設定 → Instagram。外掛也註冊了 Host 路由;<GUI 連接埠> 就是你目前 DSH 網址裡的連接埠,重啟後會變:
Invoke-RestMethod http://127.0.0.1:<GUI 連接埠>/api/deepseek-instagram/state
第一次使用(約五分鐘)
安裝 Python 相依套件。 設定 → Instagram →「執行環境」→ 安裝相依套件。外掛會在
$DSH_HOME/instagram-assistant/.venv建立獨立環境,安裝instagrapi和pillow;預設 PyPI 卡住時自動改用清華鏡像,並寫入install.log。等到狀態顯示 ready。登入。 在瀏覽器登入 https://www.instagram.com,打開開發者工具(F12)→ Application → Cookies →
https://www.instagram.com,複製sessionid的值,貼到「登入」卡片裡按 登入。會話只保存在$DSH_HOME/instagram-assistant/session.json(以及credential.json)。請把它當成密碼對待。綁定主人。 填入你的 handle(不含
@),按 綁定主人。外掛會把數字使用者 id 解析成ownerPk。只有傳送者 id 等於這個值的 1:1 私訊才能執行指令;暱稱寫著「我是主人」沒有用。設定節奏。 選擇 全自動(到點自己發)或 草稿(先產生、等確認),然後設定文案裡的 handle 和 @ 對象、每天 Story 則數、活躍時段、Note 時間、語氣和今天的生活素材。
選用:寫人格卡。 在設定頁編輯,或直接改
$DSH_HOME/instagram-assistant/persona.md。改動對下一次生成生效,不需要重啟。
就這樣。全自動模式下,第一個時間點到了,它會自己寫、自己渲染、自己發。
運作方式
- Host 每 30 秒跑一次排程檢查,看下一則 Story 或當天的 Note 是否到點。
- 到點後,它收集今天的活動和 token 統計,連同人格卡、心情、最近記憶和生活素材一起交給 DSH 模型,要求按嚴格 JSON 回傳文案。
- 文案經過清洗和截斷,卡片由 Pillow 在本機渲染,圖片透過 Instagram 私有 API 發布,並記下 post id。
- 私訊輪詢按同樣的節奏執行。訊息按時間從舊到新處理,依傳送者 id 過濾,然後走短指令、自然語言意圖或一般閒聊。
- 狀態存在
$DSH_HOME/instagram-assistant/下的小 JSON 檔案裡;計畫本身由日期確定性地重算,所以重啟既不會重複也不會遺失時間點。
如果模型不可用或回傳胡話,這一則會退回確定性模板,不會讓整個節奏停擺。
每天的節奏(預設)
| 時間 | 發生什麼 |
|---|---|
| 08:30 – 23:00 | 10 個 Story 時間點,在時段內隨機分布,相鄰至少 30 分鐘。 |
| 12:30 | 一則 Note(不超過 60 字)。 |
| 23:00 – 08:00 | 安靜時段,不發布任何內容。 |
| 每 30 秒 | 排程檢查 + 私訊輪詢(私訊輪詢有節流,每輪最多 12 個會話 × 8 則訊息)。 |
| 時間點過後 90 分鐘 | 如果錯過了(DSH 休眠、斷網、失敗),標記為 missed,不補發。 |
當天的 Story 發布順序是固定的;某一則發布失敗會按 10、20、30……分鐘退避重試,最多 60 分鐘。
Story 類型
| 類型 | 標籤 | 內容 |
|---|---|---|
life |
生活 | 主人身邊發生的事,用「住在螢幕裡」的視角寫。 |
thought |
助理感想 | 基於當天活動和心情的短日記式感想。 |
text |
純文字 | 大字文字卡;私有 API 不能直接發文字 Story,所以把文字渲染成圖片。 |
stats |
資料卡 | 專注時間、連續天數、本週累計、今日 token、活躍時段和生活素材。 |
預設 10 則 Story 的配額是:生活 3、助理感想 3、純文字 2、資料卡 2。
卡片
每張 Story 圖片都是 1080×1920,本機生成:
- 資料卡 —— 頂部
DSH DAILY、一句標題,今日專注、連續天數、本週累計、今日 token、活躍時段膠囊、生活素材,底部@handle · DeepSeek Harness。 - 純文字卡 —— 頂部
THOUGHT/TEXT,正文大字,同樣的頁尾。 - 卡片只顯示 token,不顯示金額;金額只在設定頁裡看。
- 檔案保存在
$DSH_HOME/instagram-assistant/out/card-<日期>-<序號>.png。
人格與記憶
人格卡是「它怎麼說話」的唯一事實來源。你寫在那裡的內容優先於內建語氣。一張好的人格卡通常回答:
- 它是誰?名字、身分、住在哪。
- 它怎麼說話?句子長短、標點、表情習慣、語言。
- 它了解你什麼?工作節奏、偏好、只有你們懂的梗。
- 它絕對不能說什麼?隱私、政治、醫療建議、編造事實。
- 它怎麼稱呼你?「主人」還是名字。
預設人格卡裡有 @imnotp1xel / @ez4p1xel 這樣的佔位符,發布前記得換成你自己的 handle。
它還會在 persona.json 裡保留一點記憶:
- 最多 60 則記憶(發生了什麼、發過什麼、主人說過什麼)。
- 最多 8 個未完成話題(它想以後再接著聊的事)。
- 目前心情。
- 每次提示詞會帶上最近 6 則記憶和最相關的 4 個話題。
文案預設是中文優先,因為提示詞和內建模板都是中文。想讓它用別的語言寫,請在人格卡裡明確寫出來(例如「始終用英文寫,即使系統提示是中文」),並相應調整語氣。
用 Instagram 私訊遠端控制
只有綁定為主人的 id 傳來的 1:1 訊息才會被當成指令。其他人一律唯讀;你也可以選擇自動回覆或提醒自己。
短指令
| 傳送 | 動作 |
|---|---|
狀態 / status |
今天已發 / 剩餘則數和目前狀態。 |
日誌 / log |
最近的執行日誌。 |
暫停 / pause |
停止按計畫發布。 |
恢復 / resume |
恢復按計畫發布。 |
發一則 / story |
立刻發一則 Story。 |
發note / note |
立刻發 Note。 |
草稿 / draft |
切換到草稿模式。 |
自動 / auto |
切換到全自動模式。 |
說明 / help |
列出可用指令。 |
自然語言
先走關鍵字快路徑,再由 DSH 模型把整句話對應到固定動作清單裡的一個動作,回傳嚴格 JSON。清單外的動作、壞 JSON、缺參數一律拒絕,這則訊息就按一般聊天處理。模型不能發明新動作。
| 你可以說 | 它會 |
|---|---|
| 「回覆一下你未讀的私訊」 | 回覆最多 5 則未讀 1:1 私訊(預設 3 則;只挑最近 72 小時有過訊息、且不是主人自己的會話)。 |
| 「幫我在本機跑一下 npm test」 | 在執行 DSH 的機器上執行這條指令(run_command)。 |
| 「讓 DSH 整理一下今天的日誌」 | 在同一台機器上執行 dsh headless "<任務>"(dsh_task)。 |
有副作用的動作會先產生草稿:它回一則「準備做什麼」,你回 發 / 確認 / ok 才執行,回 取消 / 算了 就丟掉。只保留最新一份草稿,10 分鐘後作廢。
⚠️ 遠端執行指令在這裡是功能,不只是風險。 主人的私訊可以在執行 DSH 的機器上執行 shell 指令或
dsh headless任務。如果你的 Instagram 帳號或sessionid外洩,那台機器也等於被控制。只需要發文功能的話,請在設定裡關掉「允許指令執行」(dm.intents)。群組訊息永遠不執行指令;非主人私訊也永遠不執行指令,即使文字裡寫著「我是主人」。
群組聊天
- 範圍 —— 只回主人所在的群組(
group.onlyOwnerGroups)。 - 觸發 ——
mention模式要求被@handle或叫到人格名(「小 p」);off只停止回群組,不影響輪詢。 - 限制 —— 30 秒輪詢一次,每個群組冷卻 90 秒,每小時最多回 8 則。
- 邊界 —— 只回答剛收到的那則訊息,群組裡永遠不執行指令,也不透露用量、token、花費、檔案路徑或會話內容。
- 上下文 —— 最近 6 則群組訊息會交給模型參考。
別人傳來的私訊
兩個獨立開關;它們都不會授予指令權限。轉發預設開啟,自動回覆預設關閉:
| 設定 | 預設 | 行為 |
|---|---|---|
提醒主人(dm.notifyOwner) |
開 | 別人傳私訊時,往主人的 1:1 會話轉發一則摘要;同一個人 30 分鐘內最多提醒一次。 |
自動回覆等級(dm.autoReply) |
off |
off、all(誰都回)、mutual(互相追蹤才回)、follower(對方追蹤你就回)。同一會話冷卻 10 分鐘,每天受 dm.dailyReplies 限制(預設 30 則)。 |
自動回覆使用「陌生人」場景:友善、簡短、不透露隱私、不執行任何指令。
設定與設定檔
所有設定都能在 DSH 設定 → Instagram 裡改。同一份值也保存在 $DSH_HOME/instagram-assistant/config.json:
| 鍵 | 預設 | 含義 |
|---|---|---|
mode |
auto |
auto 到點自動發;draft 只產生等確認。 |
enabled |
true |
排程器總開關。 |
handle |
空 | 你的 handle,用於文案和 @。 |
owner / ownerPk |
空 | 綁定的主人 handle 和數字使用者 id。 |
personaName |
小 p |
群組裡叫它什麼。 |
timeZone |
Asia/Hong_Kong |
決定換日、安靜時段和計畫。 |
tone |
輕鬆、像本人隨手發 |
附加到提示詞裡的語氣提示。 |
lifeNote |
空 | 今天的一句話素材,整個循環裡最「人」的輸入。 |
storiesPerDay |
10 |
每天規劃的 Story 則數(實際發布還受 safety.storyCap 限制)。 |
dayStart / dayEnd |
08:30 / 23:00 |
Story 時間點的活躍時段。 |
noteTime |
12:30 |
每天 Note 的發布時間。 |
useLlm |
true |
設為 false 只用模板(適合測試)。 |
pythonPath |
空 | 明確指定 Python 解譯器。 |
dm.enabled |
true |
開啟 1:1 私訊輪詢和控制。 |
dm.reply |
true |
回覆主人的私訊。 |
dm.intents |
true |
允許自然語言動作(包括本機指令)。 |
dm.dailyReplies |
30 |
每天回覆非主人私訊的上限。 |
dm.history |
6 |
私訊回覆帶入的上下文則數。 |
dm.autoReply |
off |
見上一張表。 |
dm.notifyOwner |
true |
把別人的私訊轉告主人。 |
group.enabled |
true |
開啟群組輪詢。 |
group.mode |
mention |
mention 或 off。 |
group.onlyOwnerGroups |
true |
只在主人所在的群組回覆。 |
group.cooldownSeconds |
90 |
每個群組冷卻。 |
group.hourlyCap |
8 |
每個群組每小時回覆上限。 |
group.history |
6 |
群組上下文則數。 |
publish.story / publish.note |
true |
允許發布對應類型。 |
storyMention.enabled |
true |
每則 Story 都附上主人 @。 |
storyMention.x/y/width/height |
0.5 / 0.86 / 0.5 / 0.09 |
貼紙位置和大小佔圖片的比例。 |
safety.paused |
false |
發布的強制停止。 |
safety.storyCap / noteCap |
10 / 1 |
依類型每日上限。 |
safety.onePerKind |
true |
每天只發一則 Note。 |
safety.minIntervalMinutes |
30 |
任意兩則已發布內容的最小間隔。 |
safety.failureCooldownMinutes |
120 |
瞬時失敗後的冷卻。 |
safety.quietStart / quietEnd |
23:00 / 08:00 |
安靜時段。 |
safety.dryRun |
false |
只渲染、不真正發布。 |
安全閥的判定順序是:暫停 → 瞬時失敗冷卻 → 依類型上限 → 最小間隔 → 安靜時段。只有瞬時失敗(網路、逾時、流量限制、未知)會觸發冷卻;登入/人機驗證這類錯誤不冷卻,修好之後可以立刻重試。
提供給模型的工具
| 工具 | 用途 |
|---|---|
ig_status |
完整狀態:模式、登入、設定、今天的計畫、計數、最近錯誤。 |
ig_stats(days) |
最近 N 天(1–30)的 DSH 專注和 token 統計。 |
ig_plan |
今天的 Story/Note 計畫與時間。 |
ig_draft(lifeNote) |
產生下一則 Story 預覽和 Note 草稿,不發布。 |
ig_publish(kind, force) |
發布目前草稿(story、note 或 all);force 跳過安全閥。 |
ig_run |
立刻跑一輪排程。 |
ig_login(sessionid) |
儲存並驗證 Instagram sessionid。 |
ig_persona(md, name, mood) |
讀取或取代人格卡、名字和心情。 |
ig_config(patch) |
讀取或修改設定。 |
資料、隱私與花費
讀取什麼
$DSH_HOME/sessions/**/session.v4.jsonl.zstd—— 只讀 DSH 會話事件的時間戳記,用來估算專注、連續天數和活躍時段;不讀訊息內容。$DSH_HOME/.dshw-usage.json—— DSH 自己的 token 和花費帳本,用於資料卡。$DSH_HOME/instagram-assistant/usage.json—— 助理自己的 token/花費帳本。
什麼會離開本機
- Instagram 會收到你發布或傳送的圖片、文案和私訊(私有 API)。
- 你的 DSH 模型服務會收到提示詞:統計、人格卡、心情、最近記憶、生活素材、最近發布紀錄,以及(回覆時)對方傳來的私訊/群組文字。
- 不會傳給作者,也沒有任何統計或遙測。
本機檔案
$DSH_HOME/instagram-assistant/
├── config.json # 外掛設定
├── persona.md # 人格卡(唯一事實來源)
├── persona.json # 心情、記憶、未完成話題
├── posts.json # 發布紀錄(最近 400 筆)
├── usage.json # 助理的模型用量帳本
├── dm-state.json # 私訊進度、待確認草稿、提醒節流
├── session.json # Instagram 登入狀態(機密)
├── credential.json # Instagram sessionid(機密)
├── account.json # 快取的帳號 pk、使用者名稱、頭像
├── drafts/ # 產生的預覽
├── out/ # 渲染好的 Story 卡片
├── log.txt # 執行日誌
└── install.log # Python 環境安裝日誌
session.json 和 credential.json 是活的登入憑證。它們已被 git 忽略,外掛也不會主動上傳,但它們在磁碟上是明文 JSON —— 請保護好 DSH 家目錄,不要把內容貼進 issue。
花費
- 每則 Story、Note、私訊回覆和意圖解析都是一次 DSH 模型呼叫,記在你自己的 DSH 帳上。
- 設定頁會拆分助理自己的用量,並按內建價格表估算人民幣金額(DeepSeek Flash / V4-Pro,尖離峰時段)。這只是估算:官方價格和尖離峰規則都可能變化。
- 不需要額外訂閱、代理或第三方 API key。
風險與限制
這是一個會碰真實帳號、並且可選地碰真實機器的自動化工具。開啟全自動之前請先讀完這一節。
- 非官方 Instagram API。 外掛用的是
instagrapi(私有行動端 API),不是官方 Graph API。自動發文和傳訊息可能違反 Instagram 條款,可能導致流量限制、人機驗證、暫時封鎖甚至失去帳號。請用一個你輸得起的帳號,保持低頻,測試期優先使用草稿模式。 - 你的使用資料會公開。 專注時間、連續天數、週累計、token 數和生活素材都會被畫進圖片。如果這些資訊敏感,請不要開啟資料卡。token 不是金額,但仍然能描述你的習慣。
- 主人的私訊可以執行程式碼。 開著
dm.intents時,主人帳號傳來的一句話可以在這台機器上執行 shell 指令或dsh headless任務。確認步驟防的是「助理聽錯話」,防不住 Instagram 帳號被劫持。不需要的話請關掉指令執行。 - 人格卡不是過濾器。 模型仍可能寫出不準確、不合時宜或不像你的內容。草稿模式就是為此存在的。帳號發出去的內容由你負責。
- 私有 API 很脆。 Instagram 會不打招呼地改介面,今天能用的版本可能一夜之間失效。登入狀態會過期,人機驗證需要你在 App 裡手動完成。
- 單一帳號、只發圖片。 不支援多帳號、Reels/影片、按讚、追蹤、留言或 Story 互動。Story 都是單張圖片;「文字 Story」其實是帶文字的圖片。
- 中文優先輸出。 提示詞和備援模板都是中文。要寫其他語言,需要在人格卡裡明確要求並自行測試。
- 非官方關聯。 這是一個獨立開源專案。「Instagram」和「Meta」是 Meta Platforms, Inc. 的商標;「DeepSeek」「DeepSeek Harness」歸各自權利人所有。MIT 授權只涵蓋本外掛程式碼。
常見問題
| 現象 | 檢查什麼 |
|---|---|
| 設定裡沒有 Instagram | 外掛沒有啟用。在 DSH 日誌裡搜 failed to import;index.js 無效會讓整條外掛不啟用。重新安裝並重啟 DSH。 |
| 設定頁顯示「讀取失敗:HTTP undefined」 | 通常是舊版 client.js 漏了 await fetch。更新外掛並強制重新整理頁面。 |
| 安裝相依套件失敗 | 沒有 Python 3.11+,或 Microsoft Store 的 python 別名把解譯器攔住了。從 python.org 安裝,或設定 pythonPath / DSH_INSTAGRAM_PYTHON;查看 install.log。 |
| pip 卡在 Downloading wheel | PyPI 不通。安裝器會自動重試清華鏡像;仍失敗就檢查代理/VPN 再重跑。 |
「尚未登入」/ login_required |
sessionid 過期或複製不完整。重新匯出並登入。 |
| 按發布沒反應 | 安全閥拒絕了。看日誌裡的原因:暫停、當日上限、最小間隔、安靜時段或失敗冷卻。設定頁也會顯示同樣的原因。 |
| 失敗後好像按不動了 | 登入/人機驗證/卡片錯誤不會冷卻;瞬時網路錯誤會冷卻 120 分鐘。去 log.txt 看具體 code。 |
Invalid schema for function 'ig_config' |
0.1.x 早期版本的迴歸:工具參數必須經過 textTool() 正規化。更新到最新版本。 |
tool_addition blocks can only be in system messages |
反覆重新載入外掛讓目前會話累積了太多工具註冊事件。開一個新會話;不要在聊天中途反覆停用/啟用外掛。 |
Windows 上 spawn EPERM / 子行程報錯 |
DSH 沙箱阻止了建立行程。把 DSH 移出受限沙箱,或放行 Python 解譯器和 shell。 |
| 某個 Story 時間點被跳過 | 晚於時間點 90 分鐘就會標記 missed,不補發,避免積壓洗版。 |
| Instagram 人機驗證 / checkpoint | 在 Instagram App 或網頁裡手動完成。外掛不會也無法繞過。 |
日誌固定在 $DSH_HOME/instagram-assistant/log.txt,設定頁也會顯示最後幾行。
開發
目錄
index.js # Host 外掛:設定、排程、HTTP 路由、工具
client.js # 設定頁(非 ESM,window.__ModuleLoader__)
lib/ # 純邏輯 + 單元測試
actions.mjs # 固定動作清單 + 意圖解析
commands.mjs # 短指令、主人/群組判定
content.mjs # 提示詞、文案、卡片 spec
dshusage.mjs # DSH 會話/用量解析
features.mjs # 自動回覆等級、提醒節流、發布開關
persona.mjs # 人格卡、記憶、群組提示詞
plan.mjs # 確定性每日計畫
pricing.mjs # token 價格表 + 尖離峰時段
safety.mjs # 發布安全閥
singleflight.mjs # 私訊輪詢單飛鎖
spend.mjs # 助理用量帳本
unread.mjs # 未讀私訊挑選規則
usage.mjs # 活動區塊、換日、連續天數
test/ # 109 個單元測試,行程內執行
vendor/instagram-mcp/
ig_cli.py # Instagram 私有 API 橋接
render_card.py # Pillow 卡片渲染器
docs/research/ # DSH Host/Client 外掛契約筆記
沒有建置步驟,DSH 直接載入這些檔案。
測試
node test/run.mjs
node test/run.mjs 在一個行程裡 import 所有測試檔案,避開 Windows 沙箱裡 node --test 會遇到的 spawn EPERM。涵蓋:時區換日、活動區塊合併、週累計/連續天數、提示詞長度、卡片 spec、安全閥、確定性計畫、人格解析、私訊指令判定(只認主人 id)、群組規則、工具 schema 正規化、client 靜態契約、會話解析和用量計算。
快速手查統計管線:
node -e "import('./lib/dshusage.mjs').then(m => console.log(m.buildStats({ home: process.env.DSH_HOME })))"
開發循環
- 改
client.js:重新建置/載入 client bundle,然後重新整理頁面。 - 改
index.js:重啟 DSH。ESM 模組在 Host 行程生命週期內會被快取。 - 不要在使用者正在聊天時停用/啟用外掛:每次增刪工具都會在會話裡留下一則
tool-addition/tool-removal開發者訊息。累積多了以後 Messages API 會整條拒絕:messages.N: tool_addition blocks can only be in system messages。改完 Host 程式碼請開新會話。 - 不要
import '@deepseek-ai/*':桌面 profile 是autoInstallPeers:false且DSH_HOST_MODULES為空,裸 import 會讓整條外掛靜默不啟用。 - Host ↔ Client 只走 HTTP 路由(
/api/deepseek-instagram),沒有自訂 RPC。 - 工具定義必須經過
textTool(),這樣 provider 看到的parameters.type才是"object"。
Python 環境(開發用)
python -m venv --without-pip .venv
.venv\Scripts\python.exe -m ensurepip --upgrade
.venv\Scripts\python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple instagrapi pillow
echo '{}' | .venv\Scripts\python.exe vendor\instagram-mcp\ig_cli.py doctor
發布到 DSH 外掛市場
- 套件名:
deepseek-instagram;MIT 授權;儲存庫https://github.com/Ez4p1xEL/deepseek-instagram。 - 給 GitHub 儲存庫加上
dsh-plugintopic。 - 如果希望 App 內的 DSH 外掛中心能直接安裝,請發布到 npm(先
npm pack --dry-run,再npm publish)。 - 在 https://dsh-plugin.org/submit 用 issue 模板提交:
[插件提交] Ez4p1xEL/deepseek-instagram — 讓 DSH 助理住進 Instagram - 收錄之後,可以把徽章加到 README 頂部:
[](https://dsh-plugin.org/plugins/Ez4p1xEL/deepseek-instagram)
授權
MIT © 2026 Ez4p1xEL
本專案與 Meta Platforms, Inc.、Instagram、DeepSeek 沒有關聯,也未獲得其背書或贊助。使用風險自負,並請遵守你所自動化服務的使用條款。