npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@follenfang/ddauto

v0.1.5

Published

Install and run the DDAuto Codex Skill and Python CLI.

Readme

DDAuto

DDAuto 是基于 Python、CloakBrowser 和 pydoll 的网易 DD 协议采集与确认式频道、私信操作工具。它复用同一个持久 Profile 完成有头登录、无头采集和协议写入,业务数据保存在调用项目中。

安装

npm install --global @follenfang/ddauto
ddauto setup
ddauto doctor

setup${DDAUTO_HOME:-~/.ddauto} 下安装固定版本的 Python 3.12、带 hash 的 Python 依赖和 CloakChromium。下载默认使用 8 个 Node HTTP Range worker,将互斥区间写入一个预分配 .part 文件,并通过原子分片元数据支持连接熔断、精确断点续传和进程中断恢复。服务器不支持严格 Range 时仅对同一官方 URL 降级为单连接;只有无空洞/重叠、长度、SHA-256 及官方签名全部验证后才原子更新 runtimes/current.json。不要求系统预装 Python 或 Chrome。

ddauto update --check
ddauto update
ddauto uninstall
ddauto uninstall --confirm

doctorupdate --check 只读。uninstall 默认输出清理计划,--confirm 仅删除受管 runtime、浏览器、下载缓存及 Skill;项目 profile/message/ 和未识别目录保留。

源码开发:

python -m venv .venv
& .\.venv\Scripts\python.exe -m pip install -e . pytest
& .\.venv\Scripts\python.exe -m pytest -q

Profile

ddauto profile create --profile work
ddauto profile login --profile work
ddauto session status --profile work

登录命令打开有头 CloakBrowser。识别登录并验证 DD 协议初始化后,同一 Profile 自动恢复无头模式。现有旧版 profile/<name>/browser/ 会继续复用。

采集

ddauto teams list --profile work
ddauto channels tree --profile work
ddauto members collect --profile work
ddauto messages collect --profile work --channel <channel-id> --from 2026-08-01T00:00:00+08:00 --to 2026-08-02T00:00:00+08:00
ddauto private conversations --profile work
ddauto private messages collect --profile work --conversation <uid> --from 2026-08-01T00:00:00+08:00 --to 2026-08-02T00:00:00+08:00
ddauto audio snapshot --profile work
ddauto sync --profile work --from 2026-08-01T00:00:00+08:00 --to 2026-08-02T00:00:00+08:00

历史消息按降序游标持续拉取,直到越过起始时间或服务端耗尽,不设置固定页数。图片默认下载原图并用 SHA-256 去重;可传 --media links--media none

确认式发送

ddauto protocol send --profile work --team <team-id> --channel <channel-id> --text "message"
ddauto protocol send --confirm --plan-id <plan-id>

第一次命令只创建 15 分钟有效的 plan。确认命令重新解析目标并验证 payload hash,只发送一次;不确定结果使用 ddauto protocol reconcile --plan-id <plan-id>

固定有头视觉回归只写入 team 355886 / channel 10444614

ddauto protocol visual-test --profile work

频道协议写入使用通用运行时目标,支持频道树中的大频道、中频道和子频道。先生成 plan,再执行一次:

ddauto channel send --profile work --team TEAM_ID --channel CHANNEL_ID --text "hello"
ddauto channel execute --profile work --plan-id PLAN_ID

同一组命令还支持 --mention-uid--at-all--at-online--quote-msg-id--image-url--image-file。本地图片在 plan 阶段绑定 SHA-256,确认后复用同一 Profile 页面登录态上传;支持 PNG/JPEG/GIF/WebP,最大 50 MiB。删除、置顶及取消置顶分别使用 channel deletechannel pinchannel unpin。固定频道 355886/10444614 只用于全量集成回归,不是产品默认目标。

完整命令矩阵、字段契约和错误码见 ddauto/references/channel-protocol.md

私信写入同样先生成 plan,再确认执行一次。目标始终由 friendUid 传入:

ddauto private send --profile work --friend-uid UID --text "hello"
ddauto private send --profile work --friend-uid UID --image-file IMAGE_PATH --text "caption"
ddauto private send --profile work --friend-uid UID --file FILE_PATH
ddauto private execute --profile work --plan-id PLAN_ID

还支持 --quote-msg-id、已上传的 --image-url--file-url/--file-name/--file-size,以及 private delete --msg-id。发送使用 44257/cmd=9,删除使用 44257/cmd=17;本地媒体确认后通过同一 Profile 上传。结果未知只运行 private reconcile --plan-id,不自动重发。完整协议字段和错误见 ddauto/references/private-protocol.md

数据目录

profile/<profile>/                 # 浏览器身份、runtime token 和锁
message/profiles/<profile>/        # 原始响应、实体、消息、媒体、checkpoint、回执和诊断
${DDAUTO_HOME:-~/.ddauto}/         # npm 管理的 Python、CloakChromium、下载和状态,不含业务数据

stdout 为 NDJSON。Cookie、token、动态签名和完整签名 URL 不进入业务记录、诊断、源码或 npm 包。