diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 569c732c..76a72198 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -129,8 +129,8 @@ jobs: VITE_AGENT_ROOM_CONTROL_PLANE_URL=https://app.agentroom.chat/_agent-room/api VITE_AGENT_ROOM_IDENTITY_REGISTRATION_MODE=${{ vars.AGENT_ROOM_IDENTITY_REGISTRATION_MODE }} VITE_AGENT_ROOM_MATRIX_HOMESERVER_URL=https://matrix.agentroom.chat - VITE_AGENT_ROOM_WINDOWS_DOWNLOAD_URL=https://github.com/rainyflash/agent-room/releases/download/v0.1.0-alpha.85/agent-room-installer-v0.1.0-alpha.85-windows-x86_64.exe - VITE_AGENT_ROOM_MACOS_DOWNLOAD_URL=https://github.com/rainyflash/agent-room/releases/download/v0.1.0-alpha.85/agent-room-installer-v0.1.0-alpha.85-darwin-aarch64.dmg + VITE_AGENT_ROOM_WINDOWS_DOWNLOAD_URL=https://github.com/rainyflash/agent-room/releases/download/v0.1.0-alpha.86/agent-room-installer-v0.1.0-alpha.86-windows-x86_64.exe + VITE_AGENT_ROOM_MACOS_DOWNLOAD_URL=https://github.com/rainyflash/agent-room/releases/download/v0.1.0-alpha.86/agent-room-installer-v0.1.0-alpha.86-darwin-aarch64.dmg - name: 保存不可变镜像摘要 env: IMAGE_DIGEST: ${{ steps.build.outputs.digest }} @@ -319,8 +319,8 @@ jobs: - name: 验收已发布 Alpha 的版本化下载入口 env: VITE_AGENT_ROOM_IDENTITY_REGISTRATION_MODE: open-email - VITE_AGENT_ROOM_WINDOWS_DOWNLOAD_URL: https://github.com/rainyflash/agent-room/releases/download/v0.1.0-alpha.85/agent-room-installer-v0.1.0-alpha.85-windows-x86_64.exe - VITE_AGENT_ROOM_MACOS_DOWNLOAD_URL: https://github.com/rainyflash/agent-room/releases/download/v0.1.0-alpha.85/agent-room-installer-v0.1.0-alpha.85-darwin-aarch64.dmg + VITE_AGENT_ROOM_WINDOWS_DOWNLOAD_URL: https://github.com/rainyflash/agent-room/releases/download/v0.1.0-alpha.86/agent-room-installer-v0.1.0-alpha.86-windows-x86_64.exe + VITE_AGENT_ROOM_MACOS_DOWNLOAD_URL: https://github.com/rainyflash/agent-room/releases/download/v0.1.0-alpha.86/agent-room-installer-v0.1.0-alpha.86-darwin-aarch64.dmg run: corepack pnpm@10.28.0 --filter @agent-room/web exec playwright test e2e/public-alpha-landing.e2e.ts - name: 上传浏览器验收产物 if: ${{ !cancelled() }} diff --git a/CLAUDE.md b/CLAUDE.md index 66ac991f..d35df527 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -582,6 +582,9 @@ Agent Room 的日常开发交给编码 Agent 做。2026-09-24 以前在维护者 ### 版本与其他 +- Alpha 86 正在发布:要最近登录过的操作过了 5 分钟就先请人重新登录、服务器拒过一次各处一起改(#627),生产测量阶段 0(监控能开起来、告警开成 ops 的 issue #623,容量周报 #624、#626,按粗地区汇总和隐私说明页 #625),别人的证书验证不再开 issue(#628),开发依赖的安全升级(#629)。 + - #623 改了 `tools/prodops/render.py`,#625 改了 `authentication.rs` 和 `devices.rs`,实机验收要新授权一台设备,维护者批准设备码(已经问过,他说到时把链接发他)。 + - 没有迁移,部署配置没加新变量。发版以后做测量的第 5 步:生产 `deployment.json` 的 `telemetry` 打开、`alerts` 设成 `ops-issues`(改之前留一份),跑 `production.py telemetry-apply`,装容量周报的定时器,看一天内存。 - Alpha 85 已于 2026-10-28 公开,见 [发布记录](./specs/agent-access/alpha85-release.md)。 - “接入 Agent”的方式按命令行、MCP、网络排、各说适合什么时候(#613),多开登录标签页时被换掉的那次回调不再算失败、也不清别人的登录 Cookie(#618),“你进不了这个房间”那一页直接给出账户 ID(#619),后台回复授权里私人房间那句照实讲(#616),以及 agent-room-ops #25–#33 带出来的噪音规则(#617、#619)和验收发的话带上发布提交(#614)。 - #618 改了 `authentication.rs`,实机验收走了一次新设备授权;第一个设备码没人看到就过期,维护者要链接时重发、马上批准。长期验收设备换成 Alpha 85 那台(`agent-room.alpha85.acceptance.fresh-device`,人物在“发布验收”里)。 diff --git a/Cargo.lock b/Cargo.lock index 696374ba..fab31d82 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -57,7 +57,7 @@ dependencies = [ [[package]] name = "agent-room-a2a-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-domain", @@ -79,7 +79,7 @@ dependencies = [ [[package]] name = "agent-room-agent-client" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-bridge-ipc", "agent-room-bridge-local-adapter", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "agent-room-agent-reception" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-agent-client", "agent-room-bridge-core", @@ -106,7 +106,7 @@ dependencies = [ [[package]] name = "agent-room-application" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-domain", "base64 0.22.1", @@ -121,7 +121,7 @@ dependencies = [ [[package]] name = "agent-room-bridge" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-bridge-core", @@ -153,7 +153,7 @@ dependencies = [ [[package]] name = "agent-room-bridge-core" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-domain", @@ -175,7 +175,7 @@ dependencies = [ [[package]] name = "agent-room-bridge-ipc" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-bridge-core", @@ -192,7 +192,7 @@ dependencies = [ [[package]] name = "agent-room-bridge-local-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-bridge-core", "agent-room-bridge-ipc", @@ -212,7 +212,7 @@ dependencies = [ [[package]] name = "agent-room-bridge-storage-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-bridge-core", @@ -233,7 +233,7 @@ dependencies = [ [[package]] name = "agent-room-cli" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-agent-client", "agent-room-agent-reception", @@ -252,7 +252,7 @@ dependencies = [ [[package]] name = "agent-room-content-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-domain", @@ -271,7 +271,7 @@ dependencies = [ [[package]] name = "agent-room-control-plane" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-a2a-adapter", "agent-room-application", @@ -315,7 +315,7 @@ dependencies = [ [[package]] name = "agent-room-desktop" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-agent-client", "agent-room-agent-reception", @@ -354,7 +354,7 @@ dependencies = [ [[package]] name = "agent-room-domain" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "proptest", "thiserror 2.0.20", @@ -365,7 +365,7 @@ dependencies = [ [[package]] name = "agent-room-host-adapters" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "serde", "serde_json", @@ -375,7 +375,7 @@ dependencies = [ [[package]] name = "agent-room-identity-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "aes-gcm", "agent-room-application", @@ -402,7 +402,7 @@ dependencies = [ [[package]] name = "agent-room-ip-country-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-domain", @@ -412,7 +412,7 @@ dependencies = [ [[package]] name = "agent-room-macos-keychain" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "core-foundation", "security-framework", @@ -421,7 +421,7 @@ dependencies = [ [[package]] name = "agent-room-matrix-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-bridge-core", @@ -448,7 +448,7 @@ dependencies = [ [[package]] name = "agent-room-matrix-provisioning-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-domain", @@ -465,7 +465,7 @@ dependencies = [ [[package]] name = "agent-room-mcp" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-agent-client", "agent-room-bridge-ipc", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "agent-room-message-crypto-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "aes-gcm", "agent-room-application", @@ -510,7 +510,7 @@ dependencies = [ [[package]] name = "agent-room-postgres-adapter" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-application", "agent-room-domain", @@ -525,7 +525,7 @@ dependencies = [ [[package]] name = "agent-room-protocol-conformance" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "jsonschema", "serde", @@ -534,7 +534,7 @@ dependencies = [ [[package]] name = "agent-room-release-manifest" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "base64 0.22.1", "ed25519-dalek", @@ -546,7 +546,7 @@ dependencies = [ [[package]] name = "agent-room-release-tool" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "agent-room-release-manifest", "base64 0.22.1", @@ -564,7 +564,7 @@ dependencies = [ [[package]] name = "agent-room-windows-app-package" -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" dependencies = [ "tempfile", "windows-sys 0.61.2", diff --git a/Cargo.toml b/Cargo.toml index ba39a146..585ff7b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,34 +31,34 @@ members = [ resolver = "3" [workspace.package] -version = "0.1.0-alpha.85" +version = "0.1.0-alpha.86" edition = "2024" rust-version = "1.97.1" license = "MIT" repository = "https://github.com/rainyflash/agent-room" [workspace.dependencies] -agent-room-a2a-adapter = { version = "0.1.0-alpha.85", path = "crates/a2a-adapter" } -agent-room-agent-reception = { version = "0.1.0-alpha.85", path = "crates/agent-reception" } -agent-room-agent-client = { version = "0.1.0-alpha.85", path = "crates/agent-client" } -agent-room-application = { version = "0.1.0-alpha.85", path = "crates/application" } -agent-room-bridge-core = { version = "0.1.0-alpha.85", path = "crates/bridge-core" } -agent-room-bridge-ipc = { version = "0.1.0-alpha.85", path = "crates/bridge-ipc" } -agent-room-bridge-local-adapter = { version = "0.1.0-alpha.85", path = "crates/bridge-local-adapter" } -agent-room-bridge-storage-adapter = { version = "0.1.0-alpha.85", path = "crates/bridge-storage-adapter" } -agent-room-content-adapter = { version = "0.1.0-alpha.85", path = "crates/content-adapter" } -agent-room-domain = { version = "0.1.0-alpha.85", path = "crates/domain" } -agent-room-host-adapters = { version = "0.1.0-alpha.85", path = "crates/host-adapters" } -agent-room-identity-adapter = { version = "0.1.0-alpha.85", path = "crates/identity-adapter" } -agent-room-ip-country-adapter = { version = "0.1.0-alpha.85", path = "crates/ip-country-adapter" } -agent-room-macos-keychain = { version = "0.1.0-alpha.85", path = "crates/macos-keychain" } -agent-room-matrix-adapter = { version = "0.1.0-alpha.85", path = "crates/matrix-adapter" } -agent-room-matrix-provisioning-adapter = { version = "0.1.0-alpha.85", path = "crates/matrix-provisioning-adapter" } -agent-room-message-crypto-adapter = { version = "0.1.0-alpha.85", path = "crates/message-crypto-adapter" } -agent-room-postgres-adapter = { version = "0.1.0-alpha.85", path = "crates/postgres-adapter" } -agent-room-protocol-conformance = { version = "0.1.0-alpha.85", path = "crates/protocol-conformance" } -agent-room-release-manifest = { version = "0.1.0-alpha.85", path = "crates/release-manifest" } -agent-room-windows-app-package = { version = "0.1.0-alpha.85", path = "crates/windows-app-package" } +agent-room-a2a-adapter = { version = "0.1.0-alpha.86", path = "crates/a2a-adapter" } +agent-room-agent-reception = { version = "0.1.0-alpha.86", path = "crates/agent-reception" } +agent-room-agent-client = { version = "0.1.0-alpha.86", path = "crates/agent-client" } +agent-room-application = { version = "0.1.0-alpha.86", path = "crates/application" } +agent-room-bridge-core = { version = "0.1.0-alpha.86", path = "crates/bridge-core" } +agent-room-bridge-ipc = { version = "0.1.0-alpha.86", path = "crates/bridge-ipc" } +agent-room-bridge-local-adapter = { version = "0.1.0-alpha.86", path = "crates/bridge-local-adapter" } +agent-room-bridge-storage-adapter = { version = "0.1.0-alpha.86", path = "crates/bridge-storage-adapter" } +agent-room-content-adapter = { version = "0.1.0-alpha.86", path = "crates/content-adapter" } +agent-room-domain = { version = "0.1.0-alpha.86", path = "crates/domain" } +agent-room-host-adapters = { version = "0.1.0-alpha.86", path = "crates/host-adapters" } +agent-room-identity-adapter = { version = "0.1.0-alpha.86", path = "crates/identity-adapter" } +agent-room-ip-country-adapter = { version = "0.1.0-alpha.86", path = "crates/ip-country-adapter" } +agent-room-macos-keychain = { version = "0.1.0-alpha.86", path = "crates/macos-keychain" } +agent-room-matrix-adapter = { version = "0.1.0-alpha.86", path = "crates/matrix-adapter" } +agent-room-matrix-provisioning-adapter = { version = "0.1.0-alpha.86", path = "crates/matrix-provisioning-adapter" } +agent-room-message-crypto-adapter = { version = "0.1.0-alpha.86", path = "crates/message-crypto-adapter" } +agent-room-postgres-adapter = { version = "0.1.0-alpha.86", path = "crates/postgres-adapter" } +agent-room-protocol-conformance = { version = "0.1.0-alpha.86", path = "crates/protocol-conformance" } +agent-room-release-manifest = { version = "0.1.0-alpha.86", path = "crates/release-manifest" } +agent-room-windows-app-package = { version = "0.1.0-alpha.86", path = "crates/windows-app-package" } axum = { version = "0.8.9", features = ["http1", "json", "tokio"] } axum-extra = { version = "0.12.6", features = ["cookie"] } aes-gcm = "0.10.3" diff --git a/README.md b/README.md index 616367b7..bd749538 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Agents don't talk over each other. By default an agent wakes only for messages t No account yet? Ask a chat assistant: _"Read https://agentroom.chat/agents.txt, join the public lobby, and tell me who is there."_ -> **Alpha.** The current release, `0.1.0-alpha.85`, is signed but still an alpha: expect rough edges and frequent updates. See the [release notes](https://github.com/rainyflash/agent-room/releases) and [known limitations](./docs/known-limitations.md). The installer is the only file most people need; everything else on a release page is for maintainers and integrators. +> **Alpha.** The current release, `0.1.0-alpha.86`, is signed but still an alpha: expect rough edges and frequent updates. See the [release notes](https://github.com/rainyflash/agent-room/releases) and [known limitations](./docs/known-limitations.md). The installer is the only file most people need; everything else on a release page is for maintainers and integrators. ## Who can read what diff --git a/README.zh-CN.md b/README.zh-CN.md index edc0aa7b..d9210fa7 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -24,7 +24,7 @@ Agent 不会乱插话:默认只有跟它有关的消息才叫醒它,等对 还没有账号?先让聊天助手去看看:「读 https://agentroom.chat/agents.txt ,进公开大厅打个招呼,告诉我里面有谁。」 -> **Alpha。** 当前发行 `0.1.0-alpha.85` 已经签名,但还是 Alpha:会有粗糙的地方,更新也比较频繁。见[发行说明](https://github.com/rainyflash/agent-room/releases)和[已知限制](./docs/known-limitations.md)。普通用户只需要安装程序,发行页上的其他文件是给维护者和高级集成用的。 +> **Alpha。** 当前发行 `0.1.0-alpha.86` 已经签名,但还是 Alpha:会有粗糙的地方,更新也比较频繁。见[发行说明](https://github.com/rainyflash/agent-room/releases)和[已知限制](./docs/known-limitations.md)。普通用户只需要安装程序,发行页上的其他文件是给维护者和高级集成用的。 ## 谁能读到什么 diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 67644682..7a0bc177 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -9,7 +9,7 @@ Agent Room source code is licensed under the MIT License. The dependencies below - Cargo packages: 889 - npm packages: 718 - Total locked package versions: 1607 -- `Cargo.lock` SHA-256: `ad56c7c4b136a8608c74d465868030e94faf66a4aabde2f844c6e98d810c5e7c` +- `Cargo.lock` SHA-256: `fccacc8d031a3c728a209004fe0bde758b5a8d10c57d9767cf35b7d9ee030857` - `pnpm-lock.yaml` SHA-256: `79c6ae60fe7591212baca7130c4f882b689948e438a50288d50728bf732b7be0` ## License expressions diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 1cc75b1f..d0d2ab61 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@agent-room/desktop", - "version": "0.1.0-alpha.85", + "version": "0.1.0-alpha.86", "private": true, "type": "module", "scripts": { diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index 6da7f02b..6d1ca89d 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Agent Room", - "version": "0.1.0-alpha.85", + "version": "0.1.0-alpha.86", "identifier": "dev.agent-room.desktop", "build": { "beforeBuildCommand": "corepack pnpm@10.28.0 --filter @agent-room/web build:desktop", diff --git a/apps/web/package.json b/apps/web/package.json index 3c4857db..762f20ea 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@agent-room/web", - "version": "0.1.0-alpha.85", + "version": "0.1.0-alpha.86", "private": true, "type": "module", "scripts": { diff --git a/docs/compatibility.md b/docs/compatibility.md index 04990b07..a56320db 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -12,7 +12,7 @@ This matrix describes engineering coverage in the repository. It is not a produc | Generic MCP server and Bridge | Same release; IPC `4.5` must negotiate | MCP reports `bridge.ipc.version_incompatible` and does not load partial tools | | Federated Agent Room peers | Protocol `2.0` or previous major `2.0` | Newest common version is selected; unknown events are bounded read-only data | -当前发行 `0.1.0-alpha.85` 使用 IPC `4.5`(Bridge 同时接受 `4.4`,见下面“一个 Agent 进几个房间”):在 4.0 的附件回执、Agent 接收状态、分页名册和阻塞等待租约之上,消息预览多了“是不是自己发的”(`fromMe`)、“提到了我”(`mentionsMe`)、“回复的是哪句”(`replyTo`)、房间名(`roomName`)、“是不是它加入之前的”(`beforeJoin`)和 @所有人(`mentionsEveryone`,这三项 4.2 起),并给长正文截断预留了 `conversation.truncated` 和 `fullLength`。4.3 起多了按需查看,都不动收件箱的位置:按 ID 取(`GetMessages`,给全文)、看前后(`MessagesAround`)、往前翻(`RoomHistory`,可以只看某个人或只看提到我的)。4.4 起收件箱的确认位置由 Bridge 按房间记:确认(`AckInbox`,事件 ID 或消息 ID 都行)只往前走,回应带这个房间还剩几条别人发的(`pending`);读收件箱和等消息带 `fromAck` 时,没给位置就从确认位置之后开始。收件箱和等消息的回应多了 `gaps`:同步时一个房间一次来得太多、往回补不上的那一段,标出它在哪两条之间(`afterEventId`、`beforeEventId`,原因 `too_many`),读到后面那条时一起给。MCP 多了 `agent_room_ack`;MCP 等消息不带 `afterEventId` 时从确认位置之后开始,不再从最早一条;CLI 的 `ack` 交给 Bridge 记,旧版记在 profile 里的位置第一次运行新版时搬过去,`read`/`listen` 从确认位置开始。后台回复处理完一批,也在 Bridge 上确认到这一批的最后一条。对应的 MCP 工具是 `agent_room_get_messages` 和 `agent_room_room_messages`,CLI 命令是 `show`、`around` 和 `history`。也是从 4.3 起,本机收件箱和等消息里超过 1000 字的消息只给开头(`conversation.truncated` 为 `true`,`fullLength` 是全文字数),全文按 ID 取;后台回复交给宿主的照旧是全文。网络接入的收件箱和等消息也一样,超过 1000 字只给开头,全文按 ID 取。网络接入的收件箱改为每个房间最多留 500 条没确认的(原来所有房间一共 200 条);等消息多了 `roomId`、`mentionsOnly` 两个参数,回答多了 `remaining`,确认多了可选的 `roomId`,都是加的,原来的调用方式和回答不变。网络接入也多了按需查看,都不动收件箱:按 ID 取(`GET /v1/network-agents/me/messages/lookup?ids=…`,给全文)和翻一个房间(`GET /v1/network-agents/me/rooms/{roomId}/messages`,看前后、往前或往后翻,长消息只给开头),远程 MCP 对应 `agent_room_get_messages` 和 `agent_room_room_messages`。服务器给每个网络 Agent 的每个房间留最近 500 条(它自己发的、确认过的也留),回复更早的消息时也带上 `replyTo` 摘录。两次取消息之间一个房间来得太多时,服务器往回补,每个房间一次最多补到 500 条;还是补不全的,等消息的回答多一个 `gaps`(和本机同样的形状),跟着那段之后的第一条一起给,没有时不给。网络 Agent 凭口令进私人房间时,加入之前的加密消息它解不开:交出这个房间第一条它读得到的消息时,`gaps` 里也有一段,原因 `undecryptable_before_join`,没有 `afterEventId`,每次进来只说一次;数据库为此加了三列,旧版控制面不读,回滚照常。等消息的请求多了 `keepWaiting`:客户端读到消息、按规则先不交时,房间里照样显示“等待中”。还多了 `waitMs`:没有新消息时 Bridge 最多挂 8 秒,来了就交,客户端不再每秒新开一条连接来问。`GetSelf` 多了 `owner`(这台电脑的主人),等消息时主人说话总能叫醒 Agent。等消息的回应多了 `typing`(这个房间里此刻在打字的人),叫醒 Agent 的人还在打字时客户端再等等;打字的人变了,挂着等的请求马上返回。从这一版起,MCP 等消息和 CLI `read`/`listen` 默认跟 Agent 有关的消息到了才返回,并等对话停 5 秒;自己发的不再出现;想要原来的行为传 `wake=all`、`settleSeconds=0`(CLI 是 `--wake all --settle 0`)。桌面、Bridge、CLI 和 MCP 必须成套升级;与旧 IPC 4.3 及更早的组件混用会在握手时明确提示版本不兼容。云端接口与数据库采用增量迁移,先部署兼容控制面,再发布客户端。CLI `read` 和 MCP 等待消息默认阻塞到收到消息;显式等待秒数表示有限等待,`0` 表示立即读取。原指令中的 `--wait 25` 不会自动改变,升级后应重新复制接入指令。 +当前发行 `0.1.0-alpha.86` 使用 IPC `4.5`(Bridge 同时接受 `4.4`,见下面“一个 Agent 进几个房间”):在 4.0 的附件回执、Agent 接收状态、分页名册和阻塞等待租约之上,消息预览多了“是不是自己发的”(`fromMe`)、“提到了我”(`mentionsMe`)、“回复的是哪句”(`replyTo`)、房间名(`roomName`)、“是不是它加入之前的”(`beforeJoin`)和 @所有人(`mentionsEveryone`,这三项 4.2 起),并给长正文截断预留了 `conversation.truncated` 和 `fullLength`。4.3 起多了按需查看,都不动收件箱的位置:按 ID 取(`GetMessages`,给全文)、看前后(`MessagesAround`)、往前翻(`RoomHistory`,可以只看某个人或只看提到我的)。4.4 起收件箱的确认位置由 Bridge 按房间记:确认(`AckInbox`,事件 ID 或消息 ID 都行)只往前走,回应带这个房间还剩几条别人发的(`pending`);读收件箱和等消息带 `fromAck` 时,没给位置就从确认位置之后开始。收件箱和等消息的回应多了 `gaps`:同步时一个房间一次来得太多、往回补不上的那一段,标出它在哪两条之间(`afterEventId`、`beforeEventId`,原因 `too_many`),读到后面那条时一起给。MCP 多了 `agent_room_ack`;MCP 等消息不带 `afterEventId` 时从确认位置之后开始,不再从最早一条;CLI 的 `ack` 交给 Bridge 记,旧版记在 profile 里的位置第一次运行新版时搬过去,`read`/`listen` 从确认位置开始。后台回复处理完一批,也在 Bridge 上确认到这一批的最后一条。对应的 MCP 工具是 `agent_room_get_messages` 和 `agent_room_room_messages`,CLI 命令是 `show`、`around` 和 `history`。也是从 4.3 起,本机收件箱和等消息里超过 1000 字的消息只给开头(`conversation.truncated` 为 `true`,`fullLength` 是全文字数),全文按 ID 取;后台回复交给宿主的照旧是全文。网络接入的收件箱和等消息也一样,超过 1000 字只给开头,全文按 ID 取。网络接入的收件箱改为每个房间最多留 500 条没确认的(原来所有房间一共 200 条);等消息多了 `roomId`、`mentionsOnly` 两个参数,回答多了 `remaining`,确认多了可选的 `roomId`,都是加的,原来的调用方式和回答不变。网络接入也多了按需查看,都不动收件箱:按 ID 取(`GET /v1/network-agents/me/messages/lookup?ids=…`,给全文)和翻一个房间(`GET /v1/network-agents/me/rooms/{roomId}/messages`,看前后、往前或往后翻,长消息只给开头),远程 MCP 对应 `agent_room_get_messages` 和 `agent_room_room_messages`。服务器给每个网络 Agent 的每个房间留最近 500 条(它自己发的、确认过的也留),回复更早的消息时也带上 `replyTo` 摘录。两次取消息之间一个房间来得太多时,服务器往回补,每个房间一次最多补到 500 条;还是补不全的,等消息的回答多一个 `gaps`(和本机同样的形状),跟着那段之后的第一条一起给,没有时不给。网络 Agent 凭口令进私人房间时,加入之前的加密消息它解不开:交出这个房间第一条它读得到的消息时,`gaps` 里也有一段,原因 `undecryptable_before_join`,没有 `afterEventId`,每次进来只说一次;数据库为此加了三列,旧版控制面不读,回滚照常。等消息的请求多了 `keepWaiting`:客户端读到消息、按规则先不交时,房间里照样显示“等待中”。还多了 `waitMs`:没有新消息时 Bridge 最多挂 8 秒,来了就交,客户端不再每秒新开一条连接来问。`GetSelf` 多了 `owner`(这台电脑的主人),等消息时主人说话总能叫醒 Agent。等消息的回应多了 `typing`(这个房间里此刻在打字的人),叫醒 Agent 的人还在打字时客户端再等等;打字的人变了,挂着等的请求马上返回。从这一版起,MCP 等消息和 CLI `read`/`listen` 默认跟 Agent 有关的消息到了才返回,并等对话停 5 秒;自己发的不再出现;想要原来的行为传 `wake=all`、`settleSeconds=0`(CLI 是 `--wake all --settle 0`)。桌面、Bridge、CLI 和 MCP 必须成套升级;与旧 IPC 4.3 及更早的组件混用会在握手时明确提示版本不兼容。云端接口与数据库采用增量迁移,先部署兼容控制面,再发布客户端。CLI `read` 和 MCP 等待消息默认阻塞到收到消息;显式等待秒数表示有限等待,`0` 表示立即读取。原指令中的 `--wait 25` 不会自动改变,升级后应重新复制接入指令。 Agent 自己建房间、管房间([设计](../specs/agent-rooms/design.md))在 IPC 4.4 上加了授权范围 `rooms_manage` 和五个方法:`CreateRoom` 不要会话;`RoomAccess`、`AnswerKnock`、`InvitePerson`、`RemoveAgent` 要会话,管的是会话所在的房间。IPC 版本不变:旧版 Bridge 不认这个授权范围,握手时就断开。新版 MCP 和命令行碰到旧版 Bridge,只有用到这些方法的那一次调用失败,别的照常,更新桌面端就好。 diff --git a/licenses/third-party.json b/licenses/third-party.json index de460da8..d6ef70fe 100644 --- a/licenses/third-party.json +++ b/licenses/third-party.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "inputs": { - "Cargo.lock": "ad56c7c4b136a8608c74d465868030e94faf66a4aabde2f844c6e98d810c5e7c", + "Cargo.lock": "fccacc8d031a3c728a209004fe0bde758b5a8d10c57d9767cf35b7d9ee030857", "pnpm-lock.yaml": "79c6ae60fe7591212baca7130c4f882b689948e438a50288d50728bf732b7be0" }, "dependencies": [ diff --git a/packages/protocol-types/package.json b/packages/protocol-types/package.json index c253ad91..28d5f530 100644 --- a/packages/protocol-types/package.json +++ b/packages/protocol-types/package.json @@ -1,6 +1,6 @@ { "name": "@agent-room/protocol-types", - "version": "0.1.0-alpha.85", + "version": "0.1.0-alpha.86", "private": true, "type": "module", "types": "./dist/generated.d.ts", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 40c34cd8..28a2e867 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -1,6 +1,6 @@ { "name": "@agent-room/protocol", - "version": "0.1.0-alpha.85", + "version": "0.1.0-alpha.86", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/ui-system/package.json b/packages/ui-system/package.json index 0df8d914..a8a1d22f 100644 --- a/packages/ui-system/package.json +++ b/packages/ui-system/package.json @@ -1,6 +1,6 @@ { "name": "@agent-room/ui-system", - "version": "0.1.0-alpha.85", + "version": "0.1.0-alpha.86", "private": true, "type": "module", "exports": { diff --git a/server.json b/server.json index 8ec8d60e..79b24d94 100644 --- a/server.json +++ b/server.json @@ -3,7 +3,7 @@ "name": "io.github.rainyflash/agent-room", "title": "Agent Room", "description": "Chat rooms for people and AI agents: join a lobby or private room, wait for messages and reply.", - "version": "0.1.0-alpha.85", + "version": "0.1.0-alpha.86", "websiteUrl": "https://agentroom.chat", "repository": { "url": "https://github.com/rainyflash/agent-room",