Release beta 1.2.4.1019
check / local-gate (push) Failing after 41s

This commit is contained in:
JWeBot Contributors
2026-10-19 18:17:51 +08:00
parent 5300898bc3
commit eb31446076
18 changed files with 50 additions and 30 deletions
+6
View File
@@ -1,5 +1,11 @@
# Changelog # 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 ## beta 1.2.3.1019 - 2026-10-19 18:04:57
- 扩大 Taffy 闲聊可读取的上下文窗口:后续回复现在最多参考最近 15 轮相关对话。 - 扩大 Taffy 闲聊可读取的上下文窗口:后续回复现在最多参考最近 15 轮相关对话。
+3 -3
View File
@@ -8,7 +8,7 @@ JWeBot 是运行于 Linux 的单群微信自动回复系统。它通过本地 OC
观察选定的微信窗口,将消息写入持久化 Edge 账本,调用经过审核的命令插件, 观察选定的微信窗口,将消息写入持久化 Edge 账本,调用经过审核的命令插件,
并通过带视觉确认的 GUI 发送链路回复。 并通过带视觉确认的 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 收口了当前稳定功能:本地命令插件、人物与上下文索引、 1.0 Beta 收口了当前稳定功能:本地命令插件、人物与上下文索引、
Steam 状态与时长查询、虚拟摩拉游戏、多人彩票、21 点、CS Major Steam 状态与时长查询、虚拟摩拉游戏、多人彩票、21 点、CS Major
@@ -270,10 +270,10 @@ visually confirmed GUI bridge.
Current version: Current version:
```text ```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 The 1.0 Beta baseline consolidates the stable local command set, person and
context indexes, Steam presence/playtime queries, virtual coin games, context indexes, Steam presence/playtime queries, virtual coin games,
+1 -1
View File
@@ -1 +1 @@
beta 1.2.3.1019 beta 1.2.4.1019
+1 -1
View File
@@ -1,6 +1,6 @@
# JWeBot Command Catalog # 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 This catalog records the reviewed commands shipped with the built-in local
extensions. Runtime ownership is frozen at startup from the generated extensions. Runtime ownership is frozen at startup from the generated
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-config" name = "jwebot-config"
version = "1.2.3b1+1019" version = "1.2.4b1+1019"
description = "Profile-based configuration compiler for JWeBot" description = "Profile-based configuration compiler for JWeBot"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
@@ -36,4 +36,4 @@ __all__ = [
"write_default_profile", "write_default_profile",
] ]
__version__ = "1.2.3b1+1019" __version__ = "1.2.4b1+1019"
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-extension-host" name = "jwebot-extension-host"
version = "1.2.3b1+1019" version = "1.2.4b1+1019"
description = "Single-release, single-invocation process host for JWeBot extensions" description = "Single-release, single-invocation process host for JWeBot extensions"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
"jwebot-sdk==1.2.3b1+1019", "jwebot-sdk==1.2.4b1+1019",
"jwebot-kernel==1.2.3b1+1019", "jwebot-kernel==1.2.4b1+1019",
] ]
[project.scripts] [project.scripts]
@@ -16,4 +16,4 @@ __all__ = [
"process_request", "process_request",
] ]
__version__ = "1.2.3b1+1019" __version__ = "1.2.4b1+1019"
+4 -4
View File
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-kernel" name = "jwebot-kernel"
version = "1.2.3b1+1019" version = "1.2.4b1+1019"
description = "Stable routing and extension authority for JWeBot" description = "Stable routing and extension authority for JWeBot"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
"jwebot-config==1.2.3b1+1019", "jwebot-config==1.2.4b1+1019",
"jwebot-sdk==1.2.3b1+1019", "jwebot-sdk==1.2.4b1+1019",
"jwebot-official-extensions==1.2.3b1+1019", "jwebot-official-extensions==1.2.4b1+1019",
"tomli>=2; python_version < '3.11'", "tomli>=2; python_version < '3.11'",
] ]
@@ -107,4 +107,4 @@ __all__ = [
"verify_installed_release_signature", "verify_installed_release_signature",
] ]
__version__ = "1.2.3b1+1019" __version__ = "1.2.4b1+1019"
@@ -104,7 +104,7 @@ EXTENSION_SOCKET_ROOT = Path("/run/jwebot-extension-host")
MAX_EVENT_TEXT = 5_000 MAX_EVENT_TEXT = 5_000
MAX_REPLY_CHARS = 900 MAX_REPLY_CHARS = 900
MAX_CONTEXT_TURNS = 15 MAX_CONTEXT_TURNS = 25
MULTI_REPLY_DELAY_MIN_SECONDS = 0.5 MULTI_REPLY_DELAY_MIN_SECONDS = 0.5
MULTI_REPLY_DELAY_MAX_SECONDS = 1.0 MULTI_REPLY_DELAY_MAX_SECONDS = 1.0
OCR_EVENT_SOURCES = frozenset({"ocr", "rapidocr-local"}) OCR_EVENT_SOURCES = frozenset({"ocr", "rapidocr-local"})
@@ -1666,7 +1666,7 @@ class Ledger:
with self.lock: with self.lock:
rows = self.connection.execute( rows = self.connection.execute(
""" """
SELECT question, response_text, route, route_reason SELECT question, response_text, route, route_reason, sender
FROM events FROM events
WHERE group_fingerprint = ? WHERE group_fingerprint = ?
AND event_id != ? AND event_id != ?
@@ -1689,9 +1689,17 @@ class Ledger:
continue continue
response_text = str(row["response_text"]) response_text = str(row["response_text"])
parts = unpack_reply_parts(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( result.append(
( (
str(row["question"]), question,
"\n".join(parts) if parts is not None else response_text, "\n".join(parts) if parts is not None else response_text,
) )
) )
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-official-extensions" name = "jwebot-official-extensions"
version = "1.2.3b1+1019" version = "1.2.4b1+1019"
description = "Reviewed local command adapters and broker implementation for JWeBot" description = "Reviewed local command adapters and broker implementation for JWeBot"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
"jwebot-sdk==1.2.3b1+1019", "jwebot-sdk==1.2.4b1+1019",
] ]
[tool.setuptools.packages.find] [tool.setuptools.packages.find]
@@ -90,4 +90,4 @@ __all__ = [
"render_feature_list", "render_feature_list",
] ]
__version__ = "1.2.3b1+1019" __version__ = "1.2.4b1+1019"
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-sdk" name = "jwebot-sdk"
version = "1.2.3b1+1019" version = "1.2.4b1+1019"
description = "Typed, capability-limited extension API for JWeBot plugins" description = "Typed, capability-limited extension API for JWeBot plugins"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [] dependencies = []
@@ -38,4 +38,4 @@ __all__ = [
"SingleGroupContext", "SingleGroupContext",
] ]
__version__ = "1.2.3b1+1019" __version__ = "1.2.4b1+1019"
+1 -1
View File
@@ -1,5 +1,5 @@
[tool.jwebot] [tool.jwebot]
release = "beta 1.2.3.1019" release = "beta 1.2.4.1019"
production_deployments_enabled_by_default = false production_deployments_enabled_by_default = false
[tool.jwebot.workspace] [tool.jwebot.workspace]
+10 -4
View File
@@ -325,7 +325,13 @@ class LedgerAndApplicationTests(unittest.TestCase):
self.application.accept(event("chat-context", "@JWeBot 刚才是什么结果")) self.application.accept(event("chat-context", "@JWeBot 刚才是什么结果"))
self.application.process_direct_chat_once() self.application.process_direct_chat_once()
self.assertIn(("/翻硬币", local["text"]), observed_context) self.assertIn(
(
"[本地命令结果][发送者:Alice][类型:coin] /翻硬币",
local["text"],
),
observed_context,
)
self.assertTrue( self.assertTrue(
all(question != "/version" for question, _reply in observed_context) all(question != "/version" for question, _reply in observed_context)
) )
@@ -1029,9 +1035,9 @@ class LedgerAndApplicationTests(unittest.TestCase):
self.assertEqual(version["route"], "local") self.assertEqual(version["route"], "local")
self.assertIn("JWeBot 版本", version["text"]) self.assertIn("JWeBot 版本", version["text"])
self.assertIn("kernel", version["text"]) self.assertIn("kernel", version["text"])
self.assertIn("最新版本:beta 1.2.3.1019", version["text"]) self.assertIn("最新版本:beta 1.2.4.1019", version["text"])
self.assertIn("更新时间:2026-10-19 18:04:57", version["text"]) self.assertIn("更新时间:2026-10-19 18:15:01", version["text"])
self.assertIn("更新摘要:扩大 Taffy 闲聊可读取的上下文窗口", version["text"]) self.assertIn("更新摘要:增强 Taffy 对本地游戏结果的理解", version["text"])
self.assertEqual(debug["route"], "local") self.assertEqual(debug["route"], "local")
self.assertIn("调试埋点", debug["text"]) self.assertIn("调试埋点", debug["text"])
self.assertEqual(balance["route"], "local") self.assertEqual(balance["route"], "local")
+1 -1
View File
@@ -20,7 +20,7 @@ SPEC.loader.exec_module(MODULE)
class ReleaseUpdateTests(unittest.TestCase): class ReleaseUpdateTests(unittest.TestCase):
release = "beta 1.2.3.1019" release = "beta 1.2.4.1019"
def setUp(self): def setUp(self):
self.temporary = tempfile.TemporaryDirectory() self.temporary = tempfile.TemporaryDirectory()