mcpField
A
autoskill

autoskill

github.com/kalarislabsAgent 工作流7748 次安装4 天前更新
代码仓库

关于 autoskill

autoskill 分析本地 screenpipe 守护进程记录的工作流历史,并起草新技能或组合现有技能的配方。它按需运行,提案会先暂存以供审阅,再决定是否纳入技能库。

主要功能

  1. 01分析指定时间范围的 screenpipe 记录
  2. 02在交给 LLM 前清理敏感文本
  3. 03聚类重复的工作流模式
  4. 04将模式与现有技能进行匹配
  5. 05起草新技能或组合配方

适用场景

  1. 01发现现有技能尚未覆盖的重复工作
  2. 02根据近期工作流起草技能
  3. 03创建串联现有技能的配方

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill autoskill

安装后在 Claude Code 中输入/autoskill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
config.yaml
references/
https-proxy.md
screenpipe-config.yaml
scripts/
autoskill.py
backends.py
cluster.py
doctor.py
fetch_window.py
match_skills.py
promote.py
redact.py
run.py
synthesize.py

详细介绍

autoskill

需要运行中的 screenpipe 守护进程。 此技能没有备用数据源 — 它只读取本地 screenpipe HTTP API(默认地址为 http://localhost:3030)。如果守护进程未运行,run() 会抛出 ScreenpipeUnreachable,并提供安装说明。

网络访问与环境变量。 此技能会向以下位置发送经过身份验证的 HTTP 请求:(a) 用户本地的 screenpipe 守护进程(通过环回地址);(b) 用户配置的 LLM 后端,可选其一:http://localhost:1234/v1(LM Studio,默认)、https://api.anthropic.com(选择启用的 Claude),或用户提供的 BYOK Foundry 网关。此技能会读取三个环境变量 — SCREENPIPE_TOKEN、ANTHROPIC_API_KEY、FOUNDRY_API_KEY — 且每个变量仅用于向其名称所指的单一端点进行身份验证。不会访问其他网络目的地,不会进行遥测,也不会向任何第三方传出数据。

概述

将用户自己的工作流历史 — 由本地 screenpipe 守护进程被动捕获 — 转化为新技能。此技能按需运行:用户指定时间范围后调用它,它会查询 screenpipe 的本地 HTTP API,对重复出现的工作流模式进行聚类,将每种模式与此代码库中的现有技能进行比较,并生成一个暂存的提案文件夹,供用户审核、编辑和发布。

何时使用此技能

在用户提出以下请求时调用此技能:

  • “分析我过去 4 小时 / 一天 / 一周的活动,并提出新技能。”
  • “看看我一直在做什么,告诉我哪些内容还没有覆盖。”
  • “根据我最近的工作流起草一项技能。”
  • “找出我重复使用的工作流组合方案。”

不要在用户只是询问 screenpipe 本身的问题、需要实时屏幕查询,或未明确提出请求时调用此技能 — 此技能会分析敏感的本地内容,因此必须由用户明确触发。

隐私保护

  • Screenpipe 会在捕获时过滤应用 / 窗口。 将 references/screenpipe-config.yaml 复制到用户的 screenpipe 配置中,以安装基础拒绝列表。敏感应用(密码管理器、消息应用、银行应用)从一开始就不会进行 OCR。
  • 原始 OCR 数据绝不会离开本机。 scripts/fetch_window.py 会通过 localhost HTTP 获取数据。scripts/cluster.py 会将时间线简化为应用 / 时长 / 标题摘要。scripts/redact.py 会在任何聚类摘要发送给 LLM 之前,移除电子邮件、API 密钥、Bearer 令牌和电话号码,作为纵深防御措施。
  • LLM 后端默认设为 local。 推荐使用 LM Studio 运行 Gemma-4-31B-it — 它具备强大的推理能力,且大小适合大多数工作站 GPU,不会有任何数据离开本机。云端后端(claude、foundry)需选择启用,并在 config.yaml 中说明,供明确需要使用的用户选择。无论选择哪种后端,检测和嵌入始终在本地运行。
  • 试运行模式(--plan)会在调用任何 LLM 之前,打印将要分析的确切时间线。
  • localhost 的 TLS(可选,适用于企业政策):请参阅 references/https-proxy.md 中的 Caddy 配置方案。

先决条件

1. Screenpipe 守护进程

可安装官方发行版,也可从源代码构建。无论采用哪种方式,守护进程默认都会在 localhost:3030 上绑定 HTTP。

从源代码构建(如果想使用不带桌面 GUI 的 CLI 守护进程,推荐此方式):

git clone --depth 1 https://github.com/mediar-ai/screenpipe.git
cd screenpipe
cargo build -p screenpipe-engine --release
# System deps (macOS): cmake + full Xcode.app (not just Command Line Tools).
#   brew install cmake
#   # if xcodebuild plug-ins error: sudo xcodebuild -runFirstLaunch
./target/release/screenpipe doctor   # confirm permissions + ffmpeg
./target/release/screenpipe record --disable-audio --use-pii-removal

首次运行时会提示授予 macOS 屏幕录制权限。授予权限后重新启动。

2. Screenpipe API 令牌

本地 API 现在需要 Bearer 身份验证。获取令牌并将其导出:

export SCREENPIPE_TOKEN=$(screenpipe auth token)

(或者直接在 config.yaml 中设置 screenpipe.token — 推荐使用环境变量,以免密钥进入版本控制。)

3. Python 环境

在代码库根目录通过 pipenv 配置:

pipenv install httpx pyyaml sentence-transformers

嵌入模型(sentence-transformers/all-MiniLM-L6-v2,约 80 MB)会在首次运行时下载。

4. 本地大模型(默认路径)— LM Studio
  • 安装 LM Studio。
  • 下载 Gemma-4-31B-it(或其他强大的推理模型;调整 config.yaml 中的 local.model)。
  • 通过 CLI 加载,以便无头使用(无需 GUI):
lms load gemma-4-31b-it --context-length 131072 --gpu max -y
lms status   # confirm server running on :1234
5. 云端大模型后端(可选,需主动启用)

仅当你明确选择不使用本地模型时:

  • claude:设置 ANTHROPIC_API_KEY,并在 config.yaml 中将 backend 改为 claude。
  • foundry:设置 FOUNDRY_API_KEY,将 backend 改为 foundry,并将 foundry.endpoint 设为你的企业网关 URL。

架构

screenpipe daemon (user-installed)
        │  HTTP on localhost:3030
        ▼
scripts/fetch_window.py    → normalized timeline events
scripts/redact.py          → regex scrub (defense-in-depth)
scripts/cluster.py         → sessions + clusters (local only)
scripts/match_skills.py    → top-k vs existing 135 skills (local embeddings)
scripts/synthesize.py      → LLM judge: reuse / compose / novel
        │
        ▼
~/.autoskill/proposed/<timestamp>/        (default; override with --out)
  ├── report.md
  ├── composition-recipes/<name>/SKILL.md
  └── new-skills/<name>/SKILL.md

scripts/promote.py         → user-approved proposal → skills/<name>/

工作流

此技能通过 scripts/autoskill.py 提供统一 CLI,包含三个子命令:

python scripts/autoskill.py doctor   --config config.yaml --skills-dir ../
python scripts/autoskill.py run      --start ... --end ... --config config.yaml
python scripts/autoskill.py promote  --proposed ~/.autoskill/proposed/<ts> --skills-dir ../ --name <skill>
0. 使用 doctor 进行预检

在完整运行前,一次性验证所有依赖:

python scripts/autoskill.py doctor \
  --config skills/autoskill/config.yaml \
  --skills-dir skills

报告涵盖 config(后端选择有效)、skills_dir(目录存在)、screenpipe(可访问且已验证身份)和 llm(LM Studio 正在提供服务或 API 密钥已设置)。任何一项失败时都会以非零状态码退出,并将问题所在行标记为 error。

1. 运行流水线
export SCREENPIPE_TOKEN=$(screenpipe auth token)
python scripts/autoskill.py run \
  --start "2026-04-17T00:00:00Z" \
  --end   "2026-04-17T23:59:59Z" \
  --config skills/autoskill/config.yaml \
  --skills-dir skills

提案默认保存在 ~/.autoskill/proposed/<timestamp>/,使实验性输出与技能仓库隔离。传入 --out PATH 可覆盖此路径。

内部流程:

  1. 获取 — fetch_window 对 screenpipe 的 /search 端点进行分页,并将事件规范化为 {ts, app, window_title, text, content_type}。
  2. 脱敏 — redact 会清除 OCR 文本和窗口标题中的电子邮件地址、API 密钥、Bearer 令牌和电话号码,作为对 screenpipe 自带个人身份信息移除功能的纵深防御。
  3. 聚类 — segment_sessions 按空闲间隔(默认 10 分钟)拆分会话,并丢弃较短的会话;cluster_sessions 按应用特征分组会话,并保留大小达到 min_cluster_size(默认 2)的聚类。
  4. 匹配 — load_skill_descriptions 会读取 skills/ 中每个 SKILL.md 的 frontmatter;top_k_matches 使用本地 sentence-transformers 嵌入(余弦相似度)对每个聚类与所有技能进行匹配排序。
  5. 综合 — synthesize 会提示配置的大模型后端,将每个聚类归类为 reuse、compose 或 novel,并在适当时生成 SKILL.md 正文。
  6. 生成报告 — 写入 <out_dir>/<ts>/report.md,并为每项提案生成 new-skills/<name>/SKILL.md 或 composition-recipes/<name>/SKILL.md。

添加 --dry-run 可在聚类后停止;此选项会跳过大模型(以及 sentence-transformers 的加载),仅写入 plan.md 供检查。

2. 审查并提升

打开 ~/.autoskill/proposed/<ts>/report.md,直接编辑草稿,并删除不需要的内容。然后:

python scripts/autoskill.py promote \
  --proposed ~/.autoskill/proposed/2026-04-17T14-30-00 \
  --skills-dir skills \
  --name zotero-pubmed-helper

promote 会将目录移至 skills/<name>/,且不会覆盖现有技能。如果找不到提案或目标已存在,则会显示易于理解的错误信息并以非零状态码退出。

配置

完整配置结构请参阅 config.yaml。默认值(本地优先):

backend: local
local:
  endpoint: http://localhost:1234/v1   # LM Studio's Developer server
  model: Gemma-4-31B-it

screenpipe:
  url: http://localhost:3030           # or https://screenpipe.local via Caddy

cluster:
  min_session_minutes: 5
  idle_gap_minutes: 10
  min_cluster_size: 2

启用云端后端:

backend: claude                         # or foundry
claude:
  model: claude-opus-4-7

组合方案与新技能

  • compose:大模型判断通过串联现有技能即可覆盖此工作流。生成的 SKILL.md 有意保持精简——仅包含 frontmatter 和一个按顺序调用现有技能的“Workflow”部分。发现此技能的同一 Agent 运行时随后即可端到端调用它。
  • novel:现有技能的任何组合都无法覆盖此工作流。系统会起草更完整的 SKILL.md,并遵循仓库规范(frontmatter、Overview、When to Use、Workflow)。提升新技能前,用户应始终审查草稿。

测试

此技能由仓库根目录 tests/autoskill/ 中的一组小型 pytest 测试覆盖。每个脚本都会通过依赖注入单独进行单元测试(模拟 HTTP 传输、桩后端、桩嵌入器):

python -m pytest tests/autoskill -v

与本仓库中其他技能的组合

autoskill 的嵌入索引涵盖全部 135 个同级技能。看起来涉及科学写作的工作流会匹配 scientific-writing / literature-review / citation-management;图表相关工作会匹配 scientific-schematics / generate-image / infographics;幻灯片准备会匹配 scientific-slides / pptx;等等。当某个技能集群与两个或三个同级技能的匹配度较高时,生成的组合方案会明确列出这些技能,以便用户今后调用 Agent 时使用本仓库已记录的优化路径。

Agent 操作流程

  1. 检查环境。 确认目标、评估指标、预算(时间、算力、资金)和停止标准。
  2. 明确输入。 根据数据或用户提供的信息确认格式、标识符和参数。任何会影响结果的值都应询问,不要猜测。
  3. 先运行小规模版本。 端到端运行一次迭代,并在扩大规模前检查日志。
  4. 使用上述说明和参考资料执行完整任务。
  5. 验证结果。 在留出数据上评估;保留每次迭代、假设和结果的审计记录。
  6. 报告。 说明运行了什么(版本、命令、参数)、检查了什么,以及仍有哪些不确定之处。
如果发生这种情况请这样做
某次迭代产生了异常显著的提升在接受结果前,检查是否存在数据泄漏或评估错误。
已安装版本中缺少这些说明提到的函数、标志或端点查阅已安装版本自己的文档(help()、--help、官方文档),调整做法并告知用户。切勿捏造 API。
必需的输入、标识符或参数含义不明确询问用户,或在运行前明确说明所采用的假设。

诚信准则

  • 切勿捏造结果、参数、标识符、引文或统计数据。如果无法运行或验证某项内容,请明确说明。
  • 记录负面结果;切勿只选择或报告有利的运行结果。
  • 请将此处与特定版本相关的细节视为可能已过时:根据已安装版本的官方文档进行确认。
  • 对于会产生费用、占用共享 GPU 或云配额、涉及个人或患者数据,或无法撤销的操作,必须先征求同意。

相关技能

  • research-skill-creator:创建、改进和测试用于研究工作流的 Agent 技能(论文写作、实验室方案、分析流水线、领域数据库),使其满足……

评论

支持 Markdown