Faits : A. En vue de la conclusion d'un contrat d'assurance vie avec Z._ SA (ci-après: Z._ ou l'assureur), X._, apprentie opticienne alors âgée de 21 ans, a signé une proposition d'assurance et une déclaration de santé en date du 5 juillet 2002. Elle a répondu «non» aux questions suivantes: " B. DÉCLARATION DE SANTÉ SIMPLIFIÉE (...) 2. Souffrez-vous actuellement ou avez-vous souffert au cours des 5 dernières années de troubles de la santé ou des suites d'une maladie, d'une infirmité, d'une affection congénitale ou d'un accident? 3. Êtes-vous actuellement ou avez-vous été au cours des 5 dernières années en traitement ou sous contrôle médical? " Elle a répondu «oui» à la question suivante: "C. DÉCLARATION DE SANTÉ SUPPLÉMENTAIRE (...) 6. Au cours des 10 dernières années, avez-vous été examiné ou traité par un médecin, psychiatre, chiropraticien ou psychothérapeute? a) pour des maladies?" La proposante a indiqué qu'il s'agissait d'une opération de la scoliose effectuée en 1994 par le Dr A._ à l'Hôpital orthopédique de..., où elle avait séjourné trois semaines, et précisait: «guérie sans suite». Par ailleurs, elle a répondu «non» à la question 6i de la proposition d'assurance, à la teneur suivante: "Avez-vous déjà reçu des prestations en cas d'incapacité de gain, de travail ou d'invalidité?" Les deux documents ont été remplis par et avec l'aide d'un agent de Z._. Le 18 juillet 2002, X._ a souscrit auprès de Z._ une police d'assurance sur la vie donnant droit à un capital de 14'563 fr. en cas de vie le 31 juillet 2020 ou en cas de décès entre le 1er août 2002 et le 31 juillet 2020, ainsi qu'à une rente annuelle de 12'000 fr. jusqu'au 31 juillet 2044, après un délai d'attente de vingt-quatre mois, en cas d'incapacité de gain du 1er août 2002 au 31 juillet 2042. En cas d'incapacité de travail, l'assurée était libérée du paiement des primes pour tout le contrat, après un délai d'attente de trois mois. Les primes d'assurance trimestrielles s'élevaient à 309 fr. du 1er août 2002 au 1er mai 2020 et à 112 fr. du 1er août 2020 au 1er mai 2042. Le 30 janvier 2007, X._ a subi une intervention chirurgicale, qu'elle a annoncée à l'assureur le 16 avril 2007. Selon le protocole opératoire du 31 janvier 2017 (recte: 2007), la patiente, suivie pour des lombalgies et dorsalgies depuis 1987, avait été opérée en 1994, puis avait subi une nouvelle intervention en 1995 pour ablation de matériel d'ostéosynthèse. Entre mai 2007 et octobre 2010, l'assureur a obtenu des médecins traitants de l'assurée diverses informations au sujet de l'état de santé passé et actuel de leur patiente. Dans un certificat médical du 24 mai 2007, le Dr B._ - spécialiste FMH en neurochirurgie qui suivait l'assurée depuis juin 2005 et avait procédé à l'intervention du 30 janvier 2007 - faisait notamment état d'une «péjoration des lombalgies depuis environ 1999». Dans un rapport du 4 septembre 2007, le Dr C._, remplaçant du Dr A._ à la retraite, déclarait qu'il avait vu X._ pour la première fois le 12 juin 2007 et que son prédécesseur avait eu avec cette patiente une trentaine, voire une cinquantaine de consultations, à des dates que le remplaçant refusait «absolument» de fournir; il relevait que les «traitements entrepris étaient en 94 une arthrodèse vertébrale postérieure» et que «dans les suites elle a[vait] fait une complication locale sous forme d'une déhiscence cicatricielle avec un hématome nécessitant une reprise plus tard en mai 2005 (recte: 1995) ». Interpellé par l'assureur, le Dr B._ a établi le 18 octobre 2007 un nouveau certificat au sujet de l'état de santé de X._; il y confirmait «une augmentation nette de l'intensité des troubles à partir de 1999» ayant nécessité une première infiltration avec blocs facettaires en juillet 2005 et une seconde en octobre 2006, ainsi qu'une «persistance des troubles invalidants» ayant conduit à une incapacité de travail à 100% depuis le 24 janvier 2007, dont la cypho-scoliose était la cause principale; il observait que l'évolution était «stable et peu favorable» et qu'il était «très possible que la patiente présente une incapacité de travail, du moins partielle, durable»; une réévaluation était prévue le 2 novembre 2007 et une annonce AI avait été faite le 26 juillet 2007. Par décision du 26 octobre 2007, l'assureur a libéré X._ du paiement des primes dès le 22 avril 2007, soit après un délai d'attente de trois mois, et lui a accordé une rente annuelle de 12'000 fr. dès le 22 janvier 2009, soit après un délai d'attente de vingt-quatre mois. Par courrier du 14 novembre 2007, Z._ a derechef interpellé le Dr B._ afin d'obtenir les résultats de la réévaluation du 2 novembre 2007 et, le cas échéant, copie de la décision de l'office AI. Après avoir été relancé à six reprises, le médecin a finalement répondu en date du 19 février 2009; il ressortait de ce courrier que X._ avait repris une activité d'opticienne à 50% et qu'il était peu probable qu'elle puisse augmenter sa capacité de travail; en outre, le médecin ne pensait pas qu'une décision AI avait déjà été rendue. A partir du 20 avril 2009, l'assureur a demandé à l'office AI à plusieurs reprises de lui transmettre pour étude le dossier AI de l'assurée. Dans un courrier du 25 mai 2010, l'office AI a indiqué que X._ s'était vu refuser une rente par décision du 19 novembre 2009, qui faisait l'objet d'un recours à la Cour des assurances sociales du Tribunal cantonal. Z._ s'est adressée à cette instance le 15 octobre 2010 et le dossier AI lui a été transmis pour consultation le 21 octobre 2010. A la lecture du rapport du Dr D._ du 3 septembre 2007 figurant au dossier AI, l'assureur a appris: - qu'en 1997, X._ avait «commencé à éprouver un sentiment de faiblesse au membre inférieur gauche» et que «des lombalgies résiduelles [avaient] été traitées par des séances de physiothérapie»; - qu'«au cours de l'année 2000, une première infiltration antalgique [avait] été pratiquée, ce qui a[vait] apporté un soulagement durant environ un an»; - [qu']«après ce délai, les douleurs [étaient] réapparues progressivement, ce qui a[vait] amené à une 2ème infiltration qui malheureusement [était] restée sans effet»; - qu'«au vu de l'échec du traitement conservatoire», une intervention chirurgicale avait été effectuée en janvier 2007 par le Dr B._. Par le dossier AI, l'assureur a également appris qu'à la suite d'une demande de rente formulée en 1999, X._ avait perçu de l'AI, de 2000 à 2004, des indemnités journalières pour «entrée retardée dans la vie active». Le 18 novembre 2010, Z._ a invoqué une réticence, considérant que X._ n'avait pas répondu avec exactitude aux questions B2, B3 et C6a de la déclaration de santé, ni à la question 6i de la proposition d'assurance. L'assureur a déclaré résoudre le contrat d'assurance, tout en renonçant à réclamer à l'assurée la restitution des prestations versées et le paiement des primes libérées, au motif que ces montants étaient partiellement compensés avec la valeur de rachat de la police, d'une part, et à titre de geste commercial, d'autre part. B. Par demande du 24 août 2011, X._ a conclu à ce qu'il soit dit que Z._ n'est pas autorisée à se départir du contrat d'assurance vie pour cause de réticence (I) et qu'elle est toujours liée par le contrat d'assurance vie (II) et à ce que Z._ soit condamnée à lui fournir les prestations prévues par le contrat à partir du 22 janvier 2007 (III). Par jugement du 16 juin 2015, la Chambre patrimoniale cantonale du canton de Vaud a déclaré la demande irrecevable. Elle a considéré tout d'abord que l'action introduite par X._ constituait principalement une demande en paiement, soit une action condamnatoire, de sorte que les conclusions I et II, constatatoires, étaient irrecevables; par ailleurs, la conclusion III, tendant au versement d'une somme d'argent, était elle-même irrecevable faute d'avoir été chiffrée par la demanderesse. X._ a interjeté appel, concluant principalement à la réforme du jugement de première instance en ce sens qu'il soit dit que Z._ n'est pas autorisée à se départir du contrat d'assurance pour cause de réticence et est toujours liée par ce contrat. Par arrêt du 1er mars 2016, la Cour d'appel civile du Tribunal cantonal du canton de Vaud a admis l'appel, annulé le jugement attaqué et renvoyé la cause aux premiers juges pour examen au fond des conclusions I et II de la demande. Elle a laissé aux juges précédents le soin de procéder à la répartition des frais de première instance conformément au résultat du litige au fond. Par ailleurs, donnant suite à une requête d'assistance judiciaire de l'appelante, elle a désigné l'avocat Tony Donnet-Monay en qualité de conseil d'office de la demanderesse pour la procédure d'appel, en astreignant la bénéficiaire à payer une franchise mensuelle de 50 fr. à compter du 1er avril 2016. Les frais judiciaires de deuxième instance, arrêtés à 3'300 fr., ont été répartis à parts égales entre l'appelante et l'intimée, les 1'650 fr. à payer par celle-là étant provisoirement laissés à la charge de l'État (ch. IV du dispositif). Quant aux dépens de deuxième instance, ils ont été compensés (ch. VII du dispositif). X._ a formé un recours en matière civile au Tribunal fédéral en vue d'obtenir la réforme des ch. IV et VII du dispositif de l'arrêt cantonal en ce sens que les frais et dépens de la deuxième instance étaient mis exclusivement à la charge de son adverse partie. Par arrêt du 17 mai 2016, la Présidente de la Ire Cour de droit civil n'est pas entrée en matière sur le recours (cause 4A_298/2016). Par jugement du 27 décembre 2016, dont les considérants écrits ont été adressés aux parties le 8 juin 2017, la Chambre patrimoniale cantonale a rejeté les conclusions constatatoires prises par l'assurée contre Z._. X._ a formé appel contre ce jugement, concluant principalement à sa réforme en ce sens que Z._ n'est pas autorisée à se départir du contrat d'assurance pour cause de réticence, et qu'elle est toujours liée par ce contrat. Par arrêt du 21 mars 2018, la Cour d'appel civile a rejeté l'appel et confirmé le jugement du 27 décembre 2016. C. X._ interjette un recours en matière civile. Principalement, elle demande au Tribunal fédéral de réformer l'arrêt attaqué en ce sens que Z._ n'est pas autorisée à se départir du contrat d'assurance vie pour cause de réticence et est toujours liée par ledit contrat. A titre subsidiaire, elle conclut à la réforme de l'arrêt attaqué en ce sens que Z._ est condamnée au paiement de la moitié des frais de la procédure cantonale, les dépens étant compensés. Par ailleurs, la recourante sollicite d'être mise au bénéfice de l'assistance judiciaire complète.