omp packages

@agent-stash/init1.4.1

Personal Agent Skills and /init plugins for pi, DeepSeek Harness, Cline, Grok Build, goose, and Aider

GitHub Actions Published 2 days ago Apache-2.0 ~1.1K downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

Agent-Stash

CI sync init prompts sync style guides

License Last commit GitHub repo size Stars

Agent Stash release Pi Plugins DSH Plugins powered by DSH powered by pi

自用的 Agent Skills,以及给 Pi、DSH (DeepSeek Harness)、Cline、Grok Build、goose 与 Aider 用的 /init 插件。

文档站:中文 · English

目录

清单

Plugins

Agent Stash release

Pi Plugin DSH Plugin Cline Plugin goose Recipes Aider Grok Build Skills

名称 npm 包 支持的 Agent 说明
/init @agent-stash/init pi、DSH、Cline、Grok Build、goose、Aider 用其他 Coding Agent 的 /init prompt 分析项目,写出 AGENTS.md 等说明文件
消息编辑 @agent-stash/dsh-message-edit DSH 编辑消息、重新生成回复或重试回合,每次改动另开一个会话版本,可随时切换回去
Prompt 回溯 @agent-stash/dsh-recall DSH 在输入框里按 ↑↓ 翻看当前会话发过的 Prompt
Prompt 补全 @agent-stash/dsh-autosuggest DSH 输入历史 Prompt 的开头时以灰字补出剩余部分,按 Tab 或 → 填入
Agent Stash 框架 @agent-stash/dsh-stash-kit DSH 上面两个插件共用的面板、动画与外观配置,随它们自动安装

Agent Skills

Agent Stash release

Grok Build Skills

名称 说明
code-styleguide Google、Angular 与 Android Kotlin 风格指南,每天从上游同步
self-use-haiku-subagent 在 DSH 里把任务委托给 Haiku 5.5 子代理
self-use-sonnet-subagent 在 DSH 里把任务委托给 Sonnet 5.5 子代理
self-use-luna-subagent 在 DSH 里把任务委托给 GPT-5.6 Luna 子代理
self-use-dpsk-subagent 在 DSH 里把任务委托给 DeepSeek V4.1 Flash 子代理

安装

Pi

pi install git:github.com/Alice39s/agent-stash

pi 会同时加载 /init 扩展与 skills/ 下的技能,也可以只在当前会话试用:

pi -e git:github.com/Alice39s/agent-stash

DeepSeek Harness (DSH)

DeepSeek Harness 桌面版:在「插件」页点「添加插件」,填入 npm 包名后安装:@agent-stash/init(/init)、@agent-stash/dsh-message-edit(消息编辑)、@agent-stash/dsh-recall(Prompt 回溯)或 @agent-stash/dsh-autosuggest(Prompt 补全)。

命令行:把包作为 bundle 装进某个 profile,例如 Web 界面使用的 web:

dsh plugin --profile web add @agent-stash/init
dsh plugin --profile web add @agent-stash/dsh-message-edit
dsh plugin --profile web add @agent-stash/dsh-recall
dsh plugin --profile web add @agent-stash/dsh-autosuggest

npm 包由 GitHub Actions 经 npm trusted publishing 发布,带 provenance。也可以装 main 上的最新版本:github:Alice39s/agent-stash(只含 /init)。DSH 的斜杠命令目前只能在 Web 界面与桌面版里使用。

插件索引:DSH 0.2.1-alpha.4 起可以在「发现」页浏览 JSON 插件索引并从中安装。在「插件」页的「实验性插件」里打开「自定义插件市场」(较新的 DSH 叫「自定义插件索引」),切到「发现」,点「添加索引源」,填入:

https://alice39s.github.io/agent-stash/index.json

索引由 GitHub Actions 用 DSH 的参考生成器生成,每次发布后和每天定时更新,列出这些 npm 包的每个发布版本。它和文档站发布在同一个 GitHub Pages 站点上。

Cline

cline plugin install --git github.com/Alice39s/agent-stash

插件注册 /init 斜杠命令,在 TUI(cline -i)里使用。cline "<prompt>" 单次运行时不处理斜杠命令。

agent-stash 命令行

Grok Build、goose 与 Aider 通过 agent-stash 命令行接入:

npm install -g github:Alice39s/agent-stash
agent-stash init install grok
agent-stash init install goose

Plugin: /init [preset] [extra prompt]

Agent Stash release Pi Plugin DSH Plugin Cline Plugin Grok Build Skills goose Recipes Aider

让 agent 分析当前项目并写出 AGENTS.md,完整说明见文档站。pi、DSH 与 Cline 的参数写法相同:

/init                         # 使用默认预设(DSH 里先打开预设列表)
/init kimi-code               # 使用 kimi-code 预设
/init opencode 重点写测试流程   # 使用 opencode 预设并附加额外 Prompt
/init 用中文写                 # 第一个词不是预设名时,整句作为额外 Prompt,使用默认预设

DSH 的 / 菜单里,/init 排在「指令」区,标题是「初始化」。在菜单里选中它,或者只输入 /init 就回车,会打开预设列表:默认预设打勾并已高亮,再按回车就用它,输入文字可以筛选预设,自定义预设单独列在「自定义」组里。要写预设名或额外 Prompt,在 /init 后面打空格接着输入,规则和上面一样。子代理会话里没有 /init。

Grok Build 与 goose

每个预设对应一个 /init-<预设名> 命令,/init 使用默认预设。命令后面的文字都是额外 Prompt:

/init                          # 使用默认预设
/init-kimi-code                # 使用 kimi-code 预设
/init-opencode 重点写测试流程    # 使用 opencode 预设并附加额外 Prompt

非交互运行时也能用:

grok -p "/init-opencode 重点写测试流程"
goose run -t "/init-crush 重点写测试流程"

Aider

agent-stash init aider 渲染预设后交给 aider --message,aider 处理完这一轮就退出。参数与 /init 相同,-- 之后的参数原样传给 aider:

agent-stash init aider                               # 使用默认预设
agent-stash init aider opencode 重点写测试流程         # 使用 opencode 预设并附加额外 Prompt
agent-stash init aider crush -- --model sonnet       # 指定 aider 的模型

上游同步的预设

预设 上游 许可证
codex(默认) openai/codex Apache-2.0
kimi-code MoonshotAI/kimi-code MIT
opencode anomalyco/opencode MIT
crush charmbracelet/crush FSL-1.1-MIT
copilot microsoft/vscode MIT
qwen-code QwenLM/qwen-code Apache-2.0
kilo-code Kilo-Org/kilocode MIT

手动维护的预设

预设 来源
claude-code Claude Code v2.1.306 的 /init(经典版)
claude-code-init-new Claude Code v2.1.306 的 /init(多阶段版)

除 copilot 与 claude-code-init-new 外,所有预设都输出 AGENTS.md。copilot 沿用 VS Code 上游的做法,项目里已有 .github/copilot-instructions.md 时更新它;claude-code-init-new 先询问要设置什么,可能写个人的 CLAUDE.local.md、.claude/skills/ 下的技能和 .claude/settings.json 里的 hook。

额外指令与占位符

发送前去掉模板开头的 YAML frontmatter,并替换以下占位符:

  • ${path}:当前项目目录。DSH 里取会话的当前工作目录,Cline 里取工作区根目录。Grok Build 与 goose 的命令是安装时写好的文件,写成 .,即 agent 运行时的当前目录。
  • {{.Config.Options.InitializeAs}}:Crush 模板里的说明文件名,替换为 AGENTS.md。
  • $ARGUMENTS:额外指令。

模板没有 $ARGUMENTS 时,额外指令追加到 prompt 末尾的 ## Additional instructions from the user 小节,没有额外指令就不加。Grok Build 的技能是静态文件,这个小节始终存在,没有额外指令时内容为空。

配置

配置文件按以下顺序读取:

pi:

  1. ~/.pi/agent/agent-stash/init.json(设置了 PI_CODING_AGENT_DIR 时为 $PI_CODING_AGENT_DIR/agent-stash/init.json)
  2. <项目根目录>/.pi/agent-stash/init.json,仅在项目受信任时读取

DSH:

  1. $DSH_HOME/agent-stash/init.json(未设置 DSH_HOME 时为 ~/.dsh/agent-stash/init.json)

Cline:

  1. $CLINE_DIR/agent-stash/init.json(未设置 CLINE_DIR 时为 ~/.cline/agent-stash/init.json)

agent-stash 命令行(Grok Build、goose、Aider):

  1. $XDG_CONFIG_HOME/agent-stash/init.json(未设置 XDG_CONFIG_HOME 时为 ~/.config/agent-stash/init.json)
{
  "defaultPreset": "team",
  "presets": {
    "team": {
      "file": "./team-init.md",
      "description": "..."
    }
  }
}
  • defaultPreset:不写预设名时使用的预设,默认为 codex。
  • presets:自定义预设。file 是相对配置文件所在目录的路径,同名预设覆盖内置预设。
  • description 显示在补全菜单和 DSH 的预设列表里,不写时显示 file 的路径。

上游同步

.github/workflows/sync-init-prompts.yml 每天运行一次。

Plugin: dsh-recall

npm DSH Plugin

Prompt 回溯:在 DSH 的输入框里翻看当前会话发过的 Prompt,录屏见文档站:

按键 作用
↑(光标在开头) 打开历史面板,把最近一条 Prompt 放进输入框
↑ / ↓ 在更早与更新的 Prompt 之间切换
↓(最新一条) 回到打开面板前的草稿
Esc 回到打开面板前的草稿
Tab 保留当前这条,关闭面板继续编辑
Enter 直接发送当前这条

面板按日期分组,点任意一行也能把它放进输入框。/、@ 菜单打开时方向键仍归菜单使用。

Plugin: dsh-autosuggest

npm DSH Plugin

Prompt 补全,参照 zsh-autosuggestions:输入的内容是某条历史 Prompt 的开头(区分大小写)时,光标后以灰字显示剩余部分,输入框上方列出最多五条匹配,标出来源会话与日期。录屏见文档站。

按键 作用
Tab / → 填入高亮的那条
↑ / ↓ 有多条匹配时切换
Esc 收起建议,改动草稿后再出现

历史来自所有会话里最近发过 Prompt 的 50 个,按时间倒序,相同文本只保留最新一条。只有亲手输入才会出现建议,dsh-recall 放进输入框的内容不会触发。

安装

两个插件各是一个 DSH bundle,需要 DSH 0.2.1-alpha.4 或更新的版本。桌面版在「插件」页点「添加插件」,分别填入 @agent-stash/dsh-recall 与 @agent-stash/dsh-autosuggest;也可以从插件索引安装。命令行:

dsh plugin --profile web add @agent-stash/dsh-recall
dsh plugin --profile web add @agent-stash/dsh-autosuggest

两个插件的界面都建立在 Agent Stash 框架上。插件第一次启动时会通过插件管理器从 npm 自动安装并启用框架;profile 里已经装了框架但没有启用时,插件会把它启用。框架就绪之前,「插件」页里两个插件的浏览器半部显示「等待依赖」,Prompt 历史路由照常工作。

本地开发时可以直接装工作区里的目录,例如 dsh plugin --profile web add "$PWD/dsh/recall",插件会从同一个仓库的 dsh/kit 安装框架。两个插件共用 dsh/shared/ 下的历史读取与按键处理,Host 半部各注册一个只读路由(/dsh-recall/prompts、/dsh-autosuggest/prompts),从会话日志里取出用户亲手发送的 Prompt,经 DSH 的连接校验后返回。

Plugin: dsh-stash-kit

npm DSH Plugin

Agent Stash 框架(dsh/kit)为 Agent Stash 系列的 DSH 插件提供共用的面板、补全灰字、动画和外观配置。浏览器半部提供 stashKit 服务,dsh-recall 与 dsh-autosuggest 依赖这个服务渲染界面;Host 半部持有外观配置,在「插件」页统一修改,所有插件同时生效。

面板与宿主 / 菜单使用同一套几何:离输入框 4px,圆角与内边距一致,内容左边线对齐输入框的文字列。底色完全不透明,默认再加一层背景模糊。

在「插件」页打开「Agent Stash 框架」,点它的条目进入配置页。页面顶部有实时预览,可以重播动画;改动点保存后立即生效。配置页的录屏见文档站:

配置项 字段 可选值 默认
毛玻璃效果 glass 开(不透明底色加背景模糊)/ 关(不透明底色) 开
动画 motion lively 灵动、subtle 轻柔、off 关闭 灵动
补全灰字 ghost wave 波浪、fade 淡入、none 直接显示 波浪
高亮移动 highlight glide 滑动、instant 即时 滑动
行高 density comfortable 舒适(34px)、compact 紧凑(28px) 舒适
按键提示 hints 开 / 关 开

各档动画:

  • 灵动:面板从输入框方向浮起,由模糊变清晰,各行从贴近输入框的一行起依次出现;关闭时向下淡出。用 ↑ 回溯时,新草稿从翻看的方向滑入输入框。
  • 轻柔:面板只做短淡入淡出,草稿切换不播放动画。
  • 关闭:面板和灰字都直接出现、直接消失。
  • 补全灰字的「波浪」用一道渐隐遮罩从左向右扫出剩余文字;沿着建议继续输入时灰字不重播,换成另一条建议时才重新出现。
  • 系统开启「减少动态效果」时,面板只保留淡入淡出;各行依次出现、高亮滑动和草稿切换的动画都去掉,补全灰字直接显示。

也可以在 profile 的 patch 里写:

- id: dsh-stash-kit
  name: "@agent-stash/dsh-stash-kit"
  config:
    glass: false
    motion: subtle

单独安装框架:@agent-stash/dsh-stash-kit。停用框架后,依赖它的插件会停在「等待依赖」,再次启用这些插件时框架会被重新启用。

Skills: code-styleguide

Agent Stash release

收录的风格指南:

Skills: self-use-<model>-subagent

在 DSH 里派发子代理时用的四个技能,每个模型一份:

技能 模型 单个子代理的上下文预算
self-use-haiku-subagent Haiku 5.5 100k
self-use-sonnet-subagent Sonnet 5.5 400k
self-use-luna-subagent GPT-5.6 Luna 200k
self-use-dpsk-subagent DeepSeek V4.1 Flash 200k

每个技能写了调用参数、按预算估算一个子代理能做多少、提示词怎么写,以及子代理用满上下文被终止后怎么接手。

四份 SKILL.md 由同一份模板生成,模板、模型参数和生成脚本都在 skills/self-use-haiku-subagent/scripts/ 下。改正文就改 templates/ 下的模板,改模型参数就改 models.yaml,然后重新生成:

uv run skills/self-use-haiku-subagent/scripts/render.py

开发

pnpm install
pnpm check
pnpm bundle # 更新 dist/ 与 dsh/*/dist/:DSH、Cline 插件与 agent-stash 命令行都从这里加载
pnpm format

工作区包放在 packages/ 下,各自的 bundle 脚本产出随仓库提交的 dist/;dsh/recall、dsh/autosuggest 与 dsh/kit 也是工作区包,由根目录的 pnpm bundle 构建。构建、上游同步、插件索引、文档站和 npm 相关的 CI 步骤由 scripts/ci 里的 Python 命令行执行(uv + Typer),pnpm check 与发布用的 pnpm tegami ci 由 workflow 直接调用。本地可以用同样的命令复现:

uv run --project scripts/ci ci --help
uv run --project scripts/ci ci bundle --check # 重建所有工作区包的 dist/,与检出内容不一致时失败
uv run --project scripts/ci ci npm status     # 列出各包在 npm 上的版本与是否经 trusted publishing 发布

文档站

文档站在 docs/ 下,是静态导出的 Fumadocs 站点,由 .github/workflows/pages.yml 与插件索引一起发布到 GitHub Pages。改动 docs/ 的 Pull Request 会构建一份预览产物,合并到 main 后部署。

pnpm --filter agent-stash-docs dev    # http://localhost:3883/agent-stash/
pnpm --filter agent-stash-docs build  # 输出到 docs/out/

修改文档站界面前先读 docs/design.md。

发布

版本号遵循语义化版本,由 Tegami 管理,配置在 scripts/tegami.ts。

  1. 在 .tegami/ 下新建 Markdown 文件,frontmatter 写明每个改动的包与升级类型(major、minor 或 patch),正文是发布说明。正文至少要有一个 Markdown 标题,没有标题的文件 Tegami 不会读取:

    ---
    packages:
      "@agent-stash/init": minor
    ---
    
    ## 新增 xxx 预设
    
    - xxx 预设从上游每天同步。
    
  2. 推送到 main 后,.github/workflows/release.yml 开 Version Packages PR,更新各包的版本号与 CHANGELOG.md。

  3. 合并这个 PR 后,同一个 workflow 经 npm trusted publishing(OIDC)把升级过的包发布到 npm 并附带 provenance,然后打 tag、创建 GitHub release:@agent-stash/init 用 v<version>,其他包用 <name>@<version>。workflow 等到 npm 能安装新版本才结束,随后运行的 Pages 工作流就会在插件索引里列出这次发布,并重新发布文档站。

npm 上的包禁止 bypass 2FA 的令牌发布,CI 只通过 trusted publishing 发布。

新增一个 npm 包

npm 只能给已经存在的包配置 Trusted Publisher,新包要先用一次性的令牌占个名字:

  1. 在 npmjs.com 生成一个只用于这一步的发布令牌,复制到剪贴板后运行 uv run --project scripts/ci ci bootstrap store-token,它把剪贴板内容存成仓库的 NPM_TOKEN secret 并清空剪贴板。
  2. 运行 uv run --project scripts/ci ci bootstrap publish --auth token:release workflow 用令牌给还没有正式版本的包发布一个空的 0.0.0-placeholder.<n>(dist-tag placeholder)。
  3. 在包的 npm 设置页添加 Trusted Publisher:仓库 Alice39s/agent-stash,workflow release.yml。
  4. 运行 uv run --project scripts/ci ci bootstrap publish --auth oidc,确认 ci npm status 显示 trusted publishing 为 yes。
  5. 运行 uv run --project scripts/ci ci bootstrap remove-token,在 npmjs.com 吊销令牌,并把包的发布权限设为禁止 bypass 2FA 令牌。

README 里的版本 badge 会自动读取最新的 GitHub release。

许可证

本仓库使用 Apache License 2.0。