Ez4p1xEL/deepseek-instagram

deepseek-instagram

住进 DeepSeek Harness 的 Instagram 助理:带着人格与记忆,把真实的 DSH 使用数据变成 Story / Note 节奏,只有主人自己的私信能指挥它。An Instagram assistant that lives inside DeepSeek Harness: persona-driven Stories & Notes from your real DSH usage, controlled only by your own Instagram DMs.

未分類

deepseek-instagram

住进 Instagram 的 DSH 助理。 它带着人格、记忆和真实的 DSH 使用数据,接管账号的 Story / Note 节奏;而且只有*主人自己的账号*能通过 Instagram 私信指挥它。

English · 简体中文 · 繁体中文

两张卡片都是 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)。插件会创建独立 venv。 网络 · 能访问 instagram.com、PyPI(失败时自动切清华镜像)以及你的 DSH 模型服务。 Instagram · 一个你能正常登录的账号。不需要 Facebook 登录,也不走官方 Graph API。 磁盘 · 独立 Python 环境约占 200 MB,另加渲染出的卡片。 模型 · 一个可用的 DSH 模型,不需要额外 API key。

平台说明:插件主要在 Windows(DSH 桌面版)上开发和测试,代码按跨平台编写。Linux/macOS 上最可能需要小修的是 Python venv 路径和命令执行路径;欢迎提 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 路由;`` 就是你当前 DSH 地址里的端口,重启后会变:

Invoke-RestMethod http://127.0.0.1:<GUI 端口>/api/deepseek-instagram/state

第一次使用(约五分钟)

  1. 安装 Python 依赖。

设置 → Instagram →「运行环境」→ 安装依赖。插件会在 $DSH_HOME/instagram-assistant/.venv 建独立环境,安装 instagrapi 和 pillow;默认 PyPI 卡住时自动改用清华镜像,并写入 install.log。等到状态显示 ready。

  1. 登录。

在浏览器里登录 ,打开开发者工具(F12)→ Application → Cookies → https://www.instagram.com,复制 sessionid 的值,粘贴到「登录」卡片里点 登录。会话只保存在 $DSH_HOME/instagram-assistant/session.json(以及 credential.json)。请把它当成密码对待。

  1. 绑定主人。

填入你的 handle(不带 @),点 绑定主人。插件会把数字用户 id 解析成 ownerPk。只有发送者 id 等于这个值的 1:1 私信才能执行指令;昵称写着「我是主人」没有用。

  1. 设置节奏。

选择 全自动(到点自己发)或 草稿(先生成、等确认),然后设置文案里的 handle 和 @ 对象、每天 Story 条数、活跃窗口、Note 时间、语气和今天的生活素材。

  1. 可选:写人格卡。

在设置页编辑,或直接改 $DSH_HOME/instagram-assistant/persona.md。改动对下一次生成生效,不需要重启。

就这些。全自动模式下,第一个时间点到了,它会自己写、自己渲染、自己发。

工作方式

  1. Host 每 30 秒跑一次调度检查,看下一条 Story 或当天的 Note 是否到点。
  2. 到点后,它收集今天的活动和 token 统计,连同人格卡、心情、最近记忆和生活素材一起交给 DSH 模型,要求按严格 JSON 返回文案。
  3. 文案经过清洗和截断,卡片由 Pillow 在本机渲染,图片通过 Instagram 私有 API 发布,并记下 post id。
  4. 私信轮询按同样的节奏运行。消息按时间从旧到新处理,按发送者 id 过滤,然后走短指令、自然语言意图或普通闲聊。
  5. 状态存在 $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 分钟后作废。

如果嫌每次都要确认,可以在设置页「主人与私信」里打开 完全权限:让电脑干活时不再询问(配置项 dm.fullAccess,默认关)。打开后只有「在本机跑命令」和「让本机 DSH 跑任务」这两类会直接开始执行,不再先给草稿;每次仍会回一条「(完全权限)已开始跑:…」,跑完把结果发你。对外发消息(回未读私信)仍然要确认——发出去就收不回来了。

⚠️ 远程执行命令在这里是功能,不只是风险。 主人的私信可以在运行 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(对方关注你就回)。同一会话的回复冷却由 dm.cooldownSeconds 控制(默认 30 秒),每天受 dm.dailyReplies 限制(默认 30 条)。

自动回复使用「陌生人」场景:友好、简短、不透露隐私、不执行任何指令。

主人分享的 Post / Reels / 视频

主人在 1:1 私信里分享一条 Post / Reels / 视频(或直接发图/视频)时,助理会去读它的公开信息—— 作者、配文、时长、点赞/评论/播放数、话题标签、@提及——再按「主人刚发来的一条」回一句,而不是只看到一条没有文字的消息。

  • 读懂的程度:文案 + 数据。视频的时长会写成 1:29 这样,播放量、话题标签也会读出来;但不下载视频、不抽帧、不听声音,提示词里会明确告诉模型「看不到画面、听不到声音」,避免它假装看过。
  • 开关一:设置页「功能开关」→「读取主人分享的 Post / Reels」(配置项 dm.readShares,默认开)。关闭后分享消息只推进已读水位,不调用模型、不回复。
  • 开关二:同处「读懂分享后,说一句自己的感想」(配置项 dm.shareOpinion,默认开)。关掉仍会读内容、仍回消息,只是不评价——只回「看到了」这类确认。
  • 读取失败:只在日志里记一笔,按分享自带的配文/短码回一句,绝不编造内容。
  • 不适用:别人的私信、群聊里的分享都不会被读取。

设置与配置

所有设置都能在 DSH 设置 → Instagram 里改:每个分区卡片底部都有自己的「保存本区」按钮,只提交这一区的字段,不会把别的区还没保存的改动一起写掉。同一份值也保存在 $DSH_HOME/instagram-assistant/config.json: