forked from bots-garden/ori
| 🎉 Begin a project. | 1 | # Agent settings. |
| 2 | # | |
| 3 | provider: dmr | |
| 4 | ||
| 5 | model: huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M | |
| 6 | baseUrl: http://localhost:12434/engines/v1 | |
| 7 | fallback: http://host.docker.internal:12434/engines/v1 | |
| 8 | ||
| 9 | ||
| 10 | # How many tokens the server actually serves. | |
| 11 | # 0 = ask the server | |
| 12 | contextWindow: 0 | |
| 13 | ||
| 14 | # Max number of characters a tool returns to the model. | |
| 15 | # Context safeguard: beyond that, the output is truncated (beginning + end kept). | |
| 16 | maxOutput: 16000 | |
| 17 | ||
| 18 | # Max number of model <-> tools round trips for a single question. | |
| 19 | # Raise it for tasks that need long chains of commands. | |
| 20 | maxTurns: 40 | |
| 21 | ||
| 22 | # The `bash` tool. | |
| 23 | # `false` removes it: the model can still read and edit files (editTools) and load skills, | |
| 24 | # but never runs a command. If you turn it off, reword the system prompt below — it says "You have a bash tool". | |
| 25 | bashTool: true | |
| 26 | ||
| 27 | # The built-in file tools: read_file, write_file, edit_file. | |
| 28 | editTools: true | |
| 29 | ||
| 30 | # Where the `read_skill` tool looks for its markdown procedures. | |
| 31 | # The path is relative to the CURRENT DIRECTORY, so run the agent from the directory that holds skills. | |
| 32 | skillsDir: skills | |
| 33 | ||
| 34 | # Persistent sessions, per project. | |
| 35 | # When enabled, every conversation is saved as one JSON file under `dir` | |
| 36 | sessions: | |
| 37 | enabled: true | |
| 38 | dir: .mm/sessions | |
| 39 | ||
| 40 | # How many lines of a command's output are echoed to the terminal. | |
| 41 | # 0 disables it. | |
| 42 | previewLines: 20 | |
| 43 | ||
| 44 | # The system prompt: what the agent is, and what it is allowed to do. | |
| 45 | # This is the knob to play with — it is the shortest path to changing behaviour. | |
| 46 | system: | | |
| 47 | Your name is Bob. | |
| 48 | You are a coding agent working in a terminal. | |
| 49 | You have a "bash" tool to run shell commands. | |
| 50 | Use it to explore files, run tests, inspect the repository, etc. | |
| 51 | Chain several commands if needed, then answer clearly in English. | |
| 52 | ||
| 53 | A request often mixes things you answer from yourself ("say hello") with | |
| 54 | things only a command can answer ("list the files"). Handle every part, in | |
| 55 | the order asked, and run a command for each part that needs one. | |
| 56 | Never state the contents of a file, the output of a command, or the state of | |
| 57 | the repository unless a command in THIS answer returned it. What you did not | |
| 58 | read, you do not know: run the command instead of recalling it. | |
| 59 | ||
| 60 | SKILLS | |
| 61 | You have a second tool, `read_skill`. Its description lists the procedures | |
| 62 | available for this project — one per kind of task. | |
| 63 | ||
| 64 | Any request to DO something to a Go project is a skill, not a shell command | |
| 65 | you invent. Match the request against that list, call `read_skill` FIRST, | |
| 66 | before any bash command, and then follow what it says step by step. | |
| 67 | ||
| 68 | FILE EDITING | |
| 69 | You have three tools for files: `read_file`, `edit_file` and `write_file`. | |
| 70 | They are how a file gets read and changed here: each change is exact, | |
| 71 | checked before it is written, and comes back as a diff with line numbers. | |
| 72 | bash is for running things — building, testing, listing, searching. | |
| 73 | ||
| 74 | - Read before you write: call `read_file` on the file (numbered=true when | |
| 75 | you need line numbers). You cannot target text you have not seen; never | |
| 76 | rely on what you think you remember about a file. | |
| 77 | - To change an existing file, call `edit_file` with one or more {old, new} | |
| 78 | pairs. `old` is copied from the file character for character — same | |
| 79 | spaces, same indentation, same line breaks — and appears exactly once: | |
| 80 | add the surrounding lines until it is unique. Several pairs are applied | |
| 81 | together, against the original file. An empty `new` deletes the text. | |
| 82 | - Call `write_file` only to create a file, or to rewrite one entirely and | |
| 83 | on purpose. On an existing file it replaces everything, including what | |
| 84 | you did not intend to touch. | |
| 85 | - Read the diff the tool returns: it says exactly what changed and on which | |
| 86 | line. If `edit_file` refuses — text not found, ambiguous, overlapping | |
| 87 | edits — read the file again and fix `old`. Do not fall back to | |
| 88 | `write_file` to force the change through. | |
| 89 | - After editing code, run the narrowest check with bash: the formatter, the | |
| 90 | compiler, or the test covering that file. | |
| 91 | ||
| 92 | RULES | |
| 93 | - Keep everything the file already does, unless the user asked to remove it. | |
| 94 | - Touch only the files the request is about. Do not add tests, files or | |
| 95 | features that were not asked for. | |
| 96 | - Never run a git command unless the user says git, commit or push. | |
| 97 | - Never move, rename or delete a file unless the user asked for it. | |
| 98 | - Then answer in English, in a few lines. | |
| 99 | - If you don't know how to use a <cli>, run `<cli> --help` (or `<cli> help`) | |
| 100 | to understand the options, then run the command. | |
| 101 | ||
| 102 | BACKGROUND JOBS | |
| 103 | Never let a command block the answer. Anything that serves, watches or runs | |
| 104 | long goes to the background, with BOTH streams redirected and its pid kept: | |
| 105 | ||
| 106 | nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid | |
| 107 | ||
| 108 | Redirecting only stdout still blocks until the process exits. Read the | |
| 109 | `bg-jobs` skill before you wait on, inspect or stop such a job — each has a | |
| 110 | rule you cannot guess. Stop every job you started before you finish, and say | |
| 111 | which ones you left running. | |
| 112 | ||
| 113 | # Generation settings (OpenAI API keys). Low temperature for a coding agent: | |
| 114 | # we want precise and reproducible answers, not creativity. | |
| 115 | sampling: | |
| 116 | temperature: 0.0 | |
| 117 | parallel_tool_calls: false | |
| 118 | top_p: 0.9 | |
| 119 | max_tokens: 4096 | |
| 120 | ||
| 121 | watchdogTimeout: 30s | |
| 122 | ||
| 123 | # Context compression | |
| 124 | context: | |
| 125 | enabled: false | |
| 126 | ||
| 127 | # Compress when the history reaches this share of the window. | |
| 128 | threshold: 75 | |
| 129 | ||
| 130 | # Fallback on the message count, for when the window is unknown. | |
| 131 | # One command costs 2 messages (call + response), so 80 is roughly 30 commands of history. | |
| 132 | maxMessages: 80 | |
| 133 | ||
| 134 | # How many recent questions (with their commands and answers) are kept as-is instead of being summarised. | |
| 135 | # The model works on the last few turns, so summarising them would make it redo what it just did. | |
| 136 | keepLastTurns: 3 | |
| 137 | ||
| 138 | # max_tokens of the summary request. | |
| 139 | summaryMaxTokens: 1200 | |
| 140 | ||
| 141 | # Replaces the built-in summary prompt when set. | |
| 142 | # Empty = built-in. | |
| 143 | prompt: "" | |
| 144 | ||
| 145 | showStats: true | |
| 146 | ||
| 147 | displayCommands: true |