coding-agent-telegram 2026.3.30__tar.gz → 2026.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/PKG-INFO +82 -25
  2. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.de.md +107 -55
  3. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.fr.md +135 -77
  4. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.ja.md +164 -108
  5. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.ko.md +165 -109
  6. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.md +81 -24
  7. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.nl.md +133 -75
  8. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.th.md +164 -102
  9. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.vi.md +172 -116
  10. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.zh-CN.md +161 -105
  11. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.zh-HK.md +173 -111
  12. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/README.zh-TW.md +173 -111
  13. coding_agent_telegram-2026.4.2/install-stt.sh +37 -0
  14. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/install.sh +8 -3
  15. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/pyproject.toml +1 -0
  16. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/agent_runner.py +69 -8
  17. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/bot.py +36 -2
  18. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/cli.py +11 -0
  19. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/config.py +18 -1
  20. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/diff_utils.py +12 -2
  21. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/git_utils.py +42 -1
  22. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/.env.example +16 -0
  23. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/de.json +7 -1
  24. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/en.json +9 -1
  25. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/fr.json +7 -1
  26. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/ja.json +7 -1
  27. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/ko.json +7 -1
  28. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/nl.json +7 -1
  29. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/th.json +7 -1
  30. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/vi.json +7 -1
  31. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/zh-CN.json +7 -1
  32. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/zh-HK.json +8 -2
  33. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/locales/zh-TW.json +8 -2
  34. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/base.py +70 -31
  35. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/git_commands.py +10 -2
  36. coding_agent_telegram-2026.4.2/src/coding_agent_telegram/router/message_commands.py +284 -0
  37. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/project_commands.py +25 -13
  38. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/queue_processing.py +129 -24
  39. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/session_branch_resolution.py +1 -40
  40. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/session_common.py +8 -0
  41. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/session_lifecycle_commands.py +77 -38
  42. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/session_provider_commands.py +11 -3
  43. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/session_runtime.py +77 -11
  44. coding_agent_telegram-2026.4.2/src/coding_agent_telegram/speech_to_text.py +140 -0
  45. coding_agent_telegram-2026.4.2/src/coding_agent_telegram/stt_setup.py +306 -0
  46. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/telegram_sender.py +68 -7
  47. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram.egg-info/PKG-INFO +82 -25
  48. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram.egg-info/SOURCES.txt +8 -0
  49. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram.egg-info/entry_points.txt +1 -0
  50. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/startup.sh +49 -38
  51. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_agent_runner.py +54 -4
  52. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_command_router.py +6109 -1867
  53. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_config.py +49 -0
  54. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_diff_chunking.py +8 -0
  55. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_git_utils.py +92 -0
  56. coding_agent_telegram-2026.4.2/tests/test_i18n.py +137 -0
  57. coding_agent_telegram-2026.4.2/tests/test_native_session_utils.py +217 -0
  58. coding_agent_telegram-2026.4.2/tests/test_native_sessions.py +213 -0
  59. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_session_store.py +76 -0
  60. coding_agent_telegram-2026.4.2/tests/test_speech_to_text.py +105 -0
  61. coding_agent_telegram-2026.4.2/tests/test_stt_setup.py +99 -0
  62. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_telegram_sender.py +19 -11
  63. coding_agent_telegram-2026.3.30/src/coding_agent_telegram/router/message_commands.py +0 -69
  64. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/.github/workflows/pull-request-checks.yml +0 -0
  65. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/.github/workflows/python-publish.yml +0 -0
  66. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/.github/workflows/testpypi-publish.yml +0 -0
  67. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/.gitignore +0 -0
  68. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/.gitkeep +0 -0
  69. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/LICENSE +0 -0
  70. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/setup.cfg +0 -0
  71. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/setup.py +0 -0
  72. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/__init__.py +0 -0
  73. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/__main__.py +0 -0
  74. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/command_router.py +0 -0
  75. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/filters.py +0 -0
  76. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/i18n.py +0 -0
  77. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/logging_utils.py +0 -0
  78. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/native_codex_sessions.py +0 -0
  79. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/native_copilot_sessions.py +0 -0
  80. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/native_session_types.py +0 -0
  81. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/native_session_utils.py +0 -0
  82. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/native_sessions.py +0 -0
  83. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/secret_scrub_patterns.properties +0 -0
  84. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/sensitive_path_globs.txt +0 -0
  85. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/snapshot_excluded_dir_globs.txt +0 -0
  86. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/snapshot_excluded_dir_names.txt +0 -0
  87. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/resources/snapshot_excluded_file_globs.txt +0 -0
  88. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/__init__.py +0 -0
  89. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/session_commands.py +0 -0
  90. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/session_status_commands.py +0 -0
  91. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/router/switch_commands.py +0 -0
  92. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram/session_store.py +0 -0
  93. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram.egg-info/dependency_links.txt +0 -0
  94. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram.egg-info/requires.txt +0 -0
  95. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/src/coding_agent_telegram.egg-info/top_level.txt +0 -0
  96. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/conftest.py +0 -0
  97. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_agent_runner_stall.py +0 -0
  98. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_bot.py +0 -0
  99. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_filters.py +0 -0
  100. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_logging_utils.py +0 -0
  101. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_project_validation.py +0 -0
  102. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_session_runtime_diff_merge.py +0 -0
  103. {coding_agent_telegram-2026.3.30 → coding_agent_telegram-2026.4.2}/tests/test_session_runtime_security.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coding-agent-telegram
3
- Version: 2026.3.30
3
+ Version: 2026.4.2
4
4
  Summary: Telegram bot bridge for local coding agents (Codex/Copilot CLI)
5
5
  Author: DCHA
6
6
  License: MIT
@@ -52,7 +52,7 @@ Dynamic: license-file
52
52
  - ✅ Use Telegram to control Codex / Copilot CLI
53
53
  - ✅ Easily review files changed by agent in code block
54
54
  - ✅ Queue follow-up messages while the agent is working
55
- - ✅ Accept Text and Image input
55
+ - ✅ Accept ✏️ Text, 🌄 Image, and 🎙️ Voice messages
56
56
 
57
57
  ## 🔁 Seamless Device/Session Switching
58
58
 
@@ -76,7 +76,7 @@ Dynamic: license-file
76
76
 
77
77
  </td>
78
78
  <td width="350" border="0">
79
- <img src="https://github.com/user-attachments/assets/cecb6de6-ecf0-4bf4-af70-b98071c68885" />
79
+ <img src="https://github.com/user-attachments/assets/54e8745b-a0d4-48ff-b0d8-178198d00a3d" />
80
80
  </td>
81
81
  </tr>
82
82
  </table>
@@ -88,19 +88,20 @@ curl -fsSL https://raw.githubusercontent.com/daocha/coding-agent-telegram/main/i
88
88
 
89
89
  <table>
90
90
  <tr>
91
- <td width="50%" valign="top">
91
+ <td width="65%" valign="top">
92
92
 
93
93
  ## 🔐 Security
94
94
 
95
- - Private chat allowlist with `ALLOWED_CHAT_IDS`
95
+ - Private chat whitelist with `ALLOWED_CHAT_IDS`
96
96
  - One active agent per project to reduce conflicting writes
97
97
  - Sensitive file diffs are hidden
98
98
  - API keys, tokens, `.env` values, certificates, SSH keys, and similar secret-like output are redacted before sending back to Telegram
99
99
  - Runtime app data stays under `~/.coding-agent-telegram`
100
100
  - Existing folders can require trust before mutating git operations
101
- - Server makes `NO hidden external call`. Everything is under your control.
101
+ - The server does not make hidden external calls. Everything stays under your control.
102
+ - Works well with Codex Sandbox mode (you don't have to grant `danger-full-access`)
102
103
  </td>
103
- <td width="50%" valign="top">
104
+ <td width="35%" valign="top">
104
105
 
105
106
  ## ✅ Requirements
106
107
 
@@ -110,12 +111,15 @@ curl -fsSL https://raw.githubusercontent.com/daocha/coding-agent-telegram/main/i
110
111
  - Telegram bot token created from _@BotFather_
111
112
  - Your Telegram chat ID
112
113
  - Codex CLI and/or Copilot CLI installed locally
113
- - [Codex CLI install](https://developers.openai.com/codex/cli)
114
- - [Copilot CLI install](https://github.com/features/copilot/cli)
114
+ - [Codex CLI install](https://developers.openai.com/codex/cli) / [Copilot CLI install](https://github.com/features/copilot/cli)
115
+ - [Optional] `Whisper`, `ffmpeg`
115
116
  </td>
116
117
  </tr>
117
118
  </table>
118
119
 
120
+ ## 🦞 Why do I need it if I have Openclaw already?
121
+ Openclaw offers you full capabilities and has integrated agent loop called Pi-Agent. It's quite comprehensive and designed for more diversified use cases. I am also Openclaw lover and I used to code with Openclaw. However, that is not the best choice for coding due to the built in large system prompt and context. Using Claude Code / Codex / Copilot for coding is still more effecient, accurate, less distracted, and straightforward. This project is quite simple, purely integrating with Codex / Copilot CLI. So you are directly delegating Codex / Copilot to work for you.
122
+
119
123
  ## 🚀 Quick Start
120
124
 
121
125
  ### Option A: Start with a one-line bootstrap script
@@ -139,7 +143,7 @@ cd coding-agent-telegram
139
143
  ./startup.sh
140
144
  ```
141
145
 
142
- ### Start Bot Server
146
+ ### 🌐 Start Bot Server
143
147
  ##### On first run, the app creates the env file, tells you what to fill in.
144
148
  ##### After updating the environment file then run:
145
149
 
@@ -151,6 +155,40 @@ coding-agent-telegram
151
155
  ./startup.sh
152
156
  ```
153
157
 
158
+ ## 🎙️ [Optional] Speech-to-Text Feature: prepare local OpenAI-Whisper prerequisites
159
+
160
+ This enables optional local Whisper-based voice-message speech-to-text for Telegram voice notes. Voice files are capped to `20MB` max.
161
+
162
+ ```bash
163
+ # if you installed from pip or one-liner install.sh
164
+ coding-agent-telegram-stt-install
165
+
166
+ # if you run from a cloned repository
167
+ ./install-stt.sh
168
+ ```
169
+
170
+ The installer writes the STT env flags automatically after prerequisites are ready.
171
+
172
+ Estimated local footprint:
173
+
174
+ - `openai-whisper`: about `50 MB`
175
+ - `ffmpeg` package: about `50 MB`
176
+ - Whisper model downloads vary by model: `tiny` about `72 MB`, `base` about `139 MB`, `large-v3-turbo` about `1.5 GB`
177
+
178
+ Recommended env settings for the local Whisper backend:
179
+
180
+ ```text
181
+ ENABLE_OPENAI_WHISPER_SPEECH_TO_TEXT=true
182
+ OPENAI_WHISPER_MODEL=base
183
+ OPENAI_WHISPER_TIMEOUT_SECONDS=120
184
+ ```
185
+
186
+ Notes:
187
+
188
+ - Whisper downloads the selected model automatically on first use into `~/.cache/whisper`.
189
+ - If you choose `OPENAI_WHISPER_MODEL=turbo`, the first voice transcription is more likely to hit the timeout while `large-v3-turbo.pt` is still downloading.
190
+ - After a voice note is transcribed, the bot immediately sends the recognized transcript back to Telegram before the agent reply. If the run can start immediately it says “working on it”; if the project is busy it shows that the transcript was queued instead.
191
+
154
192
  ## 🔑 Telegram Setup
155
193
 
156
194
  ### Get a Bot Token
@@ -189,61 +227,62 @@ The bot currently accepts:
189
227
 
190
228
  - Text messages
191
229
  - photos
230
+ - voice messages when `ENABLE_OPENAI_WHISPER_SPEECH_TO_TEXT=true` and local Whisper prerequisites are installed
192
231
  - Codex and Copilot currently supports text and image only, video is not supported.
193
232
 
194
233
  ## 🤖 Telegram Commands
195
234
 
196
235
  <table>
197
236
  <tr>
198
- <td width="250"><code>/provider</code></td>
237
+ <td width="332"><code>/provider</code></td>
199
238
  <td>Choose the provider for new sessions. The selection is stored per bot and chat until you change it.</td>
200
239
  </tr>
201
240
  <tr>
202
- <td width="250"><code>/project &lt;project_folder&gt;</code></td>
241
+ <td><code>/project &lt;project_folder&gt;</code></td>
203
242
  <td>Set the current project folder. If the folder does not exist, the app creates it and marks it trusted. If it already exists and is still untrusted, the app asks you to trust it explicitly.</td>
204
243
  </tr>
205
244
  <tr>
206
- <td width="250"><code>/branch &lt;new_branch&gt;</code></td>
245
+ <td><code>/branch &lt;new_branch&gt;</code></td>
207
246
  <td>Prepare or switch a branch for the current project. If the branch already exists, the bot treats that branch as the source candidate. Otherwise it uses the repository default branch as the source candidate.</td>
208
247
  </tr>
209
248
  <tr>
210
- <td width="250"><code>/branch &lt;origin_branch&gt; &lt;new_branch&gt;</code></td>
249
+ <td><code>/branch &lt;origin_branch&gt; &lt;new_branch&gt;</code></td>
211
250
  <td>Prepare or switch a branch using <code>&lt;origin_branch&gt;</code> as the source candidate. <br /> For both forms, the bot then offers the source choices that actually exist: <code>local/&lt;branch&gt;</code> <code>origin/&lt;branch&gt;</code> <br />If only one of those exists, only that option is shown. If neither exists, the bot tells you the branch source is missing.</td>
212
251
  </tr>
213
252
  <tr>
214
- <td width="250"><code>/current</code></td>
253
+ <td><code>/current</code></td>
215
254
  <td>Show the active session for the current bot and chat.</td>
216
255
  </tr>
217
256
  <tr>
218
- <td width="250"><code>/new [session_name]</code></td>
257
+ <td><code>/new [session_name]</code></td>
219
258
  <td>Create a new session for the current project. If you omit the name, the bot uses the real session ID. If provider, project, or branch is missing, the bot guides you through the missing step.</td>
220
259
  </tr>
221
260
  <tr>
222
- <td width="250"><code>/switch</code></td>
261
+ <td><code>/switch</code></td>
223
262
  <td>Show the latest sessions, newest first. The list includes both bot-managed sessions and local Codex/Copilot CLI sessions for the current project.</td>
224
263
  </tr>
225
264
  <tr>
226
- <td width="250"><code>/switch page &lt;number&gt;</code></td>
265
+ <td><code>/switch page &lt;number&gt;</code></td>
227
266
  <td>Show another page of stored sessions.</td>
228
267
  </tr>
229
268
  <tr>
230
- <td width="250"><code>/switch &lt;session_id&gt;</code></td>
269
+ <td><code>/switch &lt;session_id&gt;</code></td>
231
270
  <td>Switch to a specific session by ID. If you choose a local CLI session, the bot imports it and continues from there.</td>
232
271
  </tr>
233
272
  <tr>
234
- <td width="250"><code>/compact</code></td>
273
+ <td><code>/compact</code></td>
235
274
  <td>Create a fresh compacted session from the active session and switch to it.</td>
236
275
  </tr>
237
276
  <tr>
238
- <td width="250"><code>/commit &lt;git commands&gt;</code></td>
277
+ <td><code>/commit &lt;git commands&gt;</code></td>
239
278
  <td>Run validated git commit-related commands inside the active session project. Available only when <code>ENABLE_COMMIT_COMMAND=true</code>. Mutating git commands require a trusted project.</td>
240
279
  </tr>
241
280
  <tr>
242
- <td width="250"><code>/push</code></td>
281
+ <td><code>/push</code></td>
243
282
  <td>Push <code>origin &lt;branch&gt;</code> for the current active session. The bot asks for confirmation before pushing.</td>
244
283
  </tr>
245
284
  <tr>
246
- <td width="250"><code>/abort</code></td>
285
+ <td><code>/abort</code></td>
247
286
  <td>Abort the current agent run for the current project. If queued questions are waiting, the bot asks whether to continue them.</td>
248
287
  </tr>
249
288
  </table>
@@ -270,7 +309,7 @@ The bot currently accepts:
270
309
 
271
310
  <table>
272
311
  <tr>
273
- <td width="250"><code>WORKSPACE_ROOT</code></td>
312
+ <td width="332"><code>WORKSPACE_ROOT</code></td>
274
313
  <td>Parent folder that contains your project directories.</td>
275
314
  </tr>
276
315
  <tr>
@@ -287,7 +326,7 @@ The bot currently accepts:
287
326
 
288
327
  <table>
289
328
  <tr>
290
- <td width="250"><code>APP_LOCALE</code></td>
329
+ <td width="332"><code>APP_LOCALE</code></td>
291
330
  <td>UI locale for shared bot messages and command descriptions. Supported values: <code>en</code>, <code>de</code>, <code>fr</code>, <code>ja</code>, <code>ko</code>, <code>nl</code>, <code>th</code>, <code>vi</code>, <code>zh-CN</code>, <code>zh-HK</code>, <code>zh-TW</code>.</td>
292
331
  </tr>
293
332
  <tr>
@@ -362,6 +401,24 @@ The bot currently accepts:
362
401
  </tr>
363
402
  </table>
364
403
 
404
+ <h3>Speech to Text</h3>
405
+ <table>
406
+ <tr>
407
+ <td width="332"><code>ENABLE_OPENAI_WHISPER_SPEECH_TO_TEXT</code></td>
408
+ <td>Default: <code>false</code>. If true, it enables the audio messages capability. System will check the prerequisites regarding required binaries or libraries on startup.</td>
409
+ </tr>
410
+ <tr>
411
+ <td><code>OPENAI_WHISPER_MODEL</code></td>
412
+ <td>Model for the Whisper SST. Default: <code>base</code><br />Available models: <code>tiny</code> about <code>72 MB</code>, <code>base</code> about <codoe>139 MB</codoe>, <code>large-v3-turbo</code> about <code>1.5 GB</code><br />
413
+ Models will be automatically downloaded on your first voice message. Recommended: <code>base</code> for general usage. If you want better accuracy and quality, you can try with <code>turbo</code>
414
+ </td>
415
+ </tr>
416
+ <tr>
417
+ <td><code>OPENAI_WHISPER_TIMEOUT_SECONDS</code></td>
418
+ <td>Default: <code>120</code>Timeout for the STT process. Usually the STT processing is fast enough.</td>
419
+ </tr>
420
+ </table>
421
+
365
422
  <h3>State and Logs</h3>
366
423
 
367
424
  <table>
@@ -38,7 +38,7 @@
38
38
  - ✅ Telegram zum Steuern von Codex / Copilot CLI verwenden
39
39
  - ✅ Antworten und geänderte Dateien bequem in Code-Blöcken prüfen
40
40
  - ✅ Folgefragen während eines laufenden Agentenlaufs in die Queue stellen
41
- - ✅ Unterstützt Text- und Bildeingaben
41
+ - ✅ Akzeptiert ✏️ Text-, 🌄 Bild- und 🎙️ Sprachnachrichten
42
42
 
43
43
  ## 🔁 Nahtlos zwischen Geräten und Sessions wechseln
44
44
 
@@ -49,7 +49,7 @@
49
49
 
50
50
  ## 🛠️ Typischer lokaler Ablauf
51
51
  ```bash
52
- coding-agent-telegram # or run ./startup.sh
52
+ coding-agent-telegram # oder ./startup.sh ausführen
53
53
  ```
54
54
 
55
55
  ##### In Telegram:
@@ -62,7 +62,7 @@
62
62
 
63
63
  </td>
64
64
  <td width="350" border="0">
65
- <img src="https://github.com/user-attachments/assets/cecb6de6-ecf0-4bf4-af70-b98071c68885" />
65
+ <img src="https://github.com/user-attachments/assets/54e8745b-a0d4-48ff-b0d8-178198d00a3d" />
66
66
  </td>
67
67
  </tr>
68
68
  </table>
@@ -74,19 +74,20 @@ curl -fsSL https://raw.githubusercontent.com/daocha/coding-agent-telegram/main/i
74
74
 
75
75
  <table>
76
76
  <tr>
77
- <td width="50%" valign="top">
77
+ <td width="65%" valign="top">
78
78
 
79
79
  ## 🔐 Sicherheit
80
80
 
81
- - Private Chats werden über `ALLOWED_CHAT_IDS` freigegeben
82
- - Pro Projekt ist nur ein aktiver Agent erlaubt, um Konflikte zu reduzieren
81
+ - Whitelist für private Chats mit `ALLOWED_CHAT_IDS`
82
+ - Pro Projekt nur ein aktiver Agent, um Konflikte beim Schreiben zu reduzieren
83
83
  - Diffs sensibler Dateien werden ausgeblendet
84
- - API-Schlüssel, Tokens, `.env`-Werte, Zertifikate, SSH-Schlüssel und ähnliche Geheimnisse werden vor dem Senden an Telegram maskiert
84
+ - API-Schlüssel, Tokens, `.env`-Werte, Zertifikate, SSH-Schlüssel und ähnliche geheime Ausgaben werden vor dem Senden an Telegram maskiert
85
85
  - Laufzeitdaten der App bleiben unter `~/.coding-agent-telegram`
86
86
  - Bestehende Ordner können vor schreibenden Git-Operationen eine Vertrauensbestätigung verlangen
87
- - Keine versteckten externen Aufrufe: Du behältst die Kontrolle
87
+ - Der Server führt keine versteckten externen Aufrufe aus. Alles bleibt unter deiner Kontrolle.
88
+ - Funktioniert gut mit dem Codex Sandbox mode; du musst `danger-full-access` nicht freigeben
88
89
  </td>
89
- <td width="50%" valign="top">
90
+ <td width="35%" valign="top">
90
91
 
91
92
  ## ✅ Voraussetzungen
92
93
 
@@ -98,41 +99,71 @@ Vor dem Start des Servers brauchst du:
98
99
  - Lokal installiertes Codex CLI und/oder Copilot CLI
99
100
  - [Codex CLI Installation](https://developers.openai.com/codex/cli)
100
101
  - [Copilot CLI Installation](https://github.com/features/copilot/cli)
102
+ - [Optional] Whisper, ffmpeg
101
103
  </td>
102
104
  </tr>
103
105
  </table>
104
106
 
107
+ ## 🦞 Warum brauche ich das, wenn ich Openclaw bereits habe?
108
+ Openclaw bietet dir sehr umfassende Funktionen und hat mit Pi-Agent bereits eine integrierte Agent-Loop. Es ist vielseitig und für breitere Einsatzfälle gedacht. Ich mag Openclaw ebenfalls und habe selbst damit entwickelt. Für Coding ist es aber nicht immer die beste Wahl, weil der eingebaute große System-Prompt und der zusätzliche Kontext eher ablenken können. Claude Code / Codex / Copilot sind fürs Coding oft effizienter, präziser, weniger abgelenkt und direkter. Dieses Projekt bleibt bewusst einfach und integriert nur Codex / Copilot CLI. Du delegierst also direkt an Codex / Copilot.
109
+
105
110
  ## 🚀 Schnellstart
106
111
 
107
- ### Option A: Einzeiliges Bootstrap-Skript
112
+ ### Variante A: Einzeiliges Bootstrap-Skript
108
113
  ```bash
109
114
  curl -fsSL https://raw.githubusercontent.com/daocha/coding-agent-telegram/main/install.sh | bash
110
115
  ```
111
116
 
112
- ### Option B: Installation über PyPI mit `pip`
117
+ ### Variante B: Installation über PyPI mit `pip`
113
118
  ```bash
114
119
  pip install coding-agent-telegram
115
120
  coding-agent-telegram
116
121
  ```
117
122
 
118
- ### Option C: Aus einem geklonten Repository starten
123
+ ### Variante C: Aus einem geklonten Repository starten
119
124
  ```bash
120
125
  git clone https://github.com/daocha/coding-agent-telegram
121
126
  cd coding-agent-telegram
122
127
  ./startup.sh
123
128
  ```
124
129
 
125
- ### Bot-Server starten
130
+ ### 🌐 Bot-Server starten
126
131
  ##### Beim ersten Start legt die App die Env-Datei an und sagt dir, welche Felder du ausfüllen musst.
127
132
  ##### Nach dem Bearbeiten der Env-Datei starte erneut:
128
133
  ```bash
129
- # if you follow Option A or Option B, then run
134
+ # wenn du Variante A oder Variante B verwendest, dann ausführen
130
135
  coding-agent-telegram
131
136
 
132
- # if you follow Option C, then run this again
137
+ # wenn du Variante C verwendest, dann dies erneut ausführen
133
138
  ./startup.sh
134
139
  ```
135
140
 
141
+ ## 🎙️ [Optional] Sprach-zu-Text-Funktion: lokale OpenAI-Whisper-Voraussetzungen vorbereiten
142
+
143
+ Damit aktivierst du optional lokale Whisper-basierte Sprach-zu-Text-Unterstützung für Telegram-Sprachnotizen. Audiodateien sind auf maximal `20 MB` begrenzt.
144
+
145
+ ```bash
146
+ # wenn du per pip oder per Einzeiler install.sh installiert hast
147
+ coding-agent-telegram-stt-install
148
+
149
+ # wenn du aus einem geklonten Repository startest
150
+ ./install-stt.sh
151
+ ```
152
+
153
+ Empfohlene Env-Einstellungen:
154
+
155
+ ```text
156
+ ENABLE_OPENAI_WHISPER_SPEECH_TO_TEXT=true
157
+ OPENAI_WHISPER_MODEL=base
158
+ OPENAI_WHISPER_TIMEOUT_SECONDS=120
159
+ ```
160
+
161
+ Hinweise:
162
+
163
+ - Whisper lädt das ausgewählte Modell beim ersten Aufruf automatisch nach `~/.cache/whisper` herunter.
164
+ - Wenn du `OPENAI_WHISPER_MODEL=turbo` wählst, ist es wahrscheinlicher, dass die erste Sprachnachricht das Zeitlimit erreicht, während `large-v3-turbo.pt` noch heruntergeladen wird.
165
+ - Nach der Transkription einer Sprachnachricht sendet der Bot das erkannte Transkript zuerst zurück an Telegram und gibt es danach an den Agenten weiter. So lassen sich Erkennungsfehler leichter prüfen.
166
+
136
167
  ## 🔑 Telegram-Einrichtung
137
168
 
138
169
  ### Bot-Token holen
@@ -171,61 +202,62 @@ Der Bot akzeptiert derzeit:
171
202
 
172
203
  - Textnachrichten
173
204
  - Fotos
205
+ - Sprachnachrichten und Audiodateien, wenn `ENABLE_OPENAI_WHISPER_SPEECH_TO_TEXT=true` gesetzt ist und die lokalen Whisper-Voraussetzungen installiert sind
174
206
  - Codex und Copilot unterstützen aktuell nur Text und Bilder, kein Video.
175
207
 
176
208
  ## 🤖 Telegram-Befehle
177
209
 
178
210
  <table>
179
211
  <tr>
180
- <td width="250"><code>/provider</code></td>
212
+ <td width="332"><code>/provider</code></td>
181
213
  <td>Provider für neue Sessions wählen. Die Auswahl wird pro Bot und Chat gespeichert, bis du sie änderst.</td>
182
214
  </tr>
183
215
  <tr>
184
- <td width="250"><code>/project &lt;project_folder&gt;</code></td>
216
+ <td width="332"><code>/project &lt;project_folder&gt;</code></td>
185
217
  <td>Aktuellen Projektordner setzen. Falls der Ordner nicht existiert, erstellt die App ihn und markiert ihn als vertrauenswürdig. Wenn er bereits existiert und noch nicht vertraut ist, fragt die App nach einer Bestätigung.</td>
186
218
  </tr>
187
219
  <tr>
188
- <td width="250"><code>/branch &lt;new_branch&gt;</code></td>
220
+ <td width="332"><code>/branch &lt;new_branch&gt;</code></td>
189
221
  <td>Eine branch für das aktuelle Projekt vorbereiten oder wechseln. Wenn die branch bereits existiert, nutzt der Bot sie als Quellkandidaten. Andernfalls verwendet er die Standard-branch des Repositorys als Quellkandidaten.</td>
190
222
  </tr>
191
223
  <tr>
192
- <td width="250"><code>/branch &lt;origin_branch&gt; &lt;new_branch&gt;</code></td>
193
- <td>Eine branch mit `<origin_branch>` als Quellkandidaten vorbereiten oder wechseln. Für beide Formen bietet der Bot anschließend nur die Quelloptionen an, die tatsächlich existieren: `local/<branch>` und `origin/<branch>`. Wenn nur eine davon existiert, wird nur diese angezeigt. Wenn keine existiert, meldet der Bot, dass die branch-Quelle fehlt.</td>
224
+ <td width="332"><code>/branch &lt;origin_branch&gt; &lt;new_branch&gt;</code></td>
225
+ <td>Eine branch mit <code>&lt;origin_branch&gt;</code> als Quellkandidaten vorbereiten oder wechseln. Für beide Formen bietet der Bot anschließend nur die Quelloptionen an, die tatsächlich existieren: <code>local/&lt;branch&gt;</code> und <code>origin/&lt;branch&gt;</code>. Wenn nur eine davon existiert, wird nur diese angezeigt. Wenn keine existiert, meldet der Bot, dass die branch-Quelle fehlt.</td>
194
226
  </tr>
195
227
  <tr>
196
- <td width="250"><code>/current</code></td>
228
+ <td width="332"><code>/current</code></td>
197
229
  <td>Die aktive Session für den aktuellen Bot und Chat anzeigen.</td>
198
230
  </tr>
199
231
  <tr>
200
- <td width="250"><code>/new [session_name]</code></td>
232
+ <td width="332"><code>/new [session_name]</code></td>
201
233
  <td>Eine neue Session für das aktuelle Projekt erstellen. Wenn du keinen Namen angibst, verwendet der Bot die echte Session-ID. Fehlen Provider, Projekt oder branch, führt dich der Bot durch den fehlenden Schritt.</td>
202
234
  </tr>
203
235
  <tr>
204
- <td width="250"><code>/switch</code></td>
236
+ <td width="332"><code>/switch</code></td>
205
237
  <td>Die neuesten Sessions anzeigen, zuerst die neuesten. Die Liste enthält sowohl vom Bot verwaltete Sessions als auch lokale Codex/Copilot CLI-Sessions für das aktuelle Projekt.</td>
206
238
  </tr>
207
239
  <tr>
208
- <td width="250"><code>/switch page &lt;number&gt;</code></td>
240
+ <td width="332"><code>/switch page &lt;number&gt;</code></td>
209
241
  <td>Eine andere Seite der gespeicherten Sessions anzeigen.</td>
210
242
  </tr>
211
243
  <tr>
212
- <td width="250"><code>/switch &lt;session_id&gt;</code></td>
244
+ <td width="332"><code>/switch &lt;session_id&gt;</code></td>
213
245
  <td>Zu einer bestimmten Session per ID wechseln. Wenn du eine lokale CLI-Session auswählst, importiert der Bot sie und setzt dort fort.</td>
214
246
  </tr>
215
247
  <tr>
216
- <td width="250"><code>/compact</code></td>
248
+ <td width="332"><code>/compact</code></td>
217
249
  <td>Aus der aktiven Session eine neue kompakte Session erzeugen und dorthin wechseln.</td>
218
250
  </tr>
219
251
  <tr>
220
- <td width="250"><code>/commit &lt;git commands&gt;</code></td>
221
- <td>Geprüfte `git commit`-bezogene Befehle im Projekt der aktiven Session ausführen. Nur verfügbar, wenn `ENABLE_COMMIT_COMMAND=true`. Schreibende Git-Befehle erfordern ein vertrauenswürdiges Projekt.</td>
252
+ <td width="332"><code>/commit &lt;git commands&gt;</code></td>
253
+ <td>Geprüfte <code>git commit</code>-bezogene Befehle im Projekt der aktiven Session ausführen. Nur verfügbar, wenn <code>ENABLE_COMMIT_COMMAND=true</code>. Schreibende Git-Befehle erfordern ein vertrauenswürdiges Projekt.</td>
222
254
  </tr>
223
255
  <tr>
224
- <td width="250"><code>/push</code></td>
225
- <td>`origin <branch>` für die aktuelle aktive Session pushen. Der Bot fragt vor dem Push nach einer Bestätigung.</td>
256
+ <td width="332"><code>/push</code></td>
257
+ <td><code>origin &lt;branch&gt;</code> für die aktuelle aktive Session pushen. Der Bot fragt vor dem Push nach einer Bestätigung.</td>
226
258
  </tr>
227
259
  <tr>
228
- <td width="250"><code>/abort</code></td>
260
+ <td width="332"><code>/abort</code></td>
229
261
  <td>Den aktuellen Agentenlauf für das aktuelle Projekt abbrechen. Wenn Fragen in der Queue warten, fragt der Bot, ob sie weiter verarbeitet werden sollen.</td>
230
262
  </tr>
231
263
  </table>
@@ -253,15 +285,15 @@ Der Bot akzeptiert derzeit:
253
285
 
254
286
  <table>
255
287
  <tr>
256
- <td width="250"><code>WORKSPACE_ROOT</code></td>
288
+ <td width="332"><code>WORKSPACE_ROOT</code></td>
257
289
  <td>Übergeordneter Ordner, der deine Projektverzeichnisse enthält.</td>
258
290
  </tr>
259
291
  <tr>
260
- <td width="250"><code>TELEGRAM_BOT_TOKENS</code></td>
292
+ <td width="332"><code>TELEGRAM_BOT_TOKENS</code></td>
261
293
  <td>Kommagetrennte Telegram-Bot-Tokens.</td>
262
294
  </tr>
263
295
  <tr>
264
- <td width="250"><code>ALLOWED_CHAT_IDS</code></td>
296
+ <td width="332"><code>ALLOWED_CHAT_IDS</code></td>
265
297
  <td>Kommagetrennte Telegram-Chat-IDs privater Chats, die den Bot verwenden dürfen.</td>
266
298
  </tr>
267
299
  </table>
@@ -270,71 +302,91 @@ Der Bot akzeptiert derzeit:
270
302
 
271
303
  <table>
272
304
  <tr>
273
- <td width="250"><code>APP_LOCALE</code></td>
305
+ <td width="332"><code>APP_LOCALE</code></td>
274
306
  <td>UI-Sprache für gemeinsame Bot-Meldungen und Befehlsbeschreibungen. Unterstützte Werte: <code>en</code>, <code>de</code>, <code>fr</code>, <code>ja</code>, <code>ko</code>, <code>nl</code>, <code>th</code>, <code>vi</code>, <code>zh-CN</code>, <code>zh-HK</code>, <code>zh-TW</code>.</td>
275
307
  </tr>
276
308
  <tr>
277
- <td width="250"><code>CODEX_BIN</code></td>
309
+ <td width="332"><code>CODEX_BIN</code></td>
278
310
  <td>Befehl zum Starten von Codex CLI. Standard: <code>codex</code>.</td>
279
311
  </tr>
280
312
  <tr>
281
- <td width="250"><code>COPILOT_BIN</code></td>
313
+ <td width="332"><code>COPILOT_BIN</code></td>
282
314
  <td>Befehl zum Starten von Copilot CLI. Standard: <code>copilot</code>.</td>
283
315
  </tr>
284
316
  <tr>
285
- <td width="250"><code>CODEX_MODEL</code></td>
317
+ <td width="332"><code>CODEX_MODEL</code></td>
286
318
  <td>Optionale Model-Überschreibung für Codex. Leer lassen, um das Standardmodell von Codex CLI zu verwenden. Beispiel: <code>gpt-5.4</code> <a href="https://developers.openai.com/codex/models" target="_blank">OpenAI Codex/OpenAI modelle</a></td>
287
319
  </tr>
288
320
  <tr>
289
- <td width="250"><code>COPILOT_MODEL</code></td>
321
+ <td width="332"><code>COPILOT_MODEL</code></td>
290
322
  <td>Optionale Model-Überschreibung für Copilot. Leer lassen, um das Standardmodell von Copilot CLI zu verwenden. Beispiele: <code>gpt-5.4</code>, <code>claude-sonnet-4.6</code> <a href="https://docs.github.com/en/copilot/reference/ai-models/supported-models" target="_blank">GitHub Copilot unterstützte modelle</a></td>
291
323
  </tr>
292
324
  <tr>
293
- <td width="250"><code>CODEX_APPROVAL_POLICY</code></td>
325
+ <td width="332"><code>CODEX_APPROVAL_POLICY</code></td>
294
326
  <td>An Codex übergebener Freigabemodus. Standard: <code>never</code>.</td>
295
327
  </tr>
296
328
  <tr>
297
- <td width="250"><code>CODEX_SANDBOX_MODE</code></td>
329
+ <td width="332"><code>CODEX_SANDBOX_MODE</code></td>
298
330
  <td>An Codex übergebener Sandbox-Modus. Standard: <code>workspace-write</code>.</td>
299
331
  </tr>
300
332
  <tr>
301
- <td width="250"><code>CODEX_SKIP_GIT_REPO_CHECK</code></td>
333
+ <td width="332"><code>CODEX_SKIP_GIT_REPO_CHECK</code></td>
302
334
  <td>Wenn aktiviert, werden Codex-Prüfungen für vertrauenswürdige Repositories immer übersprungen.</td>
303
335
  </tr>
304
336
  <tr>
305
- <td width="250"><code>ENABLE_COMMIT_COMMAND</code></td>
337
+ <td width="332"><code>ENABLE_COMMIT_COMMAND</code></td>
306
338
  <td>Den Telegram-Befehl <code>/commit</code> aktivieren. Standard: <code>false</code>.</td>
307
339
  </tr>
308
340
  <tr>
309
- <td width="250"><code>AGENT_HARD_TIMEOUT_SECONDS</code></td>
341
+ <td width="332"><code>AGENT_HARD_TIMEOUT_SECONDS</code></td>
310
342
  <td>Hartes Zeitlimit für einen einzelnen Agentenlauf. Standard: <code>0</code> (deaktiviert).</td>
311
343
  </tr>
312
344
  <tr>
313
- <td width="250"><code>SNAPSHOT_TEXT_FILE_MAX_BYTES</code></td>
345
+ <td width="332"><code>SNAPSHOT_TEXT_FILE_MAX_BYTES</code></td>
314
346
  <td>Maximale Dateigröße, die der Bot als Text liest, wenn er Vorher/Nachher-Snapshots für Run-Diffs erstellt. Standard: <code>200000</code>.</td>
315
347
  </tr>
316
348
  <tr>
317
- <td width="250"><code>MAX_TELEGRAM_MESSAGE_LENGTH</code></td>
349
+ <td width="332"><code>MAX_TELEGRAM_MESSAGE_LENGTH</code></td>
318
350
  <td>Maximale Nachrichtengröße, bevor die App Antworten aufteilt. Standard: <code>3000</code>.</td>
319
351
  </tr>
320
352
  <tr>
321
- <td width="250"><code>ENABLE_SENSITIVE_DIFF_FILTER</code></td>
353
+ <td width="332"><code>ENABLE_SENSITIVE_DIFF_FILTER</code></td>
322
354
  <td>Diffs für sensible Dateien ausblenden. Standard: <code>true</code>.</td>
323
355
  </tr>
324
356
  <tr>
325
- <td width="250"><code>ENABLE_SECRET_SCRUB_FILTER</code></td>
357
+ <td width="332"><code>ENABLE_SECRET_SCRUB_FILTER</code></td>
326
358
  <td>Tokens, Schlüssel, <code>.env</code>-Werte, Zertifikate und ähnliche geheime Ausgaben vor dem Senden an Telegram unkenntlich machen. Standard: <code>true</code> (dringend empfohlen).</td>
327
359
  </tr>
328
360
  <tr>
329
- <td width="250"><code>SNAPSHOT_INCLUDE_PATH_GLOBS</code></td>
361
+ <td width="332"><code>SNAPSHOT_INCLUDE_PATH_GLOBS</code></td>
330
362
  <td>Passende Pfade in Diffs immer einschließen. Beispiel: <code>.github/*,.profile.test,.profile.prod</code></td>
331
363
  </tr>
332
364
  <tr>
333
- <td width="250"><code>SNAPSHOT_EXCLUDE_PATH_GLOBS</code></td>
365
+ <td width="332"><code>SNAPSHOT_EXCLUDE_PATH_GLOBS</code></td>
334
366
  <td>Zusätzliche Diff-Ausschlüsse zusätzlich zu den Standardwerten hinzufügen. Beispiel: <code>.*,personal/*,sensitive*.txt</code> Hinweis: <code>.*</code> erfasst versteckte Pfade, auch Dateien in versteckten Verzeichnissen.</td>
335
367
  </tr>
336
368
  </table>
337
369
 
370
+
371
+
372
+
373
+ <h3>Spracherkennung</h3>
374
+
375
+ <table>
376
+ <tr>
377
+ <td width="332"><code>ENABLE_OPENAI_WHISPER_SPEECH_TO_TEXT</code></td>
378
+ <td>Standard: <code>false</code>. Wenn <code>true</code>, werden Sprachnachrichten und Audiodateien erkannt. Das System prüft die erforderlichen Binärdateien oder Bibliotheken und fordert zur Installation auf, falls etwas fehlt.</td>
379
+ </tr>
380
+ <tr>
381
+ <td><code>OPENAI_WHISPER_MODEL</code></td>
382
+ <td>Modell für Whisper STT. Standard: <code>base</code><br />Verfügbare Modelle: <code>tiny</code> ca. <code>72 MB</code>, <code>base</code> ca. <code>139 MB</code>, <code>large-v3-turbo</code> ca. <code>1.5 GB</code><br />Modelle werden bei der ersten Sprachnachricht automatisch heruntergeladen. Empfehlung: <code>base</code> für den allgemeinen Gebrauch. Wenn du bessere Genauigkeit und Qualität willst, kannst du <code>turbo</code> ausprobieren.</td>
383
+ </tr>
384
+ <tr>
385
+ <td><code>OPENAI_WHISPER_TIMEOUT_SECONDS</code></td>
386
+ <td>Standard: <code>120</code>. Timeout für den STT-Prozess. Normalerweise ist die Verarbeitung schnell genug. Wenn du jedoch <code>turbo</code> wählst, kann der erste Sprachaufruf während des Modelldownloads je nach Internetgeschwindigkeit das Timeout überschreiten.</td>
387
+ </tr>
388
+ </table>
389
+
338
390
  <h3>Status und Logs</h3>
339
391
 
340
392
  <table>
@@ -344,7 +396,7 @@ Der Bot akzeptiert derzeit:
344
396
  </tr>
345
397
  <tr>
346
398
  <td><code>~/.coding-agent-telegram/state.json.bak</code></td>
347
- <td>Backup-Datei für den Status.</td>
399
+ <td>Sicherungsdatei für den Status.</td>
348
400
  </tr>
349
401
  <tr>
350
402
  <td><code>~/.coding-agent-telegram/logs</code></td>
@@ -470,8 +522,8 @@ Der Bot behandelt Projekt und branch als zusammengehörig.
470
522
 
471
523
  Wenn du eine branch erstellst oder wechselst, führt dich der Bot explizit durch die Quelle:
472
524
 
473
- - `local/<branch>` bedeutet: lokale branch als Quelle verwenden
474
- - `origin/<branch>` bedeutet: zuerst von der Remote-branch aktualisieren und dann wechseln
525
+ - <code>local/&lt;branch&gt;</code> bedeutet: lokale branch als Quelle verwenden
526
+ - <code>origin/&lt;branch&gt;</code> bedeutet: zuerst von der Remote-branch aktualisieren und dann wechseln
475
527
 
476
528
  Wenn der Bot feststellt, dass die in der Session gespeicherte branch und die aktuelle Repository-branch nicht übereinstimmen, macht er nicht blind weiter. Er fragt dich, welche branch verwendet werden soll:
477
529
 
@@ -489,7 +541,7 @@ Wenn die bevorzugte Quell-branch fehlt, bietet der Bot stattdessen Fallback-Quel
489
541
  - `/commit` kann mit `ENABLE_COMMIT_COMMAND` komplett deaktiviert werden
490
542
  - Schreibende `/commit`-Operationen sind nur für vertrauenswürdige Projekte erlaubt
491
543
 
492
- ## 🪵 Logs
544
+ ## 🪵 Protokolle
493
545
 
494
546
  Logs werden **sowohl auf stdout als auch in eine rotierende Log-Datei** geschrieben unter:
495
547
 
@@ -529,7 +581,7 @@ Logs werden **sowohl auf stdout als auch in eine rotierende Log-Datei** geschrie
529
581
  - `pyproject.toml`
530
582
  Packaging- und Abhängigkeitskonfiguration
531
583
 
532
- ## 📦 Release-Versionierung
584
+ ## 📦 Veröffentlichung-Versionierung
533
585
 
534
586
  Paketversionen werden aus Git-Tags abgeleitet.
535
587