跳转至

安装、更新、移除

用你已经在用的智能体就行。技能只需要装一次,之后切到你要动手的项目里,打开这个智能体。 安装只是给智能体加命令,不会创建项目的记忆库,也不会升级它。

你的环境 安装方式
Claude Code 装 tabilet 市场里的 memory-bank 插件
Codex 用 Codex CLI 装同一个 memory-bank 插件
agy 直接运行 agy plugin install https://github.com/tabilet/skills 安装
DSH Web 或无界面(headless) 装 tabilet-skills 伴侣,或者用源码检出里的七个文件系统包
手动安装 把完整的技能文件夹放进智能体的技能目录

规范的七个技能和 DSH 伴侣共用同一套项目 Markdown。2.0.0 版把项目自有文件放在 tabilet/ 下。现有的 v1.5.0 项目需要一次性迁移, 这一步必须显式执行。另外,迁移和可选的 API 运行器都要有 Python。

Claude Code

下面两条要在 Claude Code 里运行:

/plugin marketplace add tabilet/skills
/plugin install memory-bank@tabilet

在你的项目里新开一个会话,然后发送:

/memory-bank:memory-bank-init

只有项目还没有初始化记忆库时,才用它。否则请按你要做的工作 选择相应的工作流。

Codex

下面两条要在终端里运行:

codex plugin marketplace add tabilet/skills
codex plugin add memory-bank@tabilet

然后在你的项目里新开一个 Codex 会话并发送:

$memory-bank:memory-bank-init

@tabilet 这个限定符用来标明市场。如果你的 Codex 版本没有提供插件命令,就走 纯文件方式。

agy

在终端里运行:

agy plugin install https://github.com/tabilet/skills

(也可以在本地克隆目录中运行:agy plugin install .)

然后在你的项目里新开一个 agy 会话并发送:

/memory-bank:memory-bank-init

agy 会自动把 AGENTS.md 作为项目规则加载,并把七个技能注册为斜杠命令。如果你更倾向纯文件方式,agy 也会自动扫描 ~/.agents/skills/。

DeepSeek Harness

想要 Memory Bank 侧边栏和全部七个技能,就在 Web 配置里装预构建的 v2.0.0 伴侣。 在运行 DSH 的机器上打开一个终端,执行:

dsh plugin --profile web add \
  https://github.com/tabilet/tabilet-skills/releases/download/v2.0.0/tabilet-skills-2.0.0.tgz \
  --ignore-scripts

无界面场景则把 --profile web 换成 --profile headless。只在真正需要它的配置里安装。 这条 GitHub release 途径不需要 npm 账号。

重启 DSH,为你的项目选中一个会话,然后在右侧边栏打开 Memory Bank。展开 Prepare a workflow request,挑一个技能,看一眼预览,再把它插入空白草稿。 请求要由你自己发送。 草稿里已经有文本或附件时,改成手动复制预览内容。 无界面配置照样加载这些技能,只是没有侧边栏。

该伴侣已在 Linux 上验证通过,用的是 Node 24.14.1 和锁定的 DSH 0.1.5-rc.2 组件; 另有一个隔离的 rc.1 启动器,跑的是 rc.2 组件。

只要技能、不要仪表盘,就走纯文件方式。把 v2.1.0 检出里 七个完整文件夹全部复制到 $DSH_HOME/skills,通常是 ~/.dsh/skills。文件系统途径的 全 rc.1 兼容性是单独测过的。

使用 Memory Bank 面板

面板跟着所选会话的项目走。Overview 显示活跃里程碑和任务数量;Tasks 提供筛选、 搜索和完整备注;Acceptance 显示已记录的验证和评审证据;Memory 保存当前项目事实; History 按需打开保留的记录;Compatibility 报告缺失文件、不支持的格式、冲突的任务 状态,以及哪个已安装的技能来源优先生效。

面板可见时,外部文件改动会通过变更通知和五秒刷新周期显示出来。面板获得焦点也会刷新, 另外还提供手动刷新。读取不完整,或者读取被拒绝,都会作为警告留在界面上。

浏览和准备请求都不发起模型调用,也不写项目文件。预览不是执行,更不是审批: 发送预览是你自己的动作,所选技能仍然按自己的审批边界执行。任务标记全部完成, 并不等于里程碑通过了验收。遇到较旧的项目格式,请准备一个 Upgrade 请求, 并把界面上显示的警告一并带上。

批准提醒邮件设置

交互式 Goal 和 Next 接受 --email ADDRESS 来发送工作流批准提醒。可选辅助程序随完整技能目录提供, 用 Python 标准库调用 Cloudflare REST API;不增加技能、后台服务或审计数据库依赖。

另行配置 Cloudflare 账户及发送域名,并验证目标收件人。创建只作用于该账户、具有 Email Sending: Edit 权限的令牌。账户可用性及发送者验证须由用户确认;安装 Tabilet 不完成这些设置。 参见 Cloudflare 设置 和 REST 认证。

在项目之外创建私有 ${XDG_CONFIG_HOME:-~/.config}/tabilet/email.json,填入实际值:

{
  "account_id": "<32 hexadecimal characters from your Cloudflare account>",
  "from": "alerts@your-onboarded-domain.example",
  "allowed_recipients": ["abc@def.gh"],
  "token_env": "CLOUDFLARE_EMAIL_TOKEN"
}

Linux/macOS 使用 0600 文件权限。令牌值只保存在指定的私有账户环境变量里,不写入项目、命令参数或 此 JSON。收件人必须在 allowed_recipients 中;不发送抄送、密送或附件。保护配置,避免项目控制它。

开始工作前的准备检查只读取本地配置,不发测试邮件或账户验证请求。需要工作流批准时,只有所有者发送有界的 纯文本提醒,包含项目、任务、已清理的原因和可用时的会话 ID。私有尝试记录位于项目之外的 ${XDG_STATE_HOME:-~/.local/state}/tabilet/email-notifications/。重复或不确定的尝试不自动重发; accepted 或 queued 只是提供方响应,不证明已到达收件箱。

发送器不可用时明确报告;邮件失败不改变原批准暂停。请在智能体会话中批准。 每次网络尝试有包含慢响应的 10 秒总期限。预期输入、协议或命令参数错误返回 JSON unavailable,退出码为 2; --help 仍显示帮助。工作输入采用有界 UTF-8。先启动等待输入的子进程,持久保留发送尝试后才交付任务。 进程启动或预检失败不发送、不留下尝试记录,修复后可尝试同一提醒;可能已派发的未知结果仍抑制重发。 空值或相对路径的 XDG 设置使用文档中的主目录默认值。收件地址域名忽略大小写,本地部分保留并匹配配置。 恢复时无法找回通知身份,报告提醒缺口;不要生成新身份来重发。确认提供方结果后,只有人类明确要求再发一次, 才保留原运行 ID,并用原完整方案加上重发指令生成新请求哈希。仅修复凭据不会重发,也不删除旧记录。 新运行省略参数就不发邮件,恢复同一次运行时保留其明确选择。本版本处理工作流批准,不拦截宿主原生工具批准。 API 运行器和控制器不消费该参数。

调用技能

技能请求要发在智能体对话里,而不是 shell 里。前缀取决于你的安装方式:

安装方式 对话请求示例
Claude Code 插件 /memory-bank:memory-bank-next
Codex 插件 $memory-bank:memory-bank-next
agy 插件 /memory-bank:memory-bank-next
DSH 伴侣或文件系统 /memory-bank-next
Claude Code 纯文件 /memory-bank-next
Codex 纯文件 $memory-bank-next
agy 纯文件 /memory-bank-next

需要时把 init、archive、propose、reconcile、upgrade 或 goal 换成 next。 每个技能的输入和审批边界,技能指南里都有说明。用 Goal 时,请求里要写上明确 的顺序和提交策略。

作为你自有的纯文件

把 v2.1.0 源码克隆到一个单独目录(七个技能全在里面):

git clone --branch v2.1.0 --depth 1 https://github.com/tabilet/skills.git

把该检出 skills/ 目录下的每个 memory-bank-* 文件夹,复制到你的智能体对应的目录:

智能体 个人技能目录
Codex 与 agy ~/.agents/skills/
Claude Code ~/.claude/skills/
DSH $DSH_HOME/skills/,通常是 ~/.dsh/skills/

要复制完整文件夹,随附的模板和参考文档一起带上。只复制 SKILL.md,有些工作流 就缺东西了。同名文件夹已经存在的话,先检查、备份,再替换;无关的技能别动。 每次改动安装之后,都重开一个新会话。

项目文件

Init 在你批准方案之后准备好项目专属文件。如果你更想手动设置,把 release 检出里的 template/ 复制到一个新项目:

cp -R /path/to/skills/template/. /path/to/new-project/

方括号里的占位符是故意留的:填上你项目自己的事实、计划和验证命令。项目已经存在的话, 就把适用的规则合并进去,保留它原有的说明,千万别用模板盖掉当前状态。动手之前, 先记录具体的交付边界、里程碑验收、任务行和验证命令。入口仍然是 AGENTS.md; 如果你的智能体读的是别的说明文件名,就让那个文件指向 AGENTS.md。 第一个项目演练讲了挑任务之前该检查哪些东西。

可选的 API 运行器

独立的 API 运行器需要 Python 3.9 或更高版本和 Git,还要配好所选模型提供方的凭据。它只用 Python 标准库。

mkdir -p ~/.local/bin
cp /path/to/skills/harness/tackle-memory-bank-api-loop ~/.local/bin/
chmod +x ~/.local/bin/tackle-memory-bank-api-loop

如果你已经在用编码智能体,这个运行器可以跳过。真要用它,起点得是一个已初始化的项目: 项目就在 Git 工作区的根目录上,有干净的已提交基线,还有一个已获批的可执行任务。 请在一次性沙箱里运行它,因为运行器会在宿主 shell 里执行模型给出的命令,不提供隔离。 设置 ALLOW_UNSANDBOXED_SHELL=1 就等于确认了这种访问权限。

环境里已经设好 OPENAI_API_KEY 时,把模型和项目占位符换成实际值,再运行:

ALLOW_UNSANDBOXED_SHELL=1 LLM_PROVIDER=openai LLM_MODEL=your-model MAX_RUNS=1 \
  ~/.local/bin/tackle-memory-bank-api-loop /absolute/path/to/project

用 Anthropic 的话,设好 ANTHROPIC_API_KEY,配一个兼容的模型,并使用 LLM_PROVIDER=anthropic。向提供方发请求可能产生费用。端点设置、超时、重试和额外限制, 请看该可执行文件的 --help。

API 运行器要求每次运行都留下一次提交。碰到脏状态、缺少提交、无效的任务转换,或者同时 有多行处于进行中,它都会停下来。退出码 7 表示已经跑满请求的运行次数上限;退出码 3 表示剩下的全是阻塞工作;退出码 0 表示没有可执行的行了,而不是每个里程碑都过了评审。 事后请检查记录的验证和关闭证据。同一个活跃账本上,别同时再跑另一个智能体。

仅使用 API 的工作流

仅使用 API 时,项目 Markdown 是权威记忆,tabilet/audit.sqlite3 数据库保存观察到的工作流历史。 运行器每次都会重新读取 AGENTS.md、活跃里程碑和任务、当前事实、已退休的历史以及演进文件。 SQLite 记录运行器观察到的生命周期、任务转换、验证和提交;它的索引让当前和历史 Markdown 可以检索,但不会取代这些文件。

启动运行器前先启用记录器:

tabilet-audit audit enable /absolute/path/to/project
ALLOW_UNSANDBOXED_SHELL=1 LLM_PROVIDER=openai LLM_MODEL=your-model MAX_RUNS=1 \
  ~/.local/bin/tackle-memory-bank-api-loop /absolute/path/to/project

已启用审计的工作流通常会在结束时刷新索引。手动修改或检索数据过期时,请参见 同步和修复说明。 用 tabilet-audit audit runs --project /absolute/path/to/project 查看已记录的运行。 API 运行器自己负责审计运行的开始、事件和结束,不要再手动启动一个重复运行。 数据库固定为 tabilet/audit.sqlite3;需要干净 Git 基线的工作流开始前,请提交设置生成的忽略文件。

metadata 是默认模式。设为 TABILET_AUDIT_CAPTURE=relevant 后,运行器提供的部分可见消息会被保留。 它不会捕获每个 API 提示词、工具结果、隐藏推理或会话外的聊天。要保存精确的原始文本,必须由宿主按 SQLite 操作指南 中的方法提交选定消息。

可选的 Tabilet 控制器沙箱

控制器是另一种 API 工作流,不会改变独立运行器在宿主 shell 中执行命令的行为。首个版本需要 Linux,以及通过 Unix 套接字连接的本地 Docker 守护进程。远程 Docker 上下文和守护进程覆盖变量会被拒绝, 因为绑定挂载必须指向控制器所在主机的本地项目文件。请使用支持 bind-recursive=disabled 的 Docker Engine 版本。

从 skills 源码检出安装 tabilet 和经过验证的七个规划技能包:

python3 harness/tabilet_install.py --source skills --controller-source harness
export PATH="$HOME/.local/bin:$PATH"

安装器会把命令放到 ~/.local/bin,把运行模块放到 ~/.local/lib/tabilet/controller,并在 ${XDG_DATA_HOME:-~/.local/share}/tabilet/ 下保存带生成式 SHA-256 清单的规范技能包。安装器不会写入项目。后续更新可以从更新版本的检出中重新运行。

启动控制器提案之前,请先自行准备本地镜像。例如,下面的命令提供一个精简的 Python 和 shell 基础镜像; 如果任务需要其他工具,请把它们加入自己的镜像:

docker pull python:3.12-slim

控制器不会自行拉取或构建镜像。它会在任何提供方请求之前,把所选本地标签解析为不可变的镜像 ID。 镜像必须包含 /usr/bin/env、/bin/sh,以及任务需要的工具和软件包。命令运行在禁用网络的容器中, 容器根文件系统只读,/tmp 是独立的可写目录;项目以可写方式挂载,.git 则只读。提案会显示 4 个 CPU、8 GiB 内存、512 个进程和每条命令 300 秒的限制。提供方凭据留在宿主机,不会传入容器。

安装可选的 tabilet 命令后,使用 tabilet chat PROJECT --image IMAGE 选择准备好的镜像。 命令会询问使用哪个规划契约(init、propose 或 reconcile)以及要交付什么;也可以通过 --operation 和 --request 直接提供。提案会显示镜像引用、解析出的 ID,以及行数、提供方请求次数、每行模型轮次、提交、总时长、CPU、内存、进程数和单条命令时限。输入 confirm 前会展示完整规划差异和所有限制。 输入 reject 后可以给出修改意见并查看新提案;在确认之前不会写入项目。

使用 tabilet status PROJECT 查看只读状态,使用 tabilet resume PROJECT 对账收据并继续已验证的检查点。 如果有多个开放的执行范围,请用 --receipt UUID 选择。恢复时会收集必需的人工证据;证据不齐时执行会暂停。 达到限制后,必须通过 tabilet extend-limit PROJECT --limit NAME --value NUMBER 单独确认更高数值。 恢复会沿用原有计数器和总时长起点。

缺少工具或 Docker 配置时会以退出码 17 暂停;请在控制器之外准备新的本地镜像,再从收据恢复。 外部操作会列出供后续单独处理,不会因通用确认而执行。收据状态、恢复行为、宿主 Git 防护和退出码,详见 控制器指南。

可选的 SQLite 审计与检索

Markdown 仍是权威来源。可选工具将本地审计存储在 tabilet/audit.sqlite3,并为里程碑、任务、 历史、演进和归档建立可重建的索引。

它需要 Python 3.9 或更高版本,并带有 sqlite3 模块, 其内置 SQLite 为 3.24.0 或更高版本。python.org、Homebrew 和常见 Linux 发行版自带的 Python 都包含该模块;从源码编译、且编译时缺少 SQLite 开发头文件的 Python 则没有。可用 python3 -c 'import sqlite3; print(sqlite3.sqlite_version)' 检查。文本搜索在可用时使用 SQLite 的 FTS5,否则回退为字面匹配。同一 Python CLI 支持 Linux、macOS 和 Windows。 审计是可选的:已启用的数据库或所需能力不可用时,API 运行器和技能报告审计缺口,然后照常继续。

在包含此功能的仓库检出目录中运行:

mkdir -p ~/.local/bin
install -m 755 harness/tackle-memory-bank-api-loop ~/.local/bin/
install -m 644 harness/tabilet_audit.py harness/tabilet_index.py ~/.local/bin/
install -m 755 harness/tabilet_explorer.py ~/.local/bin/
install -d ~/.local/share/tabilet/explorer
install -m 644 harness/explorer/index.html harness/explorer/explorer.css harness/explorer/explorer.js ~/.local/share/tabilet/explorer/
install -m 755 harness/tabilet_audit_host.py ~/.local/bin/tabilet-audit
export PATH="$HOME/.local/bin:$PATH"
tabilet-audit audit enable /absolute/project
tabilet-audit index sync /absolute/project
tabilet-audit index search /absolute/project 'authentication' --kind task
tabilet-audit explorer /absolute/project --port 8000

用户必须为每个项目手动启用审计;数据库保存该设置,新会话沿用它。 提交 tabilet/.gitignore 中的 /audit.sqlite3*,让数据库及旁文件保持未跟踪。 创建或刷新索引不会启用审计。audit disable 保留历史;删除数据库后审计保持关闭。 仅安装技能不会创建数据库。Windows 或未安装命令时,用 py -3 C:\path\to\skills\harness\tabilet_audit_host.py 运行同样的子命令。相关消息捕获需单独启用;原始聊天文本必须由宿主提供。 即使审计仅记录元数据,索引仍保存当前 Markdown 文本。 索引结果显示上次刷新时间和来源位置,执行前仍须重新读取磁盘上的 Markdown。 暂不新增完整文件快照,已有快照证据会保留。工具仅使用 Python 标准库,无需 npm 包。

仅监听回环地址的浏览器探索器提供总览、时间线和待办视图。它读取项目 SQLite 审计和索引,Markdown 仍是权威来源。时间线会组合 goal 的子运行,并把筛选条件 和所选详情保存在 URL 中。待办视图仅供参考,显示阻塞、 依赖和关闭审查证据。刷新操作可迁移受支持的旧数据库,写入项目数据库,首次设置还会加入 Git 排除规则。 后续操作会重新检查实时来源并生成可复制的提示词,但不会运行代理、修改项目 文件或创建任务。非回环地址的 --host 值会被拒绝。如果浏览器在 Chromebook 上,请使用 ssh -N -L 8000:127.0.0.1:8000 user@host,然后打开 http://localhost:8000/。缺失的捕获内容和过期来源会显示为诊断信息,来源 供人工核对;任务选择仍以实时台账为准。

宿主生命周期、筛选、备用搜索、迁移、备份和恢复详见仓库的 操作指南。 独立的 DSH 仪表盘继续直接读取项目 Markdown。安装 Explorer 会添加本地图形视图,但不会添加宿主聊天捕获钩子。

更新

Claude Code 可在终端中运行 CLI 更新命令:

claude plugin marketplace update tabilet
claude plugin update memory-bank@tabilet

(或者在交互式会话中运行 /plugin marketplace update tabilet,然后运行 /plugin install memory-bank@tabilet 并执行 /reload-plugins。)

Codex 则刷新市场快照,再重装:

codex plugin marketplace upgrade tabilet
codex plugin add memory-bank@tabilet

对于 agy,重新运行 agy plugin install https://github.com/tabilet/skills 即可拉取最新版本。

DSH 伴侣要在每个适用的配置里安装选定的已发布 release 归档,然后重启。文件系统安装的话, 先停掉正在用这些包的会话,检查并备份已安装的文件夹,再用所选 release 里的完整文件夹替换。 无关的技能要保留;项目或用户的覆盖设置可能压过新包,记得检查。

更新已安装的技能不会迁移项目规则。 想检查现有项目、批准具体的规则合并,请用 Upgrade。任务状态、永久 ID、本地策略和历史都要原样保留。

移除

按你的安装方式执行对应的卸载命令:

安装方式 命令及运行位置
Claude Code 插件 在终端运行 claude plugin uninstall memory-bank@tabilet 或在 Claude Code 中使用 /plugin 菜单
Codex 插件 在终端里运行 codex plugin remove memory-bank@tabilet
agy 插件 在终端里运行 agy plugin uninstall memory-bank
DSH Web 伴侣 在终端里运行 dsh plugin --profile web remove tabilet-skills

如果你在无界面配置里也装过 DSH,那处安装要单独移除。纯文件安装只移除确定属于 memory-bank 的技能文件夹。项目 Markdown 留在项目里,移除之后照样能用。

如果技能或仪表盘缺失

  • 确认所选会话指向的确实是你想要的那个项目。
  • 安装后重开一个新会话。改过配置就重启 DSH。
  • 核对上面的调用前缀。在 DSH Web 里安装,并不会把伴侣装进无界面配置。
  • 在 DSH 的 Compatibility 视图里看看生效的技能来源是哪个。项目里或用户目录下已有的 副本,可能压过随附的版本。
  • skills 仓库自己在 template/tabilet/memory-bank/ 下有一个示例;它没有活跃的项目 记忆库,仪表盘自然没东西可显示。