Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Annotation, comment, capture, share anywhere
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
把网页里值得留下的内容,剪藏、截图存进同一个本地库,再在库里读、划高亮。 AnnHub 是一个本地优先的浏览器扩展:选中网页内容或指一下整块内容,一步剪藏;或框选画面截图。它们连同来源保存为统一的条目,之后在资料库里阅读、划出高亮,用可扩展的属性分类,需要时检索、回到原页面,或导出为 Markdown。 以下按 docs/v2 的契约描述当前实现;交付到哪一步见 路线图。README 전문 보기 ↗
把网页里值得留下的内容,剪藏、截图存进同一个本地库,再在库里读、划高亮。
AnnHub 是一个本地优先的浏览器扩展:选中网页内容或指一下整块内容,一步剪藏;或框选画面截图。它们连同来源保存为统一的条目,之后在资料库里阅读、划出高亮,用可扩展的属性分类,需要时检索、回到原页面,或导出为 Markdown。
从 Chrome 应用商店 安装。
以下是已发布的能力,契约见 docs/product;正在做什么见路线图。
Ctrl/Cmd+Shift+S 截图、Ctrl/Cmd+Shift+E 区块模式;页面上不留任何标记AnnHub 只解决一条主链路:
遇到值得留下的内容
-> 一步剪藏或截图,连同来源
-> 在库里读一遍,划出高亮,用标签和属性分类
-> 之后检索、回到来源或导出
浏览器扩展承担采集、整理和查询。团队协作、手机端与独立的桌面应用、AI 摘要与问答、通用笔记与白板、稍后读收件箱与整页阅读器、网页上的高亮标记、整页剪藏与模板系统都不在产品范围内,完整清单见 docs/product/product.md §2.3。
┌─────────────────────────────────────────────────────┐
│ Browser Extension │
│ Selection Menu / Block Clip / Screenshot Session │
└───────────────────────┬─────────────────────────────┘
│ chrome.runtime.sendMessage
┌───────────────────────▼─────────────────────────────┐
│ Background Service Worker │
│ Entries / Screenshot / System (settings, metrics) │
└───────────────────────┬─────────────────────────────┘
│ domain API
┌───────────────────────▼─────────────────────────────┐
│ learning-core │
│ normalize / validate / query / store │
│ IndexedDB (annhub) / Markdown ZIP export │
└─────────────────────────────────────────────────────┘
以下只是当前代码位置,最终将演进为 monorepo;目标包结构尚未在产品文档中确定。
annhub/
├── entrypoints/
│ ├── content/ # 页面内采集:选区菜单、区块剪藏、截图会话
│ │ ├── markdown.ts # DOM→Markdown 转换(唯一实现)
│ │ ├── blocks.ts # 七种区块识别
│ │ └── screenshot/ # 区域/元素截图与匿名处理
│ ├── library/ # 资料库页面(浏览、阅读与高亮、属性、设置;导出的 ZIP 在这里构造)
│ ├── options/ # 设置页
│ └── popup/ # 工具栏弹窗兜底入口
├── background-service/
│ └── services/
│ ├── entries/ # 条目/属性/高亮/查询消息门面
│ ├── screenshot/ # 截取、跨域代取、下载
│ └── system/ # 偏好与本地指标
├── learning-core/ # 共享领域核心,纯 TypeScript
├── types/ # 消息协议
├── e2e/ # Playwright 测试
├── docs/ # 产品文档、设计稿与真机测试报告
└── website/ # 独立落地页
工程约定从 AGENTS.md 进入,目录细则在各级 AGENTS.md;产品定位、数据契约和路线图见 docs/product/README.md。
npm install
npm run dev
npm run build
npm run compile
开发构建位于 .output/chrome-mv3/。在 chrome://extensions/ 开启开发者模式后加载该目录。
npm run verify # 格式、ESLint、类型、vitest、文档链接、锁文件注册表、联动一致性
npm run build && npx playwright test
npm run format 一次修复格式。CI(.github/workflows/)跑同样的命令,外加 CodeQL、依赖审查和工作流检查;合并门禁是 ci-pass 加上 .github/rulesets/main.json 里列出的检查。
v<package.json 的 version>。release.yml 先跑完整门禁,再构建、核对清单版本与标签一致、生成构建来源证明并创建 GitHub Release。这个标签已有 Release(包括草稿)时,它只替换附件,不改发布状态,草稿要手工发布。上传到商店是手工步骤,素材与披露要求见 权限与数据边界。.github/rulesets/main.json(Settings → Rules → Rulesets → Import;导入前先让必需检查在一个 PR 上各跑一次,否则 GitHub 找不到检查名);Actions 里把默认令牌设为只读、要求 action 固定到完整 commit SHA、fork PR 的工作流需要批准;Code security 里开启 secret scanning 与 push protection、Dependabot alerts 与 security updates、private vulnerability reporting。MIT