@ aptivus/ 连接器
克劳德密码的阿普蒂武斯特工 二进制 : aptivus。运行于开发者的
机器是Aptivus中唯一一个看到未编辑文本的组件.
npx @aptivus/connector login # authorize this machine in the browser
npx @aptivus/connector install # add the hooks; prints exactly what it wrote
平台支持——安装前读取此内容
链接 支持和核实结束.
马科斯 支持; 由DIR在2026-10-23的真机上验证.
窗口 通过 窗口的 Git,并且是一个平台 尚未由一个人管理:它是根据有文件证明的 git Bash的行为,通过注射在Linux上进行单位测试(D-052)。 见 窗口 说明需要什么以及如何检查.
任何其它平台均通过 aptivus install 而不是给钩子
永不开火的条目; --force 超越那些对谁想
(D-046,D-052) (中文(简体) )
窗口
钩子还是一样的 POSIX sh 脚本; 在 Windows 上, 它运行在下面
击打Git给Windows飞船, 克劳德代码在Windows上要求.
aptivus install 发现 bash.exe 并登记每个钩子条目为
"C:/Program Files/Git/bin/bash.exe" "C:/Users/<you>/.aptivus/bin/aptivus-hook" prompt
双引号,因为 cmd.exe 无法读取单行本.
向前划去,因为每个政党都参与.. cmd.exe(掌声)
反弹是剧本中的逃生角色 路径
脚本持有( e)C:/Users/<you>/.aptivus) 准确命名节点目录
边到 C:\Users\<you>\.aptivus· ; ~/.aptivus/current 编辑
每张相片都一样.
何处 install 寻找 bash.exe,按顺序排列——需要存在的第一个:
CLAUDE_CODE_GIT_BASH_PATH,变量克洛德代码本身 荣誉where bash.exe,只保留用于 Windows shash (C:\Windows\System32\bash.exe是 WSL 的发射器并被跳过)git --exec-path走到安装处bin\bash.exe%ProgramFiles%\Git\bin\bash.exe%ProgramFiles(x86)%\Git\bin\bash.exe%LOCALAPPDATA%\Programs\Git\bin\bash.exe(每个用户安装)
如果没有找到, install 拒绝, 说明如何为 Windows 安装 Git
(单位:千美元)winget install --id Git.Git -e --source winget),并写作无. 如果吉特语
生活的地方不寻常,设置 CLAUDE_CODE_GIT_BASH_PATH 通向完整路径的
bash.exe 并重新运行. aptivus status 财务报告和审定财务报表 aptivus doctor 打印平台
钩子被打穿; config.json 记录为 bash_path。 。 。 .
Windows上的文件模式 . NTFS 没有 0700编号 :0600。表格中的模式
以下为书面和忽略 credentials.json 联 合 国 日 刊
spool 依赖于用户配置文件的 ACL, 它保存 C:\Users\<you> 给那个
用户、管理员和系统. doctor 将这些条目报告为“用户”
profile ACL" 而非失败无法通过的检查.
基特·巴什需要什么数字 : tr, (中文(简体) ), cut, (中文(简体) ), date, (中文(简体) ), cat, (中文(简体) ), mv, (中文(简体) ),
mkdir, (中文(简体) ), nohup 和效法者 /dev/null 全部运出 基特巴什没有
setsid,所以冲水器开始于 nohup … &,脚本已经存在
倒计时。 WSL, Cygwin 和一款裸体的MSYS2 即使在存在时也不使用.
Windows 机器上第一次运行的检查列表 (DIR,待定):
- 为 Windows 安装 Git ()
winget install --id Git.Git -e --source winget),然后打开一个新的PowerShell. npx @aptivus/connector@latest install- 它必须打印"…bash.exe" "…aptivus-hook"输入它写的,然后npx @aptivus/connector login。 。 。 .- 打开 Claude 代码, 发送一个提示, 运行
aptivus status: spool收件箱数到1,在回复后,aptivus flush(或脱去的冲浪器)发送——会话出现在app中.
它装了什么,在哪里
aptivus install 打印此列表; 在此复制, 以便您阅读
在运行任何东西之前.
下面的一切 profiles/<name>/ 属于一个账户. <name> 这是
活动简介 - 见 一台机器上有几个账户。 。 。 .
| 路径 | 什麽 | 模式 |
|---|---|---|
~/.aptivus/bin/aptivus-hook | 缩写 sh 剧本. 读取 current 要找到活性剖面, 将钩子有效载荷附加到该剖面的 spool, 退出 0。 节点, 无网络 | 0755 (英语) |
~/.aptivus/current | 活动配置文件的名称 | 0600 时 |
~/.aptivus/unattributed/ | 钩子无法归属于任何配置文件的事件 。 从不自己送 | 0700 (英语) |
~/.aptivus/profiles/<name>/spool/inbox/ | 每个钩子事件一个小文件, 由脚本编写 | 0700 (英语) |
~/.aptivus/profiles/<name>/spool/outbox/ | 正在等待发送的已编辑批次 | 0700 (英语) |
~/.aptivus/profiles/<name>/spool/quarantine/ | 攻击服务器以无效方式拒绝, 冲洗器无法读取的收件箱文件 。 两者在降落之前都经过编辑(无法编辑的收件箱文件被删除,从不保存在清晰处);从未重新检查,保存在检查室) | 0700 (英语) |
~/.aptivus/profiles/<name>/spool/state.json | 序列计数器、语录光标、这些光标所属的账户以及快速文本(用于加入钩子和语录提示)的sha256散列。 无文本 | 0600 时 |
~/.aptivus/profiles/<name>/credentials.json | 那个账户是设备代号 | 0600 时 |
~/.aptivus/profiles/<name>/config.json | URL, org, 捕获模式. 没有秘密 | 0600 时 |
~/.aptivus/profiles/<name>/device.json | 那个档案 install_id | 0600 时 |
~/.aptivus/profiles/<name>/logs/connector.log | 计数,规则编号,出错. 永远不要提示文本、 令牌或密钥 | 0600 时 |
~/.claude/settings.json | 5个钩子条目,以下列举. 文件内的其他所有内容都未被更改;先写出一个时间标记的备份. 在 Windows 上,每个条目名称 Git Bash 明确(参见 窗口(中文(简体) ) | —— 说 |
添加了 Hook 项( 每个项都以不同的参数运行相同的脚本 ) :
| 活动 | 参数 | 超时 | 剧本做什么 |
|---|---|---|---|
UserPromptSubmit | prompt | 5号 | 拼接有效载荷 |
SessionStart | start | 10岁 | 拼接有效载荷 |
Stop | stop | 10岁 | 将有效载荷集合,启动冲洗机 |
SubagentStop | stop | 10岁 | 与 Stop: 子代理完成是当其笔录值得阅读时 |
SessionEnd | end | 10岁 | 将有效载荷集合,启动冲洗机 |
脚本不打印(a) UserPromptSubmit 钩子会被注射
),并在每个路径上退出 0,包括一个完整的磁盘或一个
缺少 spool 目录 。 测量:每次引用~7ms,p95 8ms,包括
额外读取解决活性剖面;预算为50ms
测试套房说它.
aptivus uninstall 完全删除了这五个条目,没有其他内容.
aptivus install --managed 打印块以覆盖整块
managed-settings.json 而不是写任何东西.
删除连接器告诉组织
aptivus uninstall 财务报告和审定财务报表 aptivus logout 都说 在他们做任何事情之前,
组织的所有者和管理人员会得知 抓获行动停止
这台机器 什么时候 他们要求你确认并提供理由
组织看到您打的字。 然后一个小消息去
摄入服务器 — 命令运行、 原因、 连接器版本、 时间
——而后才取出钩子或活字.
$ aptivus uninstall
Capture stops on this machine once the hooks are removed.
Acme's owners and admins will be told that it stopped, when, and the reason you give below.
Continue with uninstall? [y/N] y
Reason (optional, shown to the organization): laptop handed back
Acme has been told.
Removed UserPromptSubmit, SessionStart, Stop, SessionEnd entries from ~/.claude/settings.json
--yes 跳过问题和 --reason "<text>" 提供原因,因为
剧本. 没有终点站,没有 --yes 命令拒绝而不是
猜测。 如果无法到达服务器,命令会这样说并继续:
这是你的机器 服务器上没有什么能让你离开的 A 类
个人工作空间不通知任何人——它唯一的主人就是你.
连接器永远不会做什么: 继续运行,直到你把它拆掉,放自己
退后,或者躲起来。 如果用手删除软件包或钩子条目,则无
被发送,因为没有其他东西可以发送
机器开始 安静 (三个工作日没有批发,而你继续签)
在其设置 ~代理页面上,这是真实的版本
同样的事实。 需要清除的组织不可能从
Claude Code 管理的设置, 不是来自此软件包
docs/MANAGED-SETTINGS.md。 。 。 .
APTIVUS_HOME 覆盖 ~/.aptivus。 。 。 . CLAUDE_CONFIG_DIR 覆盖 ~/.claude。 。 。 .
APTIVUS_PROFILE 覆盖一个命令的活性配置文件.
一台机器上有几个账户
一个设备属于一个人: 服务器拒绝让第二个账户声明
a 一个 install_id 已经属于别人, 和警卫不是
谈判。 所以,第二个账户有自己的 配置文件,带有自己的设备
身份、标志、设置和集合(D-039).
aptivus login --profile work # sign in, creating the profile
aptivus profile list # every account on this machine
aptivus profile use personal # switch
aptivus profile # which one is active
你的第一个 aptivus login 不需要这些 : 它创建一个以名称命名的配置文件
你签到的组织.
档案保存了它的生命记录,和 --profile 如何是第二个
来了. 平面 aptivus login 更新账户的符号配置文件
已持有; 签名 不同 并拒绝它
要运行代替。 在批准屏幕上选择另一个组织算作
因为每个组织都有一个设备行.
这是强制执行的,而不是建议,因为替代办法是无形的.
state.json 每一届会已发送多少次
组织。 重新使用目录到另一个账户和已存在的会话
进展分成:第一个组织保留它所拥有的,第二个组织接受
其余部分在同一会话下 id和开始时间, 没有任何标记 要么一半
作为部分。 因为每一层都是自己的
半个 在警卫存在之前测量过:一个组织的1843起事件和1起事件
在另一段,用于一次对话(D-049).
游泳池也记录它所属的账户 所以冲水机停了
而不是从另一个账户的光标中发送 aptivus status 财务报告和审定财务报表 aptivus doctor 两者都报告,任何事物在保存期间都不被读取或耗尽.
你输入一个信息 只能寄到那个账户
组织. 游泳池住在档案里,所以一个冲水机在跑
personal 无法看到,更不要说发送了
work。切换配置文件时会将其它配置文件的队列留在原地;
aptivus status 告诉你,它正在等待, 它被发送的下一次
配置文件已激活 。 如果在账户之间共用一个共享,那就更简单了
建造,正是这种设计是为了防止泄漏.
如果在无法解析配置文件时——在升级期间——钩子运行,例如:
活动去 ~/.aptivus/unattributed/ 而不是被猜想成一个
简介。 无所失去,无所归咎于错误的组织.
这些事件在完全存在一个特征时自动通过,因为
那末,对于两个或两个以上的人,是毫不含糊的, aptivus status 报告他们和
你决定.
在配置文件不需要动作前从版本升级:第一个命令,或 ,将您现有的设置移动到以您命名的配置文件 包括组织、标志和排队池.
每个剖面图是仪表板中一个单独的设备行,这是诚实的——它们 是分别的身份 将它们组合在一个机器下是后来的改进.
机器留下的东西
只不过什么 @aptivus/schema 定义,并仅在此机器被修改后.
每个会话: 工作目录, 常态化的 git 远程
(单位:千美元)host/owner/repo和分支,克劳德代码版本.
每提示:被编辑的文本及其原始长度. 每个模型响应:
编辑了可见文本、长度、模型、符号使用、工具名称
电话 每个工具调用: 已编辑的大小封装输入和长度
结果。 绝不默认:思考内容或工具结果——只长度.
从来没有, 在元数据模式( N)aptivus config capture_mode metadata任何东西
超过长度和数.
每个组织都选择采用工具结果和思维 (连接器0.1.6,
页:1 拥有者或管理员在设置下各自打开 ~
组织; 连接器以同样的方式学习图像捕捉
(单位:千美元)GET /v1/policy,缓存10分钟,显示于 aptivus status)而且仅此而已
然后请记录员保存文本。 都一样
编辑为提示此机器。 工具结果超过 64 KB 或信件
考虑超过32KB 被发送作为它的长度,从来没有被截取。 无礼
重新检查组织每批货的开关 并且不存储
组织不允许,无论联系人发送什么。 元数据模式
覆盖两个开关.
代理运行是会话的一部分 (连接器0.17,迁移0035,
D-059 (英语). 当克洛德代码旋转出一个子剂——叉子,一个探索剂——它
在会话旁边将代理的对话写入自己的文件
(单位:千美元)<session>/subagents/agent-<id>.jsonl) (中文(简体) ). 冲洗机也分析那些文件,
每逢它离开的地方,每一件事情 agent
参考文献: 运行的 id, the Agent 给孕育它的母体打电话
类型和描述。 被俘虏的正是被俘虏的
主要对话——它作为迅速提供的简报、答复和
符号使用、其工具调用输入、工具结果或思维
在同一组织下开关。 代理人的书状不算为一份
;其转弯和工具呼叫被算作工作.
每个事件都记录了 校正规则,从来没有匹配.
管道的运行情况
hook ──▶ spool/inbox ──▶ flusher: ──▶ spool/outbox ──▶ POST /v1/ingest
· read inbox, assign seq per session
· parse the transcript (version-aware)
· join prompts to responses (prompt id, then text)
· redact
· write batches, then state, then delete inbox
· send with backoff; quarantine 4xx
A hook-started flusher waits up to 60s (APTIVUS_FLUSH_LOCK_WAIT_MS) for a
running one to finish, then runs; after each pass it re-scans the inbox
and runs again while new files exist. So the SessionEnd that lands one
second after the Stop hook's flusher started is never left for the next
session. `aptivus flush` waits 5s and says if another flusher is running.
冲洗机由 stop 财务报告和审定财务报表 end 钩子是克劳德代码
从不等待它。 它需要锁, 所以两个永远不跑一次。 一切尽在
"发送"工作下线;平面上的开发者一无所失,再试再发送
相同的字节 client_batch_id 所以服务器会崩溃.
aptivus flush 用手操作它. aptivus doctor 检查安装.
关联
从钩子(即刻,有文字)和从
记录(后来,与克洛德密码) promptId) (中文(简体) ). 冲水机和他们一起
当钩子提供了一个时, 便捷 ID , 否则通过文本 。 答复的原因是:
其通过笔录的母链迅速; correlation 活动
说我们有多确定exact, (中文(简体) ), inferred, (中文(简体) ), unmatched) (中文(简体) ). 钩子永远不要
钩子是安装在中段的,比如说,是从
而不是丢失.
兼容性矩阵
钩子合同有记载且稳定. 笔录格式为内部
至 Claude 代码和漂移
记录和保存无法解析的生线(parse_failure 因此,他们
可以在以后进行再处理。 见 src/transcript/ 及其固定装置.
| 克劳德代码 | 状态 | 页:1 |
|---|---|---|
| 2.1.278 (中文(简体) ) | 已核实 | 金丝雀固定在 test/fixtures/transcripts/ |
| 2.1.x(其他) | 预定工作 | 相同的解析器; 校验时添加固定符 |
| < 2.1 | 不支持 | 无固定; 数据保存为 parse_failure 事件 |
运行本之后的新版本 docs/AGENT-ROLES.md §Version相容性.
果壳覆盖. 钩为 POSIX 所写 sh这里的套房运行它
不管怎么样 sh 机器有(bash on this one;破折号没有安装).
在第一次外部发布前, CI 必须运行 test/hook-script.test.ts 下级
破折号( Debian/ Ubuntu) /bin/sh), macOS (中文(简体) ) /bin/sh 和Git为 Windows' bash,
包括敌对的有效载荷。 "读作POSIX"不是测试. 窗口
没有 Windows 就可以测试的棋子 — bash 发现, 设置
输入,路径拼写——在 test/windows.test.ts。 。 。 .
Auth 服务器合同
aptivus login 是 OAuth 2. 0 授权代码 + PKCE 有回转
转向 仪表板apps/web必须执行:
GET <auth_url>/cli/authorize - 一页 查询参数 :
response_type=code, (中文(简体) ), client_id=aptivus-connector, (中文(简体) ), code_challenge, (中文(简体) ),
code_challenge_method=S256, (中文(简体) ), redirect_uri (总是)
http://127.0.0.1:<port>/callback, (中文(简体) ), state, (中文(简体) ), install_id, (中文(简体) ), device_name, (中文(简体) ),
connector_version。页面认证用户,让他们选择一个 Org,
记录设备,并重定向到 redirect_uri?code=…&state=… (或
?error=access_denied&state=…) (中文(简体) ).
POST <auth_url>/api/cli/token - JSON体质
{ grant_type: "authorization_code", client_id, code, code_verifier, redirect_uri, install_id }。服务器验证 S256(code_verifier) 等于
存储的挑战,薄荷 一种设备瞄准符,只存储其散列
(单位:千美元)agent_tokens,并返回:
{
"token": "apt_live_<32 base64url chars>",
"token_hint": "apt_live_3f9a2b…",
"org": { "id": "uuid", "slug": "acme", "name": "Acme" },
"user": { "email": "[email protected]" },
"ingest_url": "https://ingest.aptivus.dev",
"expires_at": null
}
错误使用 IngestError 形状从 @aptivus/schema 这样CLI就可以显示
页:1 request_id。CLI 打印每个情况下的授权 URL,因为 SSH
会话没有可打开的浏览器 .
托肯存储
第1阶段将令牌存储在 ~/.aptivus/profiles/<name>/credentials.json 与模式0600。 这个
OS 键链后端坐落在相同的后面 CredentialStore 界面和为
尚未执行,具体原因有两个:macOS security add-generic-password -w
在进程 argv 上设置该秘密,可见于 ps 人类生命
调用,和 Linux secret-tool 键环- 解锁上的块提示
脱开的背景冲洗器永远无法回答. 两者都需要设计,而不是
午间. 作为第一阶段的后续行动跟踪.
开发
npm test -w @aptivus/connector # runs on source via Node's type stripping
npm run build # from the repo root
APTIVUS_HOME=/tmp/x CLAUDE_CONFIG_DIR=/tmp/c node -e 'import("./src/cli.ts").then(m=>m.main(["install"]))'
一次性依赖: zod (D-017) (中文(简体) ). 电线合同, @aptivus/schema,为
编成已出版的捆绑,而不是同时安装——一个
软件包,一个版本,一个用户无法解决.
平台支持在此文件的顶端声明,并由
aptivus install,不留待发现.