deepy-cli 0.2.19__tar.gz → 0.2.21__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 (108) hide show
  1. deepy_cli-0.2.21/PKG-INFO +370 -0
  2. deepy_cli-0.2.21/README.md +338 -0
  3. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/pyproject.toml +1 -1
  4. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/__init__.py +1 -1
  5. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/cli.py +5 -6
  6. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/config/settings.py +11 -5
  7. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/skills/skill-installer/SKILL.md +1 -1
  8. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/app.py +2 -3
  9. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/screens.py +1 -1
  10. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/status_footer.py +1 -1
  11. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/terminal.py +493 -356
  12. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/theme_picker.py +1 -2
  13. deepy_cli-0.2.19/PKG-INFO +0 -449
  14. deepy_cli-0.2.19/README.md +0 -417
  15. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/__main__.py +0 -0
  16. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/background_tasks.py +0 -0
  17. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/config/__init__.py +0 -0
  18. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/__init__.py +0 -0
  19. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/skills/skill-creator/SKILL.md +0 -0
  20. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/AskUserQuestion.md +0 -0
  21. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/Search.md +0 -0
  22. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/WebFetch.md +0 -0
  23. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/WebSearch.md +0 -0
  24. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/__init__.py +0 -0
  25. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/apply_patch.md +0 -0
  26. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/edit_text.md +0 -0
  27. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/read_file.md +0 -0
  28. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/shell.md +0 -0
  29. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/task_list.md +0 -0
  30. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/task_output.md +0 -0
  31. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/task_stop.md +0 -0
  32. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/test_shell.md +0 -0
  33. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/todo_write.md +0 -0
  34. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/data/tools/write_file.md +0 -0
  35. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/errors.py +0 -0
  36. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/input_suggestions.py +0 -0
  37. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/__init__.py +0 -0
  38. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/agent.py +0 -0
  39. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/compaction.py +0 -0
  40. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/context.py +0 -0
  41. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/events.py +0 -0
  42. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/model_capabilities.py +0 -0
  43. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/provider.py +0 -0
  44. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/replay.py +0 -0
  45. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/runner.py +0 -0
  46. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/llm/thinking.py +0 -0
  47. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/mcp.py +0 -0
  48. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/prompts/__init__.py +0 -0
  49. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/prompts/compact.py +0 -0
  50. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/prompts/init_agents.py +0 -0
  51. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/prompts/rules.py +0 -0
  52. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/prompts/runtime_context.py +0 -0
  53. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/prompts/system.py +0 -0
  54. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/prompts/tool_docs.py +0 -0
  55. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/session_cost.py +0 -0
  56. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/sessions/__init__.py +0 -0
  57. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/sessions/jsonl.py +0 -0
  58. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/sessions/manager.py +0 -0
  59. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/skill_market.py +0 -0
  60. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/skills.py +0 -0
  61. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/status.py +0 -0
  62. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/subagents.py +0 -0
  63. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/todos.py +0 -0
  64. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/__init__.py +0 -0
  65. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/agents.py +0 -0
  66. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/builtin.py +0 -0
  67. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/file_state.py +0 -0
  68. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/result.py +0 -0
  69. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/search.py +0 -0
  70. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/shell_output.py +0 -0
  71. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/shell_utils.py +0 -0
  72. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tools/test_shell.py +0 -0
  73. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/__init__.py +0 -0
  74. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/commands.py +0 -0
  75. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/compat.py +0 -0
  76. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/diff.py +0 -0
  77. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/runner.py +0 -0
  78. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/state.py +0 -0
  79. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/tui/widgets.py +0 -0
  80. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/types/__init__.py +0 -0
  81. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/types/sdk.py +0 -0
  82. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/types/tool_payloads.py +0 -0
  83. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/__init__.py +0 -0
  84. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/app.py +0 -0
  85. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/ask_user_question.py +0 -0
  86. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/exit_summary.py +0 -0
  87. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/file_mentions.py +0 -0
  88. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/loading_text.py +0 -0
  89. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/local_command.py +0 -0
  90. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/markdown.py +0 -0
  91. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/message_view.py +0 -0
  92. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/model_picker.py +0 -0
  93. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/prompt_buffer.py +0 -0
  94. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/prompt_input.py +0 -0
  95. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/session_list.py +0 -0
  96. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/session_picker.py +0 -0
  97. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/skill_picker.py +0 -0
  98. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/slash_commands.py +0 -0
  99. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/styles.py +0 -0
  100. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/thinking_state.py +0 -0
  101. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/ui/welcome.py +0 -0
  102. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/update_check.py +0 -0
  103. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/usage.py +0 -0
  104. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/utils/__init__.py +0 -0
  105. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/utils/debug_logger.py +0 -0
  106. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/utils/error_logger.py +0 -0
  107. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/utils/json.py +0 -0
  108. {deepy_cli-0.2.19 → deepy_cli-0.2.21}/src/deepy/utils/notify.py +0 -0
@@ -0,0 +1,370 @@
1
+ Metadata-Version: 2.3
2
+ Name: deepy-cli
3
+ Version: 0.2.21
4
+ Summary: Deepy - Vibe coding for DeepSeek models in your terminal
5
+ Keywords: deepseek,coding-agent,terminal,cli,agents
6
+ Author: kirineko
7
+ Author-email: kirineko <kirineko@qq.com>
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Topic :: Software Development
14
+ Classifier: Topic :: Terminals
15
+ Requires-Dist: openai-agents>=0.17.0
16
+ Requires-Dist: openai>=2.26,<3
17
+ Requires-Dist: orjson>=3.10,<4
18
+ Requires-Dist: pathspec>=1.1.1
19
+ Requires-Dist: pydantic>=2.12,<3
20
+ Requires-Dist: prompt-toolkit>=3.0,<4
21
+ Requires-Dist: regex>=2026.5.9
22
+ Requires-Dist: pyyaml>=6.0,<7
23
+ Requires-Dist: rich>=14.2,<15
24
+ Requires-Dist: textual>=8.2,<9
25
+ Requires-Dist: tiktoken>=0.9,<1
26
+ Requires-Dist: tomli-w>=1
27
+ Requires-Python: >=3.12
28
+ Project-URL: Homepage, https://kirineko.github.io/deepy/
29
+ Project-URL: Repository, https://github.com/kirineko/deepy
30
+ Project-URL: Issues, https://github.com/kirineko/deepy/issues
31
+ Description-Content-Type: text/markdown
32
+
33
+ <p align="center">
34
+ <img src="asset/deepy-logo.webp" alt="Deepy logo" width="144">
35
+ </p>
36
+
37
+ <h1 align="center">Deepy</h1>
38
+
39
+ <p align="center">
40
+ A terminal-native coding agent for real project work.
41
+ </p>
42
+
43
+ <p align="center">
44
+ <a href="https://deepy.kirineko.tech/"><strong>Install Website</strong></a>
45
+ ·
46
+ <a href="https://kirineko.github.io/deepy/">GitHub Pages</a>
47
+ ·
48
+ <a href="README.zh-CN.md">中文文档</a>
49
+ </p>
50
+
51
+ ![Deepy terminal welcome screen](asset/welcome.webp)
52
+
53
+ ## What Deepy Is
54
+
55
+ Deepy is a Python CLI coding agent for real project work. It stays in your
56
+ terminal and combines OpenAI Agents SDK tool orchestration, project Rules,
57
+ Agent Skills, MCP, subagents, sessions, and visible UI to read code, edit files,
58
+ run commands, search the web, and resume long tasks. It is DeepSeek-first while
59
+ also supporting OpenAI-compatible providers.
60
+
61
+ ## Why Use It
62
+
63
+ - **DeepSeek-first agent loop**: tuned for DeepSeek V4 thinking mode while still
64
+ supporting OpenAI-compatible providers such as OpenRouter and Xiaomi MiMo.
65
+ - **Transparent terminal execution**: thinking, tool calls, diffs, shell output,
66
+ usage, and context pressure stay visible in the transcript.
67
+ - **Project memory and continuity**: `AGENTS.md` rules, JSONL sessions,
68
+ `/resume`, `/compact`, automatic compacting, and context-window status keep
69
+ long project work recoverable.
70
+ - **Extensible agent ecosystem**: Agent Skills, MCP servers, subagents, and
71
+ skill-market installation give Deepy reusable workflows beyond built-in tools.
72
+ - **Practical coding controls**: stale-write protection, direct `!cmd` local
73
+ commands, managed background tasks, and `/ps` / `/stop` keep local execution
74
+ reviewable.
75
+ - **Cross-platform shell support**: POSIX shell, PowerShell, cmd, Windows paths,
76
+ UTF-8 output, CRLF editing, and non-interactive Windows local command mode.
77
+
78
+ ## Quick Start
79
+
80
+ 1. Install `uv`:
81
+
82
+ ```bash
83
+ # macOS / Linux
84
+ curl -LsSf https://astral.sh/uv/install.sh | sh
85
+
86
+ # Windows PowerShell
87
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
88
+ ```
89
+
90
+ 2. Install Deepy:
91
+
92
+ ```bash
93
+ uv tool install deepy-cli
94
+ ```
95
+
96
+ 3. Start Deepy in a project:
97
+
98
+ ```bash
99
+ cd your-project
100
+ deepy
101
+ ```
102
+
103
+ If Deepy has not been configured yet, the first run guides you through provider,
104
+ API key, model, and theme setup. You can later run `deepy config setup` to
105
+ reconfigure manually.
106
+
107
+ Upgrade or uninstall:
108
+
109
+ ```bash
110
+ uv tool upgrade deepy-cli
111
+ uv tool uninstall deepy-cli
112
+ ```
113
+
114
+ ## First Session
115
+
116
+ Try requests like these inside `deepy`:
117
+
118
+ ```text
119
+ Summarize this project and point out the main entry points.
120
+ Read @src/app.py and explain how the request flow works.
121
+ Fix the failing test, run the focused test, and summarize the diff.
122
+ Search the web for the current API behavior, then update the integration notes.
123
+ ```
124
+
125
+ Useful interactive inputs:
126
+
127
+ ```text
128
+ @src/app.py Mention a file in the current project
129
+ !pytest -q Run a local non-interactive command directly
130
+ /model Select provider, model, and thinking mode
131
+ /status Show usage, context pressure, and DeepSeek balance
132
+ /resume Resume a previous project session
133
+ /new Start a fresh session
134
+ /compact Compact the active session context
135
+ /mcp Show MCP server status and tools
136
+ /skills Manage local and market Skills
137
+ /ps Show managed background shell tasks
138
+ /stop Choose background shell tasks to stop
139
+ Esc Interrupt the current model turn
140
+ Ctrl+D Press twice to quit
141
+ ```
142
+
143
+ ## What It Looks Like
144
+
145
+ ### Terminal-Centered Agent Loop
146
+
147
+ Deepy keeps model reasoning, WebFetch, shell output, and status lines visible in
148
+ one transcript.
149
+
150
+ ![Deepy thinking, WebFetch, and shell output](asset/webfetch-shell-thinking.webp)
151
+
152
+ ### Code Editing With Reviewable Diff
153
+
154
+ File edits are shown with path information and readable diff output.
155
+
156
+ ![Deepy edit diff preview](asset/edit-diff.webp)
157
+
158
+ ### Search, Fetch, And Local Commands
159
+
160
+ Use WebSearch / WebFetch for external context, `@` for file mentions, and `!`
161
+ for direct local commands.
162
+
163
+ ![Deepy web research workflow](asset/websearch.webp)
164
+
165
+ ## Stable UI And Experimental TUI
166
+
167
+ The default `deepy` command starts the stable Rich/prompt-toolkit terminal UI.
168
+ The opt-in Textual interface is available with:
169
+
170
+ ```bash
171
+ deepy tui
172
+ ```
173
+
174
+ The TUI has a scrollable transcript, live thinking blocks, richer tool output
175
+ blocks, slash-command and `@file` suggestions, status/help screens, and a
176
+ Deepy-owned diff view. It remains experimental and may change between releases.
177
+
178
+ ![Deepy Textual TUI](asset/deepy-tui.webp)
179
+
180
+ `/status` shows session/project usage, context-window pressure, and DeepSeek
181
+ balance in one panel. Exiting the TUI prints the same compact session summary
182
+ as the stable terminal UI.
183
+
184
+ See [docs/deepy-ui-and-tui.md](docs/deepy-ui-and-tui.md) for the full feature
185
+ comparison and current limitations.
186
+
187
+ ## Rules
188
+
189
+ Rules are project and personal instructions that shape how Deepy should work.
190
+ Deepy automatically loads them from `AGENTS.md` files:
191
+
192
+ - `~/.deepy/AGENTS.md` for Deepy-wide personal guidance
193
+ - `AGENTS.md` files from the git root down to the current working directory
194
+
195
+ Project `AGENTS.md` files are loaded from broad to specific. A file in a nested
196
+ directory appears after the repository root file and takes precedence when rules
197
+ conflict. Direct user instructions still take precedence over loaded
198
+ `AGENTS.md` guidance.
199
+
200
+ Run `/init` in the interactive terminal to have Deepy inspect the repository and
201
+ create or refresh the project root `AGENTS.md`.
202
+
203
+ ## Skills
204
+
205
+ Skills are reusable capability packs. Deepy discovers three kinds:
206
+
207
+ - **Project skills**: `<project>/.agents/skills/<name>/SKILL.md`. These are
208
+ shared with the current repository and take priority over user or built-in
209
+ skills with the same name.
210
+ - **User skills**: `~/.agents/skills/<name>/SKILL.md`. These are personal
211
+ skills available across projects and override built-in skills with the same
212
+ name.
213
+ - **Built-in skills**: packaged with Deepy for common workflows. They are always
214
+ available, but they are not editable or uninstallable through the skill UI.
215
+
216
+ Skills use the standard Agent Skills progressive-disclosure flow: Deepy shows
217
+ Skill metadata first, and the model reads the full `SKILL.md` only when the task
218
+ matches that skill.
219
+
220
+ The skill market is a curated source for installable Skills. Market-installed
221
+ Skills can be installed into user or project scope, updated, and uninstalled
222
+ through Deepy's Skills UI. Deepy records market-installed Skill metadata under
223
+ `~/.deepy/skill-market/`.
224
+
225
+ Use `/skills` to manage local and market Skills, or invoke a Skill directly:
226
+
227
+ ```text
228
+ /skills
229
+ /<name> [request]
230
+ ```
231
+
232
+ ![Deepy Skills market](asset/skill-market.webp)
233
+
234
+ ## MCP
235
+
236
+ Deepy can load MCP servers through the OpenAI Agents SDK. MCP is how you connect
237
+ external tools such as search providers, databases, local services, or
238
+ organization-specific context providers.
239
+
240
+ Most users only need `~/.deepy/mcp.json`. Project-level MCP configuration is
241
+ ignored by default because stdio MCP servers can start local commands. Enable it
242
+ only for repositories you trust.
243
+
244
+ See [docs/mcp.md](docs/mcp.md) for setup, fields, search preference, subagent
245
+ MCP inheritance, and troubleshooting.
246
+
247
+ ## Trust Boundaries
248
+
249
+ - File edits are rendered with path information and readable diffs.
250
+ - Existing file replacement uses stale-write protection.
251
+ - `!cmd` is direct local command mode; model-started shell commands are shown in
252
+ the transcript.
253
+ - MCP stdio servers start local commands. Project MCP config is ignored by
254
+ default and should only be enabled for repositories you trust.
255
+ - Built-in subagents do not receive source mutation tools by default.
256
+ - The tester subagent uses constrained `test_shell`, not raw unrestricted
257
+ `shell`.
258
+
259
+ ## Learning Resources
260
+
261
+ | Topic | English | Chinese |
262
+ | --- | --- | --- |
263
+ | Tutorial videos | [docs/tutorial-videos.md](docs/tutorial-videos.md) | [docs/tutorial-videos.zh-CN.md](docs/tutorial-videos.zh-CN.md) |
264
+ | MCP setup and troubleshooting | [docs/mcp.md](docs/mcp.md) | [docs/mcp.zh-CN.md](docs/mcp.zh-CN.md) |
265
+ | Subagents and custom subagents | [docs/subagents.md](docs/subagents.md) | [docs/subagents.zh-CN.md](docs/subagents.zh-CN.md) |
266
+ | Stable UI versus experimental TUI | [docs/deepy-ui-and-tui.md](docs/deepy-ui-and-tui.md) | [docs/deepy-ui-and-tui.zh-CN.md](docs/deepy-ui-and-tui.zh-CN.md) |
267
+
268
+ ## Command Reference
269
+
270
+ ```bash
271
+ deepy --version
272
+ deepy config setup
273
+ deepy config reset
274
+ deepy config theme
275
+ deepy doctor
276
+ deepy doctor --live --json
277
+ deepy status
278
+ deepy tui
279
+ deepy skills list
280
+ deepy skills show <name>
281
+ deepy sessions list
282
+ deepy sessions show <session-id>
283
+ deepy run "summarize this project"
284
+ ```
285
+
286
+ Inside the interactive terminal:
287
+
288
+ ```text
289
+ /help Show interactive help
290
+ /model Select provider, model, and thinking mode
291
+ /status Show usage, context pressure, and DeepSeek balance
292
+ /resume Resume a previous project session
293
+ /new Start a fresh session
294
+ /compact Compact the active session context
295
+ /mcp Show MCP server status and tools
296
+ /skills Manage local and market Skills
297
+ /<name> [request] Invoke a Skill directly
298
+ /init Create or update project AGENTS.md
299
+ /theme Show or change terminal UI theme
300
+ /ps Show managed background shell tasks
301
+ /stop Choose background shell tasks to stop
302
+ ```
303
+
304
+ ## Configuration
305
+
306
+ Deepy stores configuration in `~/.deepy/config.toml`. The interactive first-run
307
+ setup creates this file for most users.
308
+
309
+ Minimal resolved shape:
310
+
311
+ ```toml
312
+ [model]
313
+ api_key = "sk-..."
314
+ provider = "deepseek"
315
+ name = "deepseek-v4-pro"
316
+ base_url = "https://api.deepseek.com"
317
+ thinking = true
318
+ reasoning_effort = "max"
319
+
320
+ [context]
321
+ window_tokens = 1048576
322
+ compact_trigger_ratio = 0.8
323
+ reserved_context_tokens = 50000
324
+ compact_preserve_recent_messages = 2
325
+
326
+ [ui]
327
+ theme = "dark" # dark or light
328
+ ```
329
+
330
+ Manual configuration commands:
331
+
332
+ ```bash
333
+ deepy config setup
334
+ deepy config init --api-key sk-... --provider deepseek --model deepseek-v4-pro
335
+ deepy config init --api-key sk-or-... --provider openrouter --model xiaomi/mimo-v2.5-pro
336
+ deepy config init --api-key sk-or-... --provider openrouter --model anthropic/claude-sonnet-4.5 --thinking minimal
337
+ deepy config init --api-key sk-... --provider xiaomi --model mimo-v2.5-pro
338
+ deepy config theme light
339
+ ```
340
+
341
+ Supported provider/model pairs:
342
+
343
+ - `deepseek`: `deepseek-v4-pro`, `deepseek-v4-flash`; thinking modes `none`,
344
+ `high`, `max`.
345
+ - `openrouter`: UI model selection offers `xiaomi/mimo-v2.5-pro`,
346
+ `xiaomi/mimo-v2.5`; setup/init may also use a model id copied from
347
+ OpenRouter. Thinking modes are `enabled`, `disabled`, `xhigh`, `high`,
348
+ `medium`, `low`, `minimal`, `none`.
349
+ - `xiaomi`: `mimo-v2.5-pro`, `mimo-v2.5`; thinking modes `enabled`,
350
+ `disabled`.
351
+
352
+ WebSearch uses Deepy's hosted SearXNG endpoint by default. You can override it:
353
+
354
+ ```toml
355
+ [tools.web_search]
356
+ searxng_url = "https://your-searxng.example/"
357
+ ```
358
+
359
+ ## Development
360
+
361
+ ```bash
362
+ uv sync --group dev
363
+ uv run pytest
364
+ uv run ruff check
365
+ uv run ty check src
366
+ uv build
367
+ ```
368
+
369
+ The Python package is built from `src/deepy`. GitHub Pages files and screenshot
370
+ assets live outside the package directory and are not included in the wheel.
@@ -0,0 +1,338 @@
1
+ <p align="center">
2
+ <img src="asset/deepy-logo.webp" alt="Deepy logo" width="144">
3
+ </p>
4
+
5
+ <h1 align="center">Deepy</h1>
6
+
7
+ <p align="center">
8
+ A terminal-native coding agent for real project work.
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://deepy.kirineko.tech/"><strong>Install Website</strong></a>
13
+ ·
14
+ <a href="https://kirineko.github.io/deepy/">GitHub Pages</a>
15
+ ·
16
+ <a href="README.zh-CN.md">中文文档</a>
17
+ </p>
18
+
19
+ ![Deepy terminal welcome screen](asset/welcome.webp)
20
+
21
+ ## What Deepy Is
22
+
23
+ Deepy is a Python CLI coding agent for real project work. It stays in your
24
+ terminal and combines OpenAI Agents SDK tool orchestration, project Rules,
25
+ Agent Skills, MCP, subagents, sessions, and visible UI to read code, edit files,
26
+ run commands, search the web, and resume long tasks. It is DeepSeek-first while
27
+ also supporting OpenAI-compatible providers.
28
+
29
+ ## Why Use It
30
+
31
+ - **DeepSeek-first agent loop**: tuned for DeepSeek V4 thinking mode while still
32
+ supporting OpenAI-compatible providers such as OpenRouter and Xiaomi MiMo.
33
+ - **Transparent terminal execution**: thinking, tool calls, diffs, shell output,
34
+ usage, and context pressure stay visible in the transcript.
35
+ - **Project memory and continuity**: `AGENTS.md` rules, JSONL sessions,
36
+ `/resume`, `/compact`, automatic compacting, and context-window status keep
37
+ long project work recoverable.
38
+ - **Extensible agent ecosystem**: Agent Skills, MCP servers, subagents, and
39
+ skill-market installation give Deepy reusable workflows beyond built-in tools.
40
+ - **Practical coding controls**: stale-write protection, direct `!cmd` local
41
+ commands, managed background tasks, and `/ps` / `/stop` keep local execution
42
+ reviewable.
43
+ - **Cross-platform shell support**: POSIX shell, PowerShell, cmd, Windows paths,
44
+ UTF-8 output, CRLF editing, and non-interactive Windows local command mode.
45
+
46
+ ## Quick Start
47
+
48
+ 1. Install `uv`:
49
+
50
+ ```bash
51
+ # macOS / Linux
52
+ curl -LsSf https://astral.sh/uv/install.sh | sh
53
+
54
+ # Windows PowerShell
55
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
56
+ ```
57
+
58
+ 2. Install Deepy:
59
+
60
+ ```bash
61
+ uv tool install deepy-cli
62
+ ```
63
+
64
+ 3. Start Deepy in a project:
65
+
66
+ ```bash
67
+ cd your-project
68
+ deepy
69
+ ```
70
+
71
+ If Deepy has not been configured yet, the first run guides you through provider,
72
+ API key, model, and theme setup. You can later run `deepy config setup` to
73
+ reconfigure manually.
74
+
75
+ Upgrade or uninstall:
76
+
77
+ ```bash
78
+ uv tool upgrade deepy-cli
79
+ uv tool uninstall deepy-cli
80
+ ```
81
+
82
+ ## First Session
83
+
84
+ Try requests like these inside `deepy`:
85
+
86
+ ```text
87
+ Summarize this project and point out the main entry points.
88
+ Read @src/app.py and explain how the request flow works.
89
+ Fix the failing test, run the focused test, and summarize the diff.
90
+ Search the web for the current API behavior, then update the integration notes.
91
+ ```
92
+
93
+ Useful interactive inputs:
94
+
95
+ ```text
96
+ @src/app.py Mention a file in the current project
97
+ !pytest -q Run a local non-interactive command directly
98
+ /model Select provider, model, and thinking mode
99
+ /status Show usage, context pressure, and DeepSeek balance
100
+ /resume Resume a previous project session
101
+ /new Start a fresh session
102
+ /compact Compact the active session context
103
+ /mcp Show MCP server status and tools
104
+ /skills Manage local and market Skills
105
+ /ps Show managed background shell tasks
106
+ /stop Choose background shell tasks to stop
107
+ Esc Interrupt the current model turn
108
+ Ctrl+D Press twice to quit
109
+ ```
110
+
111
+ ## What It Looks Like
112
+
113
+ ### Terminal-Centered Agent Loop
114
+
115
+ Deepy keeps model reasoning, WebFetch, shell output, and status lines visible in
116
+ one transcript.
117
+
118
+ ![Deepy thinking, WebFetch, and shell output](asset/webfetch-shell-thinking.webp)
119
+
120
+ ### Code Editing With Reviewable Diff
121
+
122
+ File edits are shown with path information and readable diff output.
123
+
124
+ ![Deepy edit diff preview](asset/edit-diff.webp)
125
+
126
+ ### Search, Fetch, And Local Commands
127
+
128
+ Use WebSearch / WebFetch for external context, `@` for file mentions, and `!`
129
+ for direct local commands.
130
+
131
+ ![Deepy web research workflow](asset/websearch.webp)
132
+
133
+ ## Stable UI And Experimental TUI
134
+
135
+ The default `deepy` command starts the stable Rich/prompt-toolkit terminal UI.
136
+ The opt-in Textual interface is available with:
137
+
138
+ ```bash
139
+ deepy tui
140
+ ```
141
+
142
+ The TUI has a scrollable transcript, live thinking blocks, richer tool output
143
+ blocks, slash-command and `@file` suggestions, status/help screens, and a
144
+ Deepy-owned diff view. It remains experimental and may change between releases.
145
+
146
+ ![Deepy Textual TUI](asset/deepy-tui.webp)
147
+
148
+ `/status` shows session/project usage, context-window pressure, and DeepSeek
149
+ balance in one panel. Exiting the TUI prints the same compact session summary
150
+ as the stable terminal UI.
151
+
152
+ See [docs/deepy-ui-and-tui.md](docs/deepy-ui-and-tui.md) for the full feature
153
+ comparison and current limitations.
154
+
155
+ ## Rules
156
+
157
+ Rules are project and personal instructions that shape how Deepy should work.
158
+ Deepy automatically loads them from `AGENTS.md` files:
159
+
160
+ - `~/.deepy/AGENTS.md` for Deepy-wide personal guidance
161
+ - `AGENTS.md` files from the git root down to the current working directory
162
+
163
+ Project `AGENTS.md` files are loaded from broad to specific. A file in a nested
164
+ directory appears after the repository root file and takes precedence when rules
165
+ conflict. Direct user instructions still take precedence over loaded
166
+ `AGENTS.md` guidance.
167
+
168
+ Run `/init` in the interactive terminal to have Deepy inspect the repository and
169
+ create or refresh the project root `AGENTS.md`.
170
+
171
+ ## Skills
172
+
173
+ Skills are reusable capability packs. Deepy discovers three kinds:
174
+
175
+ - **Project skills**: `<project>/.agents/skills/<name>/SKILL.md`. These are
176
+ shared with the current repository and take priority over user or built-in
177
+ skills with the same name.
178
+ - **User skills**: `~/.agents/skills/<name>/SKILL.md`. These are personal
179
+ skills available across projects and override built-in skills with the same
180
+ name.
181
+ - **Built-in skills**: packaged with Deepy for common workflows. They are always
182
+ available, but they are not editable or uninstallable through the skill UI.
183
+
184
+ Skills use the standard Agent Skills progressive-disclosure flow: Deepy shows
185
+ Skill metadata first, and the model reads the full `SKILL.md` only when the task
186
+ matches that skill.
187
+
188
+ The skill market is a curated source for installable Skills. Market-installed
189
+ Skills can be installed into user or project scope, updated, and uninstalled
190
+ through Deepy's Skills UI. Deepy records market-installed Skill metadata under
191
+ `~/.deepy/skill-market/`.
192
+
193
+ Use `/skills` to manage local and market Skills, or invoke a Skill directly:
194
+
195
+ ```text
196
+ /skills
197
+ /<name> [request]
198
+ ```
199
+
200
+ ![Deepy Skills market](asset/skill-market.webp)
201
+
202
+ ## MCP
203
+
204
+ Deepy can load MCP servers through the OpenAI Agents SDK. MCP is how you connect
205
+ external tools such as search providers, databases, local services, or
206
+ organization-specific context providers.
207
+
208
+ Most users only need `~/.deepy/mcp.json`. Project-level MCP configuration is
209
+ ignored by default because stdio MCP servers can start local commands. Enable it
210
+ only for repositories you trust.
211
+
212
+ See [docs/mcp.md](docs/mcp.md) for setup, fields, search preference, subagent
213
+ MCP inheritance, and troubleshooting.
214
+
215
+ ## Trust Boundaries
216
+
217
+ - File edits are rendered with path information and readable diffs.
218
+ - Existing file replacement uses stale-write protection.
219
+ - `!cmd` is direct local command mode; model-started shell commands are shown in
220
+ the transcript.
221
+ - MCP stdio servers start local commands. Project MCP config is ignored by
222
+ default and should only be enabled for repositories you trust.
223
+ - Built-in subagents do not receive source mutation tools by default.
224
+ - The tester subagent uses constrained `test_shell`, not raw unrestricted
225
+ `shell`.
226
+
227
+ ## Learning Resources
228
+
229
+ | Topic | English | Chinese |
230
+ | --- | --- | --- |
231
+ | Tutorial videos | [docs/tutorial-videos.md](docs/tutorial-videos.md) | [docs/tutorial-videos.zh-CN.md](docs/tutorial-videos.zh-CN.md) |
232
+ | MCP setup and troubleshooting | [docs/mcp.md](docs/mcp.md) | [docs/mcp.zh-CN.md](docs/mcp.zh-CN.md) |
233
+ | Subagents and custom subagents | [docs/subagents.md](docs/subagents.md) | [docs/subagents.zh-CN.md](docs/subagents.zh-CN.md) |
234
+ | Stable UI versus experimental TUI | [docs/deepy-ui-and-tui.md](docs/deepy-ui-and-tui.md) | [docs/deepy-ui-and-tui.zh-CN.md](docs/deepy-ui-and-tui.zh-CN.md) |
235
+
236
+ ## Command Reference
237
+
238
+ ```bash
239
+ deepy --version
240
+ deepy config setup
241
+ deepy config reset
242
+ deepy config theme
243
+ deepy doctor
244
+ deepy doctor --live --json
245
+ deepy status
246
+ deepy tui
247
+ deepy skills list
248
+ deepy skills show <name>
249
+ deepy sessions list
250
+ deepy sessions show <session-id>
251
+ deepy run "summarize this project"
252
+ ```
253
+
254
+ Inside the interactive terminal:
255
+
256
+ ```text
257
+ /help Show interactive help
258
+ /model Select provider, model, and thinking mode
259
+ /status Show usage, context pressure, and DeepSeek balance
260
+ /resume Resume a previous project session
261
+ /new Start a fresh session
262
+ /compact Compact the active session context
263
+ /mcp Show MCP server status and tools
264
+ /skills Manage local and market Skills
265
+ /<name> [request] Invoke a Skill directly
266
+ /init Create or update project AGENTS.md
267
+ /theme Show or change terminal UI theme
268
+ /ps Show managed background shell tasks
269
+ /stop Choose background shell tasks to stop
270
+ ```
271
+
272
+ ## Configuration
273
+
274
+ Deepy stores configuration in `~/.deepy/config.toml`. The interactive first-run
275
+ setup creates this file for most users.
276
+
277
+ Minimal resolved shape:
278
+
279
+ ```toml
280
+ [model]
281
+ api_key = "sk-..."
282
+ provider = "deepseek"
283
+ name = "deepseek-v4-pro"
284
+ base_url = "https://api.deepseek.com"
285
+ thinking = true
286
+ reasoning_effort = "max"
287
+
288
+ [context]
289
+ window_tokens = 1048576
290
+ compact_trigger_ratio = 0.8
291
+ reserved_context_tokens = 50000
292
+ compact_preserve_recent_messages = 2
293
+
294
+ [ui]
295
+ theme = "dark" # dark or light
296
+ ```
297
+
298
+ Manual configuration commands:
299
+
300
+ ```bash
301
+ deepy config setup
302
+ deepy config init --api-key sk-... --provider deepseek --model deepseek-v4-pro
303
+ deepy config init --api-key sk-or-... --provider openrouter --model xiaomi/mimo-v2.5-pro
304
+ deepy config init --api-key sk-or-... --provider openrouter --model anthropic/claude-sonnet-4.5 --thinking minimal
305
+ deepy config init --api-key sk-... --provider xiaomi --model mimo-v2.5-pro
306
+ deepy config theme light
307
+ ```
308
+
309
+ Supported provider/model pairs:
310
+
311
+ - `deepseek`: `deepseek-v4-pro`, `deepseek-v4-flash`; thinking modes `none`,
312
+ `high`, `max`.
313
+ - `openrouter`: UI model selection offers `xiaomi/mimo-v2.5-pro`,
314
+ `xiaomi/mimo-v2.5`; setup/init may also use a model id copied from
315
+ OpenRouter. Thinking modes are `enabled`, `disabled`, `xhigh`, `high`,
316
+ `medium`, `low`, `minimal`, `none`.
317
+ - `xiaomi`: `mimo-v2.5-pro`, `mimo-v2.5`; thinking modes `enabled`,
318
+ `disabled`.
319
+
320
+ WebSearch uses Deepy's hosted SearXNG endpoint by default. You can override it:
321
+
322
+ ```toml
323
+ [tools.web_search]
324
+ searxng_url = "https://your-searxng.example/"
325
+ ```
326
+
327
+ ## Development
328
+
329
+ ```bash
330
+ uv sync --group dev
331
+ uv run pytest
332
+ uv run ruff check
333
+ uv run ty check src
334
+ uv build
335
+ ```
336
+
337
+ The Python package is built from `src/deepy`. GitHub Pages files and screenshot
338
+ assets live outside the package directory and are not included in the wheel.