From eb31446076e2d17a78849b31029e7020d2cb7671 Mon Sep 17 00:00:00 2001 From: JWeBot Contributors Date: Mon, 19 Oct 2026 18:17:51 +0800 Subject: [PATCH] Release beta 1.2.4.1019 --- CHANGELOG.md | 6 ++++++ README.md | 6 +++--- VERSION | 2 +- docs/command-catalog.md | 2 +- packages/jwebot-config/pyproject.toml | 2 +- .../jwebot-config/src/jwebot_config/__init__.py | 2 +- packages/jwebot-extension-host/pyproject.toml | 6 +++--- .../src/jwebot_extension_host/__init__.py | 2 +- packages/jwebot-kernel/pyproject.toml | 8 ++++---- .../jwebot-kernel/src/jwebot_kernel/__init__.py | 2 +- .../src/jwebot_kernel/edge_runtime.py | 14 +++++++++++--- packages/jwebot-official-extensions/pyproject.toml | 4 ++-- .../src/jwebot_official_extensions/__init__.py | 2 +- packages/jwebot-sdk/pyproject.toml | 2 +- packages/jwebot-sdk/src/jwebot_sdk/__init__.py | 2 +- pyproject.toml | 2 +- tests/test_jwebot_edge.py | 14 ++++++++++---- tests/test_release_update.py | 2 +- 18 files changed, 50 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6da3176..6e9e331 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## beta 1.2.4.1019 - 2026-10-19 18:15:01 + +- 增强 Taffy 对本地游戏结果的理解:闲聊上下文扩大到 25 轮,并明确标注本地命令结果的发送者和类型。 +- Format local command history as tagged context entries so follow-up phrases + like "这一把" can link back to recent blackjack and other game results. + ## beta 1.2.3.1019 - 2026-10-19 18:04:57 - 扩大 Taffy 闲聊可读取的上下文窗口:后续回复现在最多参考最近 15 轮相关对话。 diff --git a/README.md b/README.md index adc83d6..b0bf3e3 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ JWeBot 是运行于 Linux 的单群微信自动回复系统。它通过本地 OC 观察选定的微信窗口,将消息写入持久化 Edge 账本,调用经过审核的命令插件, 并通过带视觉确认的 GUI 发送链路回复。 -当前版本:`beta 1.2.3.1019`,更新时间:2026-10-19 18:04:57。 +当前版本:`beta 1.2.4.1019`,更新时间:2026-10-19 18:15:01。 1.0 Beta 收口了当前稳定功能:本地命令插件、人物与上下文索引、 Steam 状态与时长查询、虚拟摩拉游戏、多人彩票、21 点、CS Major @@ -270,10 +270,10 @@ visually confirmed GUI bridge. Current version: ```text -beta 1.2.3.1019 +beta 1.2.4.1019 ``` -Updated: 2026-10-19 18:04:57. +Updated: 2026-10-19 18:15:01. The 1.0 Beta baseline consolidates the stable local command set, person and context indexes, Steam presence/playtime queries, virtual coin games, diff --git a/VERSION b/VERSION index dc8a17a..263200e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -beta 1.2.3.1019 +beta 1.2.4.1019 diff --git a/docs/command-catalog.md b/docs/command-catalog.md index b83bb77..51e9821 100644 --- a/docs/command-catalog.md +++ b/docs/command-catalog.md @@ -1,6 +1,6 @@ # JWeBot Command Catalog -Current baseline: `beta 1.2.3.1019`. +Current baseline: `beta 1.2.4.1019`. This catalog records the reviewed commands shipped with the built-in local extensions. Runtime ownership is frozen at startup from the generated diff --git a/packages/jwebot-config/pyproject.toml b/packages/jwebot-config/pyproject.toml index fc13ae5..03d0cb0 100644 --- a/packages/jwebot-config/pyproject.toml +++ b/packages/jwebot-config/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "jwebot-config" -version = "1.2.3b1+1019" +version = "1.2.4b1+1019" description = "Profile-based configuration compiler for JWeBot" requires-python = ">=3.9" dependencies = [ diff --git a/packages/jwebot-config/src/jwebot_config/__init__.py b/packages/jwebot-config/src/jwebot_config/__init__.py index 41377c5..64ff353 100644 --- a/packages/jwebot-config/src/jwebot_config/__init__.py +++ b/packages/jwebot-config/src/jwebot_config/__init__.py @@ -36,4 +36,4 @@ __all__ = [ "write_default_profile", ] -__version__ = "1.2.3b1+1019" +__version__ = "1.2.4b1+1019" diff --git a/packages/jwebot-extension-host/pyproject.toml b/packages/jwebot-extension-host/pyproject.toml index ce2dd43..b0741c0 100644 --- a/packages/jwebot-extension-host/pyproject.toml +++ b/packages/jwebot-extension-host/pyproject.toml @@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta" [project] name = "jwebot-extension-host" -version = "1.2.3b1+1019" +version = "1.2.4b1+1019" description = "Single-release, single-invocation process host for JWeBot extensions" requires-python = ">=3.9" dependencies = [ - "jwebot-sdk==1.2.3b1+1019", - "jwebot-kernel==1.2.3b1+1019", + "jwebot-sdk==1.2.4b1+1019", + "jwebot-kernel==1.2.4b1+1019", ] [project.scripts] diff --git a/packages/jwebot-extension-host/src/jwebot_extension_host/__init__.py b/packages/jwebot-extension-host/src/jwebot_extension_host/__init__.py index 100b01c..56cb76c 100644 --- a/packages/jwebot-extension-host/src/jwebot_extension_host/__init__.py +++ b/packages/jwebot-extension-host/src/jwebot_extension_host/__init__.py @@ -16,4 +16,4 @@ __all__ = [ "process_request", ] -__version__ = "1.2.3b1+1019" +__version__ = "1.2.4b1+1019" diff --git a/packages/jwebot-kernel/pyproject.toml b/packages/jwebot-kernel/pyproject.toml index e549f54..c562d2b 100644 --- a/packages/jwebot-kernel/pyproject.toml +++ b/packages/jwebot-kernel/pyproject.toml @@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta" [project] name = "jwebot-kernel" -version = "1.2.3b1+1019" +version = "1.2.4b1+1019" description = "Stable routing and extension authority for JWeBot" requires-python = ">=3.9" dependencies = [ - "jwebot-config==1.2.3b1+1019", - "jwebot-sdk==1.2.3b1+1019", - "jwebot-official-extensions==1.2.3b1+1019", + "jwebot-config==1.2.4b1+1019", + "jwebot-sdk==1.2.4b1+1019", + "jwebot-official-extensions==1.2.4b1+1019", "tomli>=2; python_version < '3.11'", ] diff --git a/packages/jwebot-kernel/src/jwebot_kernel/__init__.py b/packages/jwebot-kernel/src/jwebot_kernel/__init__.py index 62b7387..036c6dd 100644 --- a/packages/jwebot-kernel/src/jwebot_kernel/__init__.py +++ b/packages/jwebot-kernel/src/jwebot_kernel/__init__.py @@ -107,4 +107,4 @@ __all__ = [ "verify_installed_release_signature", ] -__version__ = "1.2.3b1+1019" +__version__ = "1.2.4b1+1019" diff --git a/packages/jwebot-kernel/src/jwebot_kernel/edge_runtime.py b/packages/jwebot-kernel/src/jwebot_kernel/edge_runtime.py index 0b84e37..c3d8734 100644 --- a/packages/jwebot-kernel/src/jwebot_kernel/edge_runtime.py +++ b/packages/jwebot-kernel/src/jwebot_kernel/edge_runtime.py @@ -104,7 +104,7 @@ EXTENSION_SOCKET_ROOT = Path("/run/jwebot-extension-host") MAX_EVENT_TEXT = 5_000 MAX_REPLY_CHARS = 900 -MAX_CONTEXT_TURNS = 15 +MAX_CONTEXT_TURNS = 25 MULTI_REPLY_DELAY_MIN_SECONDS = 0.5 MULTI_REPLY_DELAY_MAX_SECONDS = 1.0 OCR_EVENT_SOURCES = frozenset({"ocr", "rapidocr-local"}) @@ -1666,7 +1666,7 @@ class Ledger: with self.lock: rows = self.connection.execute( """ - SELECT question, response_text, route, route_reason + SELECT question, response_text, route, route_reason, sender FROM events WHERE group_fingerprint = ? AND event_id != ? @@ -1689,9 +1689,17 @@ class Ledger: continue response_text = str(row["response_text"]) parts = unpack_reply_parts(response_text) + question = str(row["question"]) + if row["route"] == "local": + question = ( + "[本地命令结果]" + f"[发送者:{bounded_text(row['sender'], limit=40) or 'unknown'}]" + f"[类型:{str(row['route_reason']).removeprefix('local_')}] " + f"{question}" + ) result.append( ( - str(row["question"]), + question, "\n".join(parts) if parts is not None else response_text, ) ) diff --git a/packages/jwebot-official-extensions/pyproject.toml b/packages/jwebot-official-extensions/pyproject.toml index 6a6bf8d..e4f1749 100644 --- a/packages/jwebot-official-extensions/pyproject.toml +++ b/packages/jwebot-official-extensions/pyproject.toml @@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta" [project] name = "jwebot-official-extensions" -version = "1.2.3b1+1019" +version = "1.2.4b1+1019" description = "Reviewed local command adapters and broker implementation for JWeBot" requires-python = ">=3.9" dependencies = [ - "jwebot-sdk==1.2.3b1+1019", + "jwebot-sdk==1.2.4b1+1019", ] [tool.setuptools.packages.find] diff --git a/packages/jwebot-official-extensions/src/jwebot_official_extensions/__init__.py b/packages/jwebot-official-extensions/src/jwebot_official_extensions/__init__.py index f326b83..1bdfc0c 100644 --- a/packages/jwebot-official-extensions/src/jwebot_official_extensions/__init__.py +++ b/packages/jwebot-official-extensions/src/jwebot_official_extensions/__init__.py @@ -90,4 +90,4 @@ __all__ = [ "render_feature_list", ] -__version__ = "1.2.3b1+1019" +__version__ = "1.2.4b1+1019" diff --git a/packages/jwebot-sdk/pyproject.toml b/packages/jwebot-sdk/pyproject.toml index 8a21666..9dcba7c 100644 --- a/packages/jwebot-sdk/pyproject.toml +++ b/packages/jwebot-sdk/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "jwebot-sdk" -version = "1.2.3b1+1019" +version = "1.2.4b1+1019" description = "Typed, capability-limited extension API for JWeBot plugins" requires-python = ">=3.9" dependencies = [] diff --git a/packages/jwebot-sdk/src/jwebot_sdk/__init__.py b/packages/jwebot-sdk/src/jwebot_sdk/__init__.py index dedb328..007c05a 100644 --- a/packages/jwebot-sdk/src/jwebot_sdk/__init__.py +++ b/packages/jwebot-sdk/src/jwebot_sdk/__init__.py @@ -38,4 +38,4 @@ __all__ = [ "SingleGroupContext", ] -__version__ = "1.2.3b1+1019" +__version__ = "1.2.4b1+1019" diff --git a/pyproject.toml b/pyproject.toml index 92dadaf..caba993 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [tool.jwebot] -release = "beta 1.2.3.1019" +release = "beta 1.2.4.1019" production_deployments_enabled_by_default = false [tool.jwebot.workspace] diff --git a/tests/test_jwebot_edge.py b/tests/test_jwebot_edge.py index fabd7f0..a1c6b62 100644 --- a/tests/test_jwebot_edge.py +++ b/tests/test_jwebot_edge.py @@ -325,7 +325,13 @@ class LedgerAndApplicationTests(unittest.TestCase): self.application.accept(event("chat-context", "@JWeBot 刚才是什么结果")) self.application.process_direct_chat_once() - self.assertIn(("/翻硬币", local["text"]), observed_context) + self.assertIn( + ( + "[本地命令结果][发送者:Alice][类型:coin] /翻硬币", + local["text"], + ), + observed_context, + ) self.assertTrue( all(question != "/version" for question, _reply in observed_context) ) @@ -1029,9 +1035,9 @@ class LedgerAndApplicationTests(unittest.TestCase): self.assertEqual(version["route"], "local") self.assertIn("JWeBot 版本", version["text"]) self.assertIn("kernel", version["text"]) - self.assertIn("最新版本:beta 1.2.3.1019", version["text"]) - self.assertIn("更新时间:2026-10-19 18:04:57", version["text"]) - self.assertIn("更新摘要:扩大 Taffy 闲聊可读取的上下文窗口", version["text"]) + self.assertIn("最新版本:beta 1.2.4.1019", version["text"]) + self.assertIn("更新时间:2026-10-19 18:15:01", version["text"]) + self.assertIn("更新摘要:增强 Taffy 对本地游戏结果的理解", version["text"]) self.assertEqual(debug["route"], "local") self.assertIn("调试埋点", debug["text"]) self.assertEqual(balance["route"], "local") diff --git a/tests/test_release_update.py b/tests/test_release_update.py index 591db6b..079c31e 100644 --- a/tests/test_release_update.py +++ b/tests/test_release_update.py @@ -20,7 +20,7 @@ SPEC.loader.exec_module(MODULE) class ReleaseUpdateTests(unittest.TestCase): - release = "beta 1.2.3.1019" + release = "beta 1.2.4.1019" def setUp(self): self.temporary = tempfile.TemporaryDirectory()