Faits : A. A._, ressortissant de la Sierra Leone né en 1993, a été arrêté le 26 avril 2015 pour avoir agressé au couteau deux agents de sécurité du foyer des Tattes où il réside en tant que requérant d'asile débouté. Il se serait précipité sur le premier agent, d'origine maghrébine, en brandissant un couteau et en tenant une lame, criant qu'il voulait "tuer les arabes". Se protégeant le visage, l'agent avait été légèrement blessé à la main. Il s'en serait ensuite pris à un second agent, sans toutefois le blesser, avant d'être maîtrisé. Le Ministère public genevois l'a prévenu, le 27 avril 2015, de tentative de meurtre, menaces et séjour illégal. Le prévenu a expliqué qu'il avait fait l'objet peu avant les faits d'une agression par cinq personnes d'origine maghrébine, que les agents de sécurité n'avaient rien fait pour l'aider et qu'il était allé chercher un couteau pour récupérer ses affaires perdues lors de l'agression. Le 28 avril 2015, le Tribunal des mesures de contrainte (Tmc) a ordonné sa mise en détention provisoire jusqu'au 28 juillet 2015, en raison des risques de fuite et de collusion. B. Par ordonnance du 6 juillet 2015, le Tmc a rejeté une demande de mise en liberté, ajoutant aux risques de fuite et de collusion un danger de réitération. Une expertise psychiatrique était en cours afin notamment d'évaluer la dangerosité du prévenu. Par ordonnance du 24 juillet 2015, le Tmc a prolongé la détention jusqu'au 24 octobre 2015. Par arrêt du 30 juillet 2015, la Chambre pénale de recours de la Cour de justice du canton de Genève a rejeté les recours formés par le prévenu contre les deux décisions du Tmc. Les charges étaient suffisantes car les déclarations des deux agents de sécurité étaient crédibles quant à l'attaque qu'ils avaient subie en essayant de s'interposer alors que le prévenu avait déclaré vouloir tuer "des arabes". Le recourant était en situation illégale sans famille ni ressources, et avait refusé de coopérer à l'expertise psychiatrique. Le fait qu'il soit partie plaignante dans une procédure parallèle (relative à l'incendie du foyer, et dans laquelle l'un des agents était prévenu) n'enlevait rien au risque de fuite. Les risques de collusion et de réitération n'avaient dès lors pas à être examinés. C. Agissant par la voie du recours en matière pénale, A._ demande au Tribunal fédéral d'annuler l'arrêt cantonal et d'ordonner sa libération immédiate. Subsidiairement, il conclut au renvoi de la cause à l'autorité précédente pour nouvelle décision dans le sens des considérants. Il requiert l'assistance judiciaire. La Cour de justice se réfère à son arrêt, sans formuler d'observations. Le Ministère public conclut au rejet du recours. Le recourant a répliqué le 17 septembre 2015, contestant le risque de collusion évoqué par le Ministère public.