-
Notifications
You must be signed in to change notification settings - Fork 2.6k
feat: add 'onlychat' mode #6637
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your contribution! I've reviewed the changes and found several issues that need attention before this can be merged.
d3d3799 to
979b640
Compare
|
|
||
| const block = cloneDeep(cline.assistantMessageContent[cline.currentStreamingContentIndex]) // need to create copy bc while stream is updating the array, it could be updating the reference block properties too | ||
|
|
||
| // If block is partial, remove partial closing tag so its not |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these changes related to the fact that this chat mode doesn't have access to any tools?
Should we setup the infrastructure to allow modes to enable/disable tools, maybe initially in the custom modes settings file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
removeClosingTag is required by attemptCompletionTool, so I had to relocate it.
If every AI response isn't treated as a task completion, the next message won't be sent, the model won't switch, and a host of other issues will arise. Because the event loop requires the AI to call tools, and all tools have already been removed, we need to simulate the tool call behavior.
|
Allowing mode enable/disable tools, that’s even better. My implementation only supports a fixed slug mode, which isn’t ideal for users who want to customize role definitions and instructions for different scenarios. But this involves more complex issues. onlychat is designed purely for chat. Rather than disabling tools, it’s more about disabling the system prompt. It also removes itself from the switch mode and treats every AI response as a signal that the task is complete. The function can be kept within the scope of the current PR if "allow modes to enable/disable tools" means allowing each mode to control whether the system prompt is generated—making it a more versatile enhancement. If "enable/disable tools" only refers to controlling tools, the other parts remain intact—but users don’t actually need that. They just want to leverage RooCode’s integration with VSCode to easily reference file contents. Furthermore, "enable/disable tools" raises another question: should all tools share a single toggle, or should each tool have its own independent switch? (#5964) |
|
Alright, I will take a look at this PR again with that in mind, also I don't think we should call this mode OnlyChat lol |
|
@daniel-lxs There was a problem with my answer about removeClosingTag just now. I replied again. removeClosingTag is required by attemptCompletionTool, so I had to relocate it. If every AI response isn't treated as a task completion, the next message won't be sent, the model won't switch, and a host of other issues will arise. Because the event loop requires the AI to call tools, and all tools have already been removed, we need to simulate the tool call behavior. |
|
Actual this hits at the core of Always available tools. Custom modes shall have more control over available tools. The always available tools can be reduced even further to reduce the system messages. This granular tool enable / disable along with enable/disable modes (in my draft PR) will provide all possible flexibility that can be needed to anyone. #7110 |
|
There's more to it than just this. Supporting chat-only mode in any mode involves many aspects.
This PR only implements 3 and 4 in a specific mode. |
|
Overall the idea is good, but the implementation is confusing. It makes this mode behave very differently from the others, and I don’t see how a user would even notice it. Since this is more of a supplementary feature and doesn’t directly help with coding, I’m closing this PR. I don’t have a better approach to suggest. |
Related GitHub Issue
Closes: #6082
Roo Code Task Context (Optional)
Description
This tool provides a pure chat mode that a toolless variant of the ASK mode.
It has two advantages:
Test Procedure
Just switch to onlychat
Pre-Submission Checklist
Screenshots / Videos
Documentation Updates
Additional Notes
Get in Touch
Important
Introduces
onlychatmode as a chat-only mode without tool execution, updating system prompts and task handling to accommodate this mode.onlychatmode tomode.tsas a chat-only mode without tool execution capabilities.Task.ts, modifies task loop to break ifonlychatmode is active, preventing tool actions.system.tsto handleonlychatmode by excluding tool sections in prompts.system-prompt.spec.ts, adds test to verifyonlychatmode returns only roleDefinition and customInstructions.onlychatmode from mode listings inmodes.tsandsections/modes.ts.This description was created by
for d3d3799ce75adb3b7d7ecd315e0bf1a73dad763d. You can customize this summary. It will automatically update as commits are pushed.